Referencia de herramientas de MCP
Esta página describe las 16 herramientas de la versión 1.12.1 del MCP remoto con OAuth. La referencia válida es eltools/list del servidor conectado. El stdio local no ofrece prepare_upload ni get_upload; su upload_file acepta además rutas dentro de directorios permitidos explícitamente.
Los ejemplos con name y arguments describen llamadas a herramientas MCP, no cuerpos de solicitudes REST. Un ejemplo no autoriza ninguna generación de pago.
search_models
recommend_models
search_docs
get_model
model es obligatorio: una cadena de 1–128 caracteres, con un ID canónico devuelto o un alias admitido.
estimate_cost
pricing_quote: total_known es false, missing_usage indica cada valor que falta y usage_help explica cómo proporcionarlo. Consulta Facturación. Que la consulta funcione no demuestra que la entrada sea válida ni que la cotización esté completa.
Una estimación que se puede aprobar devuelve además pricing_quote, el registro de aprobación para exactamente esta entrada. Cuando el usuario apruebe, pásalo con la misma entrada a la herramienta de generación. Es válido durante 24 horas desde la estimación (expires_at), al precio aprobado o a uno inferior: la herramienta de generación vuelve a estimar y envía si el precio no ha cambiado o es inferior, también cuando las reglas de precios se hayan actualizado después. Un precio más alto se rechaza con price_changed, una entrada modificada con quote_input_changed y un pricing_quote caducado con quote_expired; en cada caso hacen falta una nueva estimación y una nueva aprobación. Con inputs, el resultado indica la estimación de cada entrada y el total, y un único pricing_quote aprueba exactamente esas entradas en ese orden. Nunca aprueba una sola entrada, y el pricing_quote de una sola entrada nunca aprueba un lote.
Esta herramienta no tiene el argumento max_cost_usd y no genera el quote_id local de la CLI. En MCP, las comprobaciones de presupuesto corresponden a las herramientas de generación. media_seconds no define la duración de la salida ni rellena los multiplicadores desconocidos de un video de referencia.
get_pricing_rules
estimate_cost para conocer el costo previsto de una generación concreta; evalúa las mismas reglas con la entrada real. Un resultado vacío significa que no hay reglas públicas que coincidan, no que el modelo sea gratis. En una lista, un modelo cuyas reglas no se pueden leer o están incompletas se omite, aparece en rejected_models y se indica en warnings; los demás modelos se devuelven con normalidad, y un modelo omitido no es gratis. La consulta de un solo modelo sigue fallando cuando sus reglas no se pueden leer.
generate_image, generate_video, generate_audio
Elige la herramienta que corresponda al tipo de salida. Comparten estos argumentos de nivel superior:
Revisa el modelo y las entradas, estima la solicitud completa, informa de las limitaciones y obtén la aprobación explícita del costo antes de llamar, salvo que el usuario haya renunciado a las estimaciones (véase más abajo). Este es un ejemplo ilustrativo del formato de la llamada:
wait_seconds cambia esta espera en cada una de las tres herramientas. El envío puede informar de un cargo previo, que debe distinguirse del costo de la tarea completada.
Consulta una tarea en ejecución en lugar de volver a llamar a la generación para ver el progreso. Si se pierde la respuesta, conserva el identificador original, la cuenta, las entradas y el identificador de solicitud. Un identificador distinto crea una nueva solicitud facturable. Las protecciones de recuperación del cliente no demuestran que todos los nodos de producción ofrezcan las mismas garantías de idempotencia en el backend.
Generar sin estimación. Cuando el usuario dice explícitamente que no hace falta estimar ni confirmar (por ejemplo, “genera directamente” o “a partir de ahora, genera sin más”), el asistente omite estimate_cost y la confirmación y pasa skip_estimate: true, dentro del alcance que haya indicado el usuario: esta tarea, este lote o el resto de la conversación. Nunca lo deduce del silencio, del saldo ni de su propia sugerencia. Cuando el usuario renuncia a las estimaciones para el resto de la conversación, el asistente avisa una sola vez de que las generaciones posteriores se enviarán sin preguntar; una conversación nueva, o pedir que se restablezcan las estimaciones, las recupera. La generación se envía incluso cuando su precio no se puede calcular o cuando un pricing_quote se rechaza por haber caducado, por un precio más alto o por un cambio en la entrada, y el resultado lo indica (estimate_skipped, estimate_skip_reason); la tarea se cobra según el uso real. Una entrada no válida se sigue rechazando, un max_cost_usd explícito se sigue aplicando (una solicitud que supere ese tope, o cuyo precio no se pueda comparar con él, no se envía) y activar la búsqueda web o la búsqueda de imágenes del modelo sigue necesitando la aprobación del usuario. Si una estimación falla o no tiene total y el usuario no ha renunciado a las estimaciones, el asistente pregunta una sola vez si debe generar de todos modos al costo del uso real.
Lotes. Para varias tareas de un mismo modelo, pasa inputs (1–50 elementos, cada uno como input) a estimate_cost y después, con su pricing_quote, a la herramienta de generación: una estimación, una aprobación del total y una sola llamada que envía todos los elementos (hasta 10 simultáneos) y devuelve, sin esperar, el task_id o el error de cada elemento. Si algún elemento no es válido, no se envía nada. max_cost_usd se aplica al total del lote; media_seconds y pricing_parameters se aplican a cada elemento. Recoge los resultados con list_tasks (task_ids, hasta 50 por llamada). Envía las tareas de modelos distintos una por llamada, con wait_seconds: 0. No dependas de n para la cantidad de imágenes: algunos modelos, como GPT Image, suelen devolver menos imágenes que n, así que usa un elemento por imagen.
Ningún elemento empieza más de 25 segundos después del inicio de la llamada, y un envío ya empezado nunca se interrumpe; los elementos que no han empezado aparecen como no enviados. Para completar un lote, vuelve a llamar con el mismo client_request_id y exactamente los mismos inputs dentro de las 24 horas posteriores al primer envío: se envían los elementos que el resultado indica que faltan por completar, y los elementos aceptados devuelven sus tareas originales sin un nuevo cargo. Si para entonces el pricing_quote ha caducado, vuelve a estimar las mismas entradas y pasa el nuevo. Para un elemento de resultado desconocido, vuelve a llamar más tarde de ese mismo modo o comprueba list_tasks. Dentro de esas 24 horas, nunca vuelvas a enviar con un client_request_id nuevo los elementos aceptados, los no enviados ni los de resultado desconocido: eso crea tareas nuevas y las cobra. Pasado ese plazo, el mismo client_request_id ya no impide un segundo cargo: comprueba primero list_tasks y después envía solo los elementos cuyo envío no se completó, como un lote nuevo con una estimación y un client_request_id nuevos. Un elemento cuya entrada difiere de la que ese client_request_id envió antes se rechaza (idempotency_conflict); es una tarea nueva que necesita su propia estimación, su propia aprobación y su propio client_request_id.
get_task
error.code), la explicación que también devuelve la API (error.message) y un billing_note: la tarea no se cobra y los créditos reservados al enviarla se devuelven automáticamente. Los resultados originales suelen conservarse 24 horas. Que se muestre la vista previa depende del cliente host.
list_tasks
get_task_usage
check_balance
Sin argumentos:upload_file
prepare_upload
file_name es obligatorio: una cadena con una extensión que se usa para determinar el tipo de contenido multimedia. upload_path es opcional: un directorio relativo.
get_upload
upload_id es obligatorio y procede del resultado original de prepare:
Resultados y errores
Las herramientas devuelven texto legible y structuredContent; los fallos pueden incluir isError/error/next_step. El contenido multimedia completado puede incluir resource_link y, opcionalmente, una miniatura de imagen. Los hosts difieren en su compatibilidad con los bloques de contenido. La URL original sigue siendo la referencia para la entrega; las vistas previas no están garantizadas en todos los hosts. Comprueba los errores de las herramientas y los campos de negocio, como input_valid, el estado de la estimación y task.status. Un HTTP 200 por sí solo no demuestra que la generación haya funcionado. El tiempo de espera de un envío puede agotarse después de que la tarea se haya creado, y no es prueba de que no haya habido cargo. Que una consulta falle no prueba que la tarea original haya fallado.Progreso y resultados de las tareas
Usa las consultas de saldo y de modelos para verificar gratis la conexión. Usa get_task/list_tasks para las tareas existentes y después entrega las URLs originales y los costos reales informados. La guía de flujos de trabajo trata las referencias, la recuperación, el guardado y las vistas previas grises. Un problema de visualización no debe dar lugar a otra generación de pago.Protocolo MCP y APIs del backend
El endpoint remoto es
https://mcp.evolink.ai/mcp. Passport proporciona OAuth; el servidor llama a https://api.evolink.ai y al servicio de archivos. Las URLs de MCP, las rutas /v1 de la plataforma, la documentación y llms.txt son puntos de entrada distintos.
Inicializa y llama a las herramientas
Deja que el host o el SDK de MCP gestionen initialize, las versiones del protocolo, Accept, la autenticación, las sesiones y los bloques de contenido. Lee tools/list después de la inicialización y luego llama a tools/call:Herramientas y operaciones del backend
Los parámetros del modelo van en arguments.input, y el servidor los convierte en solicitudes REST. media_seconds es una indicación para la facturación; max_cost_usd solo comprueba las estimaciones antes del envío. La versión publicada 1.12.1 estima a partir de las reglas de precios públicas (tarifas de referencia, sin descuentos de cuenta) y sigue sin tener un tope de la liquidación final.