Construye un cliente para el asistente

Servidor MCP

El endpoint MCP de Setherion para crear tu propio cliente: transporte, autenticación, herramientas y errores.

POSThttps://www.setherion.com/api/mcp

Plan: Cualquier plan

Setherion tiene un servidor MCP, la forma estándar en que los asistentes de IA usan otros servicios. Si solo quieres usarlo desde Claude, ChatGPT, Cursor o VS Code, sigue MCP: conecta un asistente de IA. Esta página es para crear tu propio cliente.

El servidor es la API con otra voz. Cada herramienta es una llamada al endpoint del mismo nombre de esta referencia, hecha con la propia credencial de quien llama, así que el servidor nunca puede hacer más de lo que puede hacer la API.

Transporte

  • Streamable HTTP, sin estado. Envía cada mensaje como un único mensaje JSON-RPC 2.0 en el cuerpo de un POST. No hay sesiones ni nada que reanudar.
  • Versiones de protocolo 2025-06-18 y 2025-03-26. initialize responde con la versión que pediste si es una de estas, y con 2025-06-18 si no lo es. Después de initialize, envía la versión en la cabecera MCP-Protocol-Version. Un valor distinto se rechaza con 400.
  • Solo herramientas. El servidor no ofrece recursos ni prompts, y no envía mensajes por su cuenta.
  • Un mensaje por petición. Un lote se rechaza con 400.
  • GET y DELETE responden 405 con Allow: POST.
  • Origin. Una petición desde una página de un navegador debe venir de https://www.setherion.com. Cualquier otro Origin responde 403. Las peticiones de programas no llevan ninguno y se permiten.

Mantén el www en la dirección. La dirección sin él redirige, y una redirección pierde la credencial.

Autenticación

Envía una credencial en la cabecera Authorization. Sirve cualquiera de las dos:

  • Una clave de API: Authorization: Bearer sth_.... Consulta Autenticación.
  • Un token de acceso OAuth, que empieza por sto_, emitido para este endpoint y para ningún otro. Consulta la página de inicio de sesión con OAuth de esta referencia.

Una petición sin ninguna de las dos, o con una credencial incorrecta, caducada o revocada, responde 401 con una indicación de dónde iniciar sesión:

http
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="Setherion", resource_metadata="https://www.setherion.com/.well-known/oauth-protected-resource/api/mcp"
json
{
  "jsonrpc": "2.0",
  "id": null,
  "error": {
    "code": -32001,
    "message": "Sign in to Setherion to use this server, or send an API key from your account page as \"Authorization: Bearer sth_...\"."
  }
}

Un cliente sin credenciales sigue resource_metadata para encontrar el inicio de sesión. Los tokens funcionan solo en este endpoint: los endpoints REST de esta referencia aceptan una clave de API.

Métodos

MétodoRespuesta
initializeLa versión del protocolo, capabilities con { "tools": { "listChanged": false } }, serverInfo (setherion, Setherion, 1.0.0) e instructions para el modelo.
ping{}
tools/listLas seis herramientas de abajo, con sus esquemas de entrada.
tools/callEjecuta una herramienta.
Notificaciones y respuestas202 con el cuerpo {}.
Cualquier otra cosaUn error JSON-RPC -32601, Method not found: <method>.
bash
curl -X POST https://www.setherion.com/api/mcp \
  -H "Authorization: Bearer $SETHERION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'

Herramientas

HerramientaLlama aArgumentosCréditos
list_projectsLista tus aplicacionesquery, offset (ambos opcionales)Ninguno
edit_projectEdita una aplicaciónproject_id, instruction (ambos obligatorios)Los mismos que en el editor
edit_statusSeguir una ediciónproject_id, run_id (ambos obligatorios)Ninguno
publish_projectPublica una aplicaciónproject_idNinguno
store_guidePreparación para las tiendasproject_id, way (opcional)Ninguno
store_privacy_answersRespuestas de privacidad para las tiendasproject_id, way (obligatorio)Ninguno
write_store_listingEscribe la página de la tiendaproject_idUnos pocos, Pro y superiores

instruction se envía como el prompt de la edición, hasta 4000 caracteres. way es easy o native. offset es un número entero, 0 o más, y puede enviarse como texto. edit_project no admite un modelo: se ejecuta con auto.

tools/list da el title, la description, el inputSchema y las annotations de cada herramienta. Las herramientas de lectura están marcadas con readOnlyHint: true, y publish_project está marcada como idempotente.

bash
curl -X POST https://www.setherion.com/api/mcp \
  -H "Authorization: Bearer $SETHERION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call",
        "params": { "name": "list_projects", "arguments": { "query": "coffee" } } }'

El resultado de una herramienta

Una herramienta responde con el JSON de su endpoint, en dos formas para todo tipo de cliente:

json
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{ "type": "text", "text": "{ \"ok\": true, \"total\": 1, ... }" }],
    "structuredContent": { "ok": true, "total": 1, "truncated": false, "offset": 0, "nextOffset": null, "projects": [] },
    "isError": false
  }
}

(projects aparece abreviado aquí. Tiene las entradas descritas en Lista tus aplicaciones.)

Cuando el endpoint rechaza la petición, isError es true, structuredContent se omite y content contiene solo la frase error del endpoint, para que la lea el modelo. Una edición que termina con ok: false también es un error en este sentido.

Ediciones largas

Una edición tarda minutos. Envía la petición con Accept: text/event-stream y la respuesta llega en flujo:

  • Cada 10 segundos el servidor envía un evento notifications/progress, con progress fijado en los segundos transcurridos y el mensaje Still editing, 30s so far, cuando pones un progressToken en params._meta. Sin token envía una línea de comentario, : still editing. Cualquiera de las dos mantiene viva la conexión y permite que un cliente reinicie su tiempo de espera.
  • El último evento es el resultado de la herramienta, como event: message con la respuesta JSON-RPC en data.
text
event: message
data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"t1","progress":10,"message":"Still editing, 10s so far"}}

event: message
data: {"jsonrpc":"2.0","id":3,"result":{"content":[...],"structuredContent":{"ok":true,"runId":"..."},"isError":false}}

Sin esa cabecera Accept, la petición se queda abierta y responde con un único objeto JSON.

Una edición que sigue en marcha después de cuatro minutos

edit_project espera unos cuatro minutos como máximo, porque algunos asistentes abandonan una herramienta que lleva callada cinco. Una edición que sigue trabajando entonces responde ok: true con status: "running" y su runId:

json
{
  "ok": true,
  "status": "running",
  "runId": "b3f0e2d1-6a47-4c8e-9d15-0f2b7a3c8e61",
  "projectId": "7c1e4a52-9b0d-4f3e-8a61-2d5f0c9e7b14",
  "message": "Still editing. It carries on in Setherion without you: do not send it again. Call edit_status with this runId in a minute or so, until it says \"done\"."
}

La edición continúa en Setherion. Llama a edit_status con project_id y run_id cada minuto más o menos. Responde como en Seguir una edición, hasta que status sea done.

Cerrar la conexión no detiene la edición

Un cliente que cierra la conexión, o que envía una notificación de cancelación, deja la edición en marcha y pagada. Llega a la aplicación como si hubieras esperado. Para detenerla, pulsa Stop en el editor de Setherion, en la tarjeta que muestra la edición en marcha.

Errores

DóndeError
HTTP 401Código JSON-RPC -32001. Consulta Autenticación más arriba.
HTTP 403{ "error": "Origin not allowed" }
HTTP 405Código -32000, Method not allowed. This server answers POST only.
HTTP 400Código -32700 Parse error para un cuerpo que no es JSON; -32600 para un lote, un mensaje que no es JSON-RPC 2.0 o un MCP-Protocol-Version no admitido.
Error JSON-RPC-32601 para un método que no existe; -32602 para argumentos de herramienta incorrectos.
Las frases para argumentos de herramienta incorrectos

Todas llegan con el código -32602.

  • Unknown tool: <name>
  • Arguments must be an object.
  • Missing "project_id". (o cualquier argumento obligatorio)
  • Unknown argument "<name>".
  • "<name>" must be a string.
  • "way" must be one of: easy, native.
  • "offset" must be a whole number, 0 or more.

Los rechazos de las propias herramientas, como una aplicación que no se encuentra o un límite que se alcanzó, son resultados de herramienta con isError: true. Sus frases son las que aparecen en Errores y límites.

¿Te ha sido útil esta página?

Únete a la comunidad

Preguntas, ideas y lo que otros están construyendo.