Nuevo Regístrate gratis, 10 llamadas de regalo. Hasta 1 $, sin tarjeta.

Servidor MCP

Conecta cualquier agente compatible con MCP (Claude Code, Cursor, VS Code, Codex, el OpenAI Agents SDK y más) a Synthorai con una URL y tu clave API. Todos los modelos y modalidades, la gestión de claves API y los datos de facturación se convierten en herramientas que el agente puede llamar. Cada llamada se autentica, se limita y se factura exactamente igual que la solicitud REST equivalente.

Endpointhttps://synthorai.io/v1/mcp
TransporteStreamable HTTP, sin estado (sin sesiones), respuestas JSON
AutenticaciónAuthorization: Bearer <API key>
ℹ

La clave con la que te conectas determina qué herramientas obtienes: una clave de inferencia (sk-syn-…) llama a modelos, una clave de provisioning (sk-syn-prov-…) gestiona claves API y una clave de facturación (sk-syn-bill-…) lee el saldo y el uso. Si un agente necesita más de un tipo, conecta el servidor una vez por cada tipo de clave.

Inicio rápido

  1. Crea una clave API en la consola, en la página Claves API. Para un agente, asígnale un límite de gasto y una lista de modelos permitidos.
  2. Añade el servidor a tu cliente con uno de los fragmentos de abajo, leyendo la clave desde una variable de entorno en lugar de pegarla en un archivo.
  3. Pídele a tu agente, por ejemplo: “Lista los tres modelos más baratos que admiten herramientas, luego pide al más rápido que resuma este archivo y dime cuánto ha costado.”

Conecta tu cliente

Todos los clientes usan el mismo endpoint y la misma cabecera. Primero define SYNTHORAI_API_KEY en tu entorno.

Claude Code

Ejecuta /mcp dentro de Claude Code para comprobar la conexión. Añade --scope user para que el servidor esté disponible en todos los proyectos, o haz commit del formato .mcp.json para compartirlo con tu equipo (la clave se queda en el entorno de cada desarrollador).

claude mcp add --transport http synthorai https://synthorai.io/v1/mcp \
  --header "Authorization: Bearer $SYNTHORAI_API_KEY"
{
  "mcpServers": {
    "synthorai": {
      "type": "http",
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${SYNTHORAI_API_KEY}" }
    }
  }
}

Cursor

Ponlo en ~/.cursor/mcp.json (todos los proyectos) o en .cursor/mcp.json (un solo proyecto).

{
  "mcpServers": {
    "synthorai": {
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${env:SYNTHORAI_API_KEY}" }
    }
  }
}

VS Code (GitHub Copilot)

Ponlo en .vscode/mcp.json. VS Code pide la clave una sola vez y la guarda de forma segura.

{
  "inputs": [
    { "type": "promptString", "id": "synthorai-key", "description": "Synthorai API key", "password": true }
  ],
  "servers": {
    "synthorai": {
      "type": "http",
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${input:synthorai-key}" }
    }
  }
}

Codex CLI

Ponlo en ~/.codex/config.toml, o ejecuta codex mcp add synthorai --url https://synthorai.io/v1/mcp --bearer-token-env-var SYNTHORAI_API_KEY.

[mcp_servers.synthorai]
url = "https://synthorai.io/v1/mcp"
bearer_token_env_var = "SYNTHORAI_API_KEY"

OpenAI Responses API

Los servidores de OpenAI llaman al endpoint en tu nombre, así que deja vacía la lista blanca de IP de la clave (o permite los rangos de salida de OpenAI). Usa allowed_tools para exponer solo las herramientas que necesita el modelo.

import os
from openai import OpenAI

client = OpenAI()
resp = client.responses.create(
    model="gpt-4.1",
    tools=[{
        "type": "mcp",
        "server_label": "synthorai",
        "server_url": "https://synthorai.io/v1/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"},
        "allowed_tools": ["list_models", "chat_completion"],
        "require_approval": "never",
    }],
    input="Find the cheapest Synthorai chat model with tool support and ask it for a haiku about gateways.",
)
print(resp.output_text)

OpenAI Agents SDK

Funciona igual con cualquier framework basado en los SDK de cliente MCP (LangChain, LlamaIndex, Pydantic AI, Vercel AI SDK, Mastra …): apunta su transporte Streamable HTTP al endpoint con la cabecera.

import asyncio, os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(
        name="synthorai",
        params={
            "url": "https://synthorai.io/v1/mcp",
            "headers": {"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"},
            "timeout": 120,
        },
        cache_tools_list=True,
    ) as synthorai:
        agent = Agent(name="assistant", instructions="Use the Synthorai tools.", mcp_servers=[synthorai])
        result = await Runner.run(agent, "List three chat models under $1 per million input tokens.")
        print(result.final_output)

asyncio.run(main())

MCP Python SDK

import asyncio, os, httpx2
from mcp import Client
from mcp.client.streamable_http import streamable_http_client

async def main():
    http = httpx2.AsyncClient(
        headers={"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"}, timeout=120)
    async with Client(streamable_http_client("https://synthorai.io/v1/mcp", http_client=http)) as mcp:
        tools = await mcp.list_tools()
        print([t.name for t in tools.tools])
        result = await mcp.call_tool("chat_completion",
                                     {"model": "deepseek-v4-flash", "prompt": "Say hi in five words"})
        print(result.content[0].text)

asyncio.run(main())

Claude Desktop

Los conectores personalizados de Claude Desktop y claude.ai inician sesión con OAuth, que este servidor aún no ofrece (consulta la hoja de ruta más abajo). Mientras tanto, Claude Desktop puede conectarse a través del puente mcp-remote, que añade la cabecera por ti:

{
  "mcpServers": {
    "synthorai": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://synthorai.io/v1/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer sk-syn-..." }
    }
  }
}

curl

El servidor es JSON-RPC simple sobre HTTP, así que no necesitas ningún SDK. No hace falta handshake: cada solicitud es independiente.

curl https://synthorai.io/v1/mcp \
  -H "Authorization: Bearer $SYNTHORAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"chat_completion",
                 "arguments":{"model":"deepseek-v4-flash","prompt":"Say hi in five words"}}}'

Respuesta de ejemplo

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      { "type": "text", "text": "Hi there, great to meet!" },
      { "type": "text", "text": "[deepseek-v4-flash · finish_reason stop · 12 in / 7 out tokens · cost $0.0000031 · request_id 0199a7c2-…]" }
    ],
    "structuredContent": {
      "model": "deepseek-v4-flash",
      "content": "Hi there, great to meet!",
      "finish_reason": "stop",
      "usage": { "prompt_tokens": 12, "completion_tokens": 7, "total_tokens": 19 },
      "cost_usd": 0.0000031,
      "request_id": "0199a7c2-…"
    }
  }
}

Herramientas

tools/list devuelve solo las herramientas que tu clave puede usar: se filtran por tipo de clave y por las funciones habilitadas para tu workspace (la generación de imágenes y de vídeo está en vista previa limitada). Las herramientas que ejecutan un modelo cuestan exactamente lo mismo que la llamada REST; todas las demás son gratuitas.

Clave de inferencia

HerramientaQué haceEndpoint RESTNotas
list_models Modelos que la clave puede llamar, del más barato al más caro, con longitud de contexto, modalidades, capacidades y precios de catálogo. Filtros: categoría, capacidad, modalidad de entrada, búsqueda. GET /v1/models + /api/models solo lectura
get_model Todos los detalles de un modelo, incluido el precio efectivo tras cualquier descuento y si la clave puede llamarlo. GET /v1/models/{id} solo lectura
get_pricing La lista de precios (USD tras descuentos): precios por token, por llamada, por minuto, por segundo y escalonados. GET /api/pricing solo lectura
chat_completion Una chat completion en cualquier modelo: un prompt o un array messages completo (imágenes, resultados de herramientas), con salida estructurada, herramientas de función, esfuerzo de razonamiento y modelos de respaldo opcionales. Devuelve texto, llamadas a herramientas, uso, coste y request_id. POST /v1/chat/completions facturable
generate_image Genera o edita imágenes; se devuelven como contenido de imagen, o como enlaces con response_format=url. POST /v1/images/generations facturable
list_image_models Modelos de imagen con precios y entradas admitidas. GET /v1/images/models solo lectura
create_video Inicia un trabajo de vídeo a partir de un prompt o de un primer fotograma; puede esperar hasta 60 s a que termine. Se factura cuando el trabajo se completa. POST /v1/videos facturable
get_video Estado del trabajo; una vez completado, enlaces a los vídeos (válidos unas 24 horas). GET /v1/videos/{id} solo lectura
cancel_video Cancela un trabajo que aún está en cola (un trabajo que ya ha empezado no se puede detener). Los trabajos cancelados y fallidos no se facturan. DELETE /v1/videos/{id} destructiva
list_video_models Modelos de vídeo con resoluciones, duraciones y precios. GET /v1/videos/models solo lectura
text_to_speech Voz a partir de texto, devuelta como contenido de audio. POST /v1/audio/speech facturable
transcribe_audio Texto a partir de un audio indicado como URL o como datos base64 (hasta 25 MB). POST /v1/audio/transcriptions facturable
create_embeddings Vectores de embedding para un texto o un lote de hasta 2048. POST /v1/embeddings facturable
get_key_info El límite de gasto de la clave, el importe usado y el restante, el periodo de reinicio y el gasto de hoy / esta semana / este mes (USD). GET /v1/key solo lectura
get_generation El registro de facturación de una solicitud por request_id: coste, desglose de tokens, latencia y estado. GET /v1/generation solo lectura

Clave de provisioning

HerramientaQué haceEndpoint RESTNotas
create_api_key Crea una clave de inferencia con límite de gasto, periodo de reinicio, listas de modelos e IP permitidos, caducidad y metadatos. El secreto solo aparece en el resultado. POST /api/provisioning/keys modifica datos
list_api_keys Las claves de inferencia del workspace con sus límites, gasto y estado; filtra por metadatos. GET /api/provisioning/keys solo lectura
get_api_key La configuración, el gasto y el estado de una clave. GET /api/provisioning/keys/{id} solo lectura
update_api_key Cambia la configuración de una clave, o desactívala / reactívala. Solo cambian los campos indicados. PATCH /api/provisioning/keys/{id} destructiva
delete_api_key Elimina una clave de forma permanente. DELETE /api/provisioning/keys/{id} destructiva

Clave de facturación

HerramientaQué haceEndpoint RESTNotas
get_balance Saldo disponible en este momento (USD), con el crédito promocional y los créditos programados. GET /api/v1/billing/balance solo lectura
get_usage Gasto y solicitudes por hora o por día, por clave y/o modelo. GET /api/v1/billing/usage solo lectura
list_usage_records Registros por solicitud con tokens, coste y estado, paginados por cursor. GET /api/v1/billing/records solo lectura
get_billing_summary Totales de un rango con las claves y los modelos principales. GET /api/v1/billing/summary solo lectura
get_data_freshness Grado de actualización de los datos de facturación. GET /api/v1/billing/freshness solo lectura

list_models, get_model y get_pricing están disponibles para todos los tipos de clave; con una clave de inferencia, list_models muestra solo los modelos que esa clave puede llamar.

Cómo son los resultados

Cada resultado incluye un bloque de texto legible y los mismos datos en JSON en structuredContent, para que puedan usarlo tanto los clientes de chat como los programas. Las imágenes y el audio se devuelven como contenido de imagen y de audio, y los vídeos como enlaces. Las herramientas que ejecutan un modelo terminan con una línea de recibo (modelo, tokens, coste y request_id) que get_generation puede consultar más tarde.

Permisos y seguridad

  • Las mismas reglas que la API REST. Cada llamada a una herramienta la ejecuta el endpoint REST que indica, con tu clave: autenticación, tipo de clave, lista blanca de IP, lista de modelos permitidos, límite de gasto, límites de tasa y facturación se aplican sin cambios. MCP no añade ningún permiso ni se salta ninguna comprobación.
  • Mínimo privilegio por tipo de clave. Las claves de inferencia no pueden gestionar claves ni leer la facturación del workspace; las claves de provisioning no pueden llamar a modelos; las claves de facturación son de solo lectura.
  • Indicaciones de aprobación. Cada herramienta lleva anotaciones MCP. Las herramientas de solo lectura se marcan con readOnlyHint; las que gastan dinero no son de solo lectura; update_api_key, delete_api_key y cancel_video se marcan con destructiveHint. Los clientes las usan para decidir qué preguntarte antes de ejecutarlas.
  • Clave recomendada para agentes: una clave de inferencia dedicada con un límite de gasto que se reinicia a diario, una lista allowed_models y una lista blanca de IP cuando el agente se ejecuta en hosts conocidos. Revócala por separado sin tocar las claves de producción.
  • Secretos y contenido no fiable. create_api_key devuelve la nueva clave una sola vez: indícale a tu agente dónde guardarla. Trata la salida del modelo y los resultados de las herramientas como entrada no fiable (prompt injection) antes de dejar que un agente actúe a partir de ellos.

Detalles del protocolo

ElementoDetalle
Versiones del protocolo2026-07-28 (sin estado, _meta por solicitud y cabeceras Mcp-Method / Mcp-Name, server/discover) y 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 (handshake initialize). Ambas en la misma URL; cada solicitud se atiende según la versión que usa.
SesionesNinguna. No se emite ningún Mcp-Session-Id, así que cualquier solicitud puede llegar a cualquier réplica del servidor y no hace falta reinicializar nada tras una reconexión.
Métodosinitialize, ping, tools/list, tools/call; con 2026-07-28, server/discover en lugar del handshake. GET y DELETE devuelven 405; no se aceptan lotes JSON-RPC.
ErroresUna herramienta desconocida es un error JSON-RPC (-32602). Todo lo demás (argumentos no válidos, un rechazo de la API, una generación fallida) es un resultado de herramienta con isError: true y un mensaje con el que el modelo puede actuar. Con 2026-07-28, los problemas de envoltorio devuelven HTTP 400 con -32020 (cabecera no coincidente) o -32022 (versión no admitida, con la lista de las admitidas).
Cachétools/list se devuelve en un orden fijo (compatible con la caché de prompts) con un ttlMs de 10 minutos y cacheScope: "private", ya que la lista depende de tu clave.
Límite de tasa600 mensajes MCP por minuto por clave (HTTP 429 con Retry-After). Cada llamada a una herramienta cuenta además para los límites del endpoint REST al que llama.
Llamadas largasUna llamada puede durar hasta 30 minutos (razonamiento largo). La generación de vídeo es asíncrona: create_video devuelve un trabajo y get_video consulta su estado.

Solución de problemas

SíntomaCausa y solución
401, o el cliente indica que se necesita autenticaciónLa clave falta, no es válida, ha caducado o está desactivada. Envíala como Authorization: Bearer <key> y comprueba que la variable de entorno está definida donde se ejecuta el cliente.
No aparece una herramienta que esperabasLas herramientas dependen del tipo de clave (consulta las tablas de arriba) y de las funciones en vista previa: las herramientas de imagen y vídeo solo aparecen en los workspaces admitidos en esas vistas previas.
Un resultado de herramienta indica HTTP 402El saldo del workspace se ha agotado. Recarga en la consola; get_key_info muestra el límite propio de la clave.
Un resultado de herramienta indica HTTP 403 para un modeloEl allowed_models de la clave o el acceso a modelos de tu workspace lo excluye. list_models muestra exactamente lo que la clave puede llamar.
chat_completion no devuelve texto y finish_reason es lengthUn modelo de razonamiento gastó todo el presupuesto de max_tokens pensando. Aumenta max_tokens o reduce reasoning_effort.
HTTP 429Más de 600 mensajes por minuto en una misma clave, o el límite propio del endpoint REST. Espera el tiempo indicado en Retry-After.

Próximamente

  • Inicio de sesión con OAuth, para que los conectores de claude.ai, Claude Desktop y ChatGPT puedan conectarse sin pegar una clave, con credenciales de corta duración y gasto limitado.
  • Gateway MCP: el mismo endpoint agregando también servidores MCP de terceros (GitHub, Slack, los tuyos propios) bajo tu clave, con permisos por herramienta, credenciales guardadas en el servidor y un único registro de auditoría.
  • Progreso en llamadas largas, transmitido mientras se ejecuta una herramienta.

Relacionado: Claves API · Claves de provisioning · API de facturación · Chat Completions