Crie um cliente para o assistente
Servidor MCP
O endpoint MCP do Setherion para criar o seu próprio cliente: transporte, autenticação, ferramentas e erros.
https://www.setherion.com/api/mcpPlano: Qualquer plano
O Setherion tem um servidor MCP, a forma padrão de os assistentes de IA usarem outros serviços. Se você só quer usá-lo a partir do Claude, do ChatGPT, do Cursor ou do VS Code, siga MCP: conectar um assistente de IA. Esta página é para criar o seu próprio cliente.
O servidor é a API com outra voz. Cada ferramenta é uma chamada ao endpoint de mesmo nome nesta referência, feita com a credencial do próprio autor da chamada, então o servidor nunca pode fazer mais do que a API pode.
Transporte
- Streamable HTTP, sem estado. Envie cada mensagem como uma única mensagem JSON-RPC 2.0 no corpo de um
POST. Não há sessões e nada para retomar. - Versões do protocolo
2025-06-18e2025-03-26.initializeresponde com a versão que você pediu se for uma destas, e com2025-06-18caso contrário. Depois deinitialize, envie a versão no headerMCP-Protocol-Version. Um valor diferente é recusado com400. - Somente ferramentas. O servidor não oferece recursos nem prompts, e não envia mensagens por conta própria.
- Uma mensagem por solicitação. Um lote é recusado com
400. GETeDELETErespondem405comAllow: POST.- Origin. Uma solicitação vinda de uma página de navegador precisa vir de
https://www.setherion.com. Qualquer outroOriginresponde403. Solicitações vindas de programas não carregam nenhum e são permitidas.
Mantenha o www no endereço. O endereço sem ele redireciona, e um redirecionamento descarta a credencial.
Autenticação
Envie uma credencial no header Authorization. Qualquer uma das duas serve:
- Uma chave de API:
Authorization: Bearer sth_.... Veja Autenticação. - Um token de acesso OAuth, que começa com
sto_, emitido para este endpoint e para nenhum outro. Veja a página de login com OAuth desta referência.
Uma solicitação sem nenhuma das duas, ou com uma credencial errada, expirada ou revogada, responde 401 com uma indicação de onde entrar:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="Setherion", resource_metadata="https://www.setherion.com/.well-known/oauth-protected-resource/api/mcp"{
"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_...\"."
}
}Um cliente sem credenciais segue resource_metadata para encontrar o login. Os tokens funcionam apenas neste endpoint: os endpoints REST desta referência aceitam uma chave de API.
Métodos
| Método | Resposta |
|---|---|
initialize | A versão do protocolo, capabilities de { "tools": { "listChanged": false } }, serverInfo (setherion, Setherion, 1.0.0) e instructions para o modelo. |
ping | {} |
tools/list | As seis ferramentas abaixo, com seus esquemas de entrada. |
tools/call | Executa uma ferramenta. |
| Notificações e respostas | 202 com o corpo {}. |
| Qualquer outra coisa | Um erro JSON-RPC -32601, Method not found: <method>. |
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" }'Ferramentas
| Ferramenta | Chama | Argumentos | Créditos |
|---|---|---|---|
list_projects | Listar seus apps | query, offset (ambos opcionais) | Nenhum |
edit_project | Editar um app | project_id, instruction (ambos obrigatórios) | Os mesmos do editor |
edit_status | Acompanhar uma edição | project_id, run_id (ambos obrigatórios) | Nenhum |
publish_project | Publicar um app | project_id | Nenhum |
store_guide | Preparação para as lojas | project_id, way (opcional) | Nenhum |
store_privacy_answers | Respostas de privacidade para as lojas | project_id, way (obrigatório) | Nenhum |
write_store_listing | Escrever a página da loja | project_id | Alguns, Pro e acima |
instruction é enviada como o prompt da edição, com até 4.000 caracteres. way é easy ou native. offset é um número inteiro, 0 ou mais, e pode ser enviado como texto. edit_project não aceita um modelo: ele roda em auto.
tools/list informa title, description, inputSchema e annotations de cada ferramenta. As ferramentas de leitura são marcadas com readOnlyHint: true, e publish_project é marcada como idempotente.
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" } } }'O resultado de uma ferramenta
Uma ferramenta responde com o JSON do seu endpoint, em duas formas para todo tipo de cliente:
{
"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 está abreviado aqui. Ele tem as entradas descritas em Listar seus apps.)
Quando o endpoint recusa, isError é true, structuredContent é omitido e content traz apenas a frase de error do endpoint, para o modelo ler. Uma edição que termina com ok: false também é um erro nesse sentido.
Edições longas
Uma edição leva minutos. Envie a solicitação com Accept: text/event-stream e a resposta chega em fluxo:
- A cada 10 segundos o servidor envia um evento
notifications/progress, comprogressdefinido como os segundos até agora e a mensagemStill editing, 30s so far, quando você coloca umprogressTokenemparams._meta. Sem um token, ele envia uma linha de comentário,: still editing. Qualquer um dos dois mantém a conexão ativa e permite que um cliente reinicie o seu tempo limite. - O último evento é o resultado da ferramenta, como
event: messagecom a resposta JSON-RPC emdata.
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}}Sem esse header Accept, a solicitação fica aberta e responde com um único objeto JSON.
Uma edição ainda em andamento depois de quatro minutos
edit_project espera cerca de quatro minutos no máximo, porque alguns assistentes desistem de uma ferramenta que ficou em silêncio por cinco. Uma edição que ainda está trabalhando nesse momento responde ok: true com status: "running" e o seu runId:
{
"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\"."
}A edição continua no Setherion. Chame edit_status com project_id e run_id a cada minuto, mais ou menos. Ele responde como em Acompanhar uma edição, até que status seja done.
Fechar a conexão não interrompe a edição
Um cliente que fecha a conexão, ou envia uma notificação de cancelamento, deixa a edição em andamento e paga. Ela chega ao app como se você tivesse esperado. Para interrompê-la, clique em Stop no editor do Setherion, no cartão que mostra a edição em andamento.
Erros
| Onde | Erro |
|---|---|
HTTP 401 | Código JSON-RPC -32001. Veja Autenticação acima. |
HTTP 403 | { "error": "Origin not allowed" } |
HTTP 405 | Código -32000, Method not allowed. This server answers POST only. |
HTTP 400 | Código -32700 Parse error para um corpo que não é JSON; -32600 para um lote, uma mensagem que não é JSON-RPC 2.0 ou um MCP-Protocol-Version sem suporte. |
| Erro JSON-RPC | -32601 para um método que não existe; -32602 para argumentos de ferramenta errados. |
As frases para argumentos de ferramenta errados
Todas voltam com o código -32602.
Unknown tool: <name>Arguments must be an object.Missing "project_id".(ou qualquer argumento obrigatório)Unknown argument "<name>"."<name>" must be a string."way" must be one of: easy, native."offset" must be a whole number, 0 or more.
As recusas das próprias ferramentas, como um app que não foi encontrado ou um limite que foi atingido, são resultados de ferramenta com isError: true. As frases delas são as listadas em Erros e limites.
Esta página foi útil?
