Novo Cadastre-se grátis, 10 chamadas por nossa conta. Até US$ 1, sem cartão.

Servidor MCP

Conecte qualquer agente compatível com MCP (Claude Code, Cursor, VS Code, Codex, o OpenAI Agents SDK e outros) à Synthorai com uma URL e sua chave de API. Todos os modelos e modalidades, o gerenciamento de chaves de API e os dados de cobrança viram ferramentas que o agente pode chamar. Cada chamada é autenticada, limitada e cobrada exatamente como a requisição REST correspondente.

Endpointhttps://synthorai.io/v1/mcp
TransporteStreamable HTTP, sem estado (sem sessões), respostas JSON
AutenticaçãoAuthorization: Bearer <API key>
ℹ

A chave usada na conexão define quais ferramentas você recebe: uma chave de inferência (sk-syn-…) chama modelos, uma chave de provisioning (sk-syn-prov-…) gerencia chaves de API e uma chave de cobrança (sk-syn-bill-…) lê saldo e uso. Se um agente precisar de mais de um tipo, conecte o servidor uma vez para cada tipo de chave.

Início rápido

  1. Crie uma chave de API no console, na página Chaves de API. Para um agente, defina um limite de gasto e uma lista de permissões de modelos.
  2. Adicione o servidor ao seu cliente com um dos trechos abaixo, lendo a chave de uma variável de ambiente em vez de colá-la em um arquivo.
  3. Peça ao seu agente, por exemplo: “Liste os três modelos mais baratos que suportam ferramentas, depois peça ao mais rápido para resumir este arquivo e me diga quanto custou.”

Conecte seu cliente

Todos os clientes usam o mesmo endpoint e o mesmo cabeçalho. Primeiro, defina SYNTHORAI_API_KEY no seu ambiente.

Claude Code

Execute /mcp no Claude Code para verificar a conexão. Adicione --scope user para disponibilizar o servidor em todos os projetos, ou faça commit do formato .mcp.json para compartilhá-lo com sua equipe (a chave continua no ambiente de cada desenvolvedor).

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

Coloque isto em ~/.cursor/mcp.json (todos os projetos) ou em .cursor/mcp.json (um projeto).

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

VS Code (GitHub Copilot)

Coloque isto em .vscode/mcp.json. O VS Code pede a chave uma vez e a armazena com segurança.

{
  "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

Coloque isto em ~/.codex/config.toml ou execute 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

Os servidores da OpenAI chamam o endpoint em seu nome, então deixe vazia a lista de permissões de IP da chave (ou libere as faixas de saída da OpenAI). Use allowed_tools para expor apenas as ferramentas de que o modelo precisa.

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 da mesma forma com qualquer framework construído sobre os SDKs de cliente MCP (LangChain, LlamaIndex, Pydantic AI, Vercel AI SDK, Mastra …): aponte o transporte Streamable HTTP dele para o endpoint, com o cabeçalho.

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

Os conectores personalizados do Claude Desktop e do claude.ai fazem login com OAuth, que este servidor ainda não oferece (veja a seção Em breve abaixo). Até lá, o Claude Desktop pode se conectar pela ponte mcp-remote, que adiciona o cabeçalho para você:

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

curl

O servidor é JSON-RPC puro sobre HTTP, então nenhum SDK é necessário. Não há handshake: cada requisição é independente.

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"}}}'

Exemplo de resposta

{
  "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-…"
    }
  }
}

Ferramentas

tools/list retorna apenas as ferramentas que sua chave pode usar: a lista é filtrada pelo tipo de chave e pelos recursos habilitados no seu workspace (a geração de imagens e de vídeos está em prévia limitada). Ferramentas que executam um modelo custam exatamente o mesmo que a chamada REST; todas as outras são gratuitas.

Chave de inferência

FerramentaO que fazEndpoint RESTObservações
list_models Modelos que a chave pode chamar, do mais barato para o mais caro, com tamanho de contexto, modalidades, capacidades e preços de tabela. Filtros: categoria, capacidade, modalidade de entrada, busca. GET /v1/models + /api/models somente leitura
get_model Detalhes completos de um modelo, incluindo o preço efetivo após qualquer desconto e se a chave pode chamá-lo. GET /v1/models/{id} somente leitura
get_pricing A tabela de preços (USD após descontos): preços por token, por chamada, por minuto, por segundo e escalonados. GET /api/pricing somente leitura
chat_completion Uma chat completion em qualquer modelo: um prompt ou um array messages completo (imagens, resultados de ferramentas), com saída estruturada, ferramentas de função, esforço de raciocínio e modelos de fallback opcionais. Retorna texto, chamadas de ferramenta, uso, custo e request_id. POST /v1/chat/completions cobrado
generate_image Gera ou edita imagens; retornadas como conteúdo de imagem, ou como links com response_format=url. POST /v1/images/generations cobrado
list_image_models Modelos de imagem com preços e entradas suportadas. GET /v1/images/models somente leitura
create_video Inicia um job de vídeo a partir de um prompt ou de um primeiro quadro; pode aguardar até 60 s pela conclusão. Cobrado quando o job é concluído. POST /v1/videos cobrado
get_video Status do job; quando concluído, links para os vídeos (válidos por cerca de 24 horas). GET /v1/videos/{id} somente leitura
cancel_video Cancela um job que ainda está na fila (um job já iniciado não pode ser interrompido). Jobs cancelados ou com falha não são cobrados. DELETE /v1/videos/{id} destrutivo
list_video_models Modelos de vídeo com resoluções, durações e preços. GET /v1/videos/models somente leitura
text_to_speech Fala a partir de texto, retornada como conteúdo de áudio. POST /v1/audio/speech cobrado
transcribe_audio Texto a partir de áudio fornecido como URL ou dados base64 (até 25 MB). POST /v1/audio/transcriptions cobrado
create_embeddings Vetores de embedding para um texto ou um lote de até 2048. POST /v1/embeddings cobrado
get_key_info Limite de gasto da chave, valor usado e restante, período de redefinição e gasto de hoje / desta semana / deste mês (USD). GET /v1/key somente leitura
get_generation O registro de cobrança de uma requisição pelo request_id: custo, detalhamento de tokens, latência, status. GET /v1/generation somente leitura

Chave de provisioning

FerramentaO que fazEndpoint RESTObservações
create_api_key Cria uma chave de inferência com limite de gasto, período de redefinição, listas de permissões de modelos e de IP, expiração e metadados. O segredo aparece apenas no resultado. POST /api/provisioning/keys altera dados
list_api_keys As chaves de inferência do workspace, com limites, gasto e status; filtre por metadados. GET /api/provisioning/keys somente leitura
get_api_key Configurações, gasto e status de uma chave. GET /api/provisioning/keys/{id} somente leitura
update_api_key Altera as configurações de uma chave, ou a desativa / reativa. Apenas os campos informados mudam. PATCH /api/provisioning/keys/{id} destrutivo
delete_api_key Exclui uma chave permanentemente. DELETE /api/provisioning/keys/{id} destrutivo

Chave de cobrança

FerramentaO que fazEndpoint RESTObservações
get_balance Saldo disponível agora (USD), com voucher e créditos programados. GET /api/v1/billing/balance somente leitura
get_usage Gasto e requisições por hora ou por dia, por chave e/ou modelo. GET /api/v1/billing/usage somente leitura
list_usage_records Registros por requisição com tokens, custo e status, paginados por cursor. GET /api/v1/billing/records somente leitura
get_billing_summary Totais de um intervalo com as principais chaves e modelos. GET /api/v1/billing/summary somente leitura
get_data_freshness O quão atualizados estão os dados de cobrança. GET /api/v1/billing/freshness somente leitura

list_models, get_model e get_pricing estão disponíveis para todos os tipos de chave; com uma chave de inferência, list_models mostra apenas os modelos que essa chave pode chamar.

Como são os resultados

Todo resultado traz um bloco de texto legível e os mesmos dados em JSON em structuredContent, para que tanto clientes de chat quanto programas possam usá-lo. Imagens e áudio voltam como conteúdo de imagem e de áudio; vídeos, como links. Ferramentas que executam um modelo terminam com uma linha de recibo (modelo, tokens, custo e request_id) que pode ser consultada depois com get_generation.

Permissões e segurança

  • As mesmas regras da API REST. Cada chamada de ferramenta é executada pelo endpoint REST indicado, com a sua chave: autenticação, tipo de chave, lista de permissões de IP, lista de permissões de modelos, limite de gasto, limites de taxa e cobrança se aplicam sem alteração. O MCP não concede nenhuma permissão extra nem pula nenhuma verificação.
  • Privilégio mínimo por tipo de chave. Chaves de inferência não podem gerenciar chaves nem ler a cobrança do workspace; chaves de provisioning não podem chamar modelos; chaves de cobrança são somente leitura.
  • Dicas de aprovação. Toda ferramenta traz anotações MCP. Ferramentas somente leitura são marcadas com readOnlyHint; ferramentas que gastam dinheiro não são somente leitura; update_api_key, delete_api_key e cancel_video são marcadas com destructiveHint. Os clientes usam essas marcações para decidir o que perguntar a você antes de executar.
  • Chave recomendada para agentes: uma chave de inferência dedicada, com limite de gasto redefinido diariamente, uma lista allowed_models e uma lista de permissões de IP quando o agente roda em hosts conhecidos. Revogue-a isoladamente, sem mexer nas chaves de produção.
  • Segredos e conteúdo não confiável. create_api_key retorna a nova chave uma única vez: diga ao seu agente onde armazená-la. Trate a saída do modelo e os resultados das ferramentas como entrada não confiável (prompt injection) antes de deixar um agente agir com base neles.

Detalhes do protocolo

ItemDetalhe
Versões do protocolo2026-07-28 (sem estado, _meta por requisição e cabeçalhos Mcp-Method / Mcp-Name, server/discover) e 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 (handshake initialize). Todas na mesma URL; cada requisição é atendida conforme a versão que ela usa.
SessõesNenhuma. Nenhum Mcp-Session-Id é emitido, então qualquer requisição pode chegar a qualquer réplica do servidor e nada precisa ser reinicializado após uma reconexão.
Métodosinitialize, ping, tools/list, tools/call; com 2026-07-28, server/discover no lugar do handshake. GET e DELETE retornam 405; lotes JSON-RPC não são aceitos.
ErrosUma ferramenta desconhecida gera um erro JSON-RPC (-32602). Todo o resto (argumentos inválidos, uma recusa da API, uma geração com falha) é um resultado de ferramenta com isError: true e uma mensagem com a qual o modelo pode agir. Com 2026-07-28, problemas no envelope retornam HTTP 400 com -32020 (cabeçalho divergente) ou -32022 (versão não suportada, listando as suportadas).
Cachetools/list é retornado em ordem fixa (favorável ao prompt cache), com ttlMs de 10 minutos e cacheScope: "private", pois a lista depende da sua chave.
Limite de taxa600 mensagens MCP por minuto por chave (HTTP 429 com Retry-After). Cada chamada de ferramenta também conta para os limites do endpoint REST que ela chama.
Chamadas longasUma chamada pode durar até 30 minutos (raciocínio longo). A geração de vídeo é assíncrona: create_video retorna um job e get_video consulta seu andamento.

Solução de problemas

SintomaCausa e solução
401, ou o cliente informa que é preciso autenticarA chave está ausente, é inválida, expirou ou está desativada. Envie-a como Authorization: Bearer <key> e verifique se a variável de ambiente está definida onde o cliente é executado.
Uma ferramenta esperada não aparece na listaAs ferramentas dependem do tipo de chave (veja as tabelas acima) e dos recursos em prévia: as ferramentas de imagem e vídeo aparecem apenas para workspaces admitidos nessas prévias.
Um resultado de ferramenta indica HTTP 402O saldo do workspace acabou. Recarregue no console; get_key_info mostra o limite da própria chave.
Um resultado de ferramenta indica HTTP 403 para um modeloO allowed_models da chave ou o acesso a modelos do seu workspace exclui esse modelo. list_models mostra exatamente o que a chave pode chamar.
chat_completion não retorna texto, com finish_reason lengthUm modelo de raciocínio gastou todo o orçamento de max_tokens pensando. Aumente max_tokens ou reduza reasoning_effort.
HTTP 429Mais de 600 mensagens por minuto em uma chave, ou o limite próprio do endpoint REST. Aguarde o tempo indicado em Retry-After.

Em breve

  • Login com OAuth, para que os conectores do claude.ai, do Claude Desktop e do ChatGPT possam se conectar sem colar uma chave, usando credenciais de curta duração e com gasto limitado.
  • Gateway MCP: o mesmo endpoint também agregando servidores MCP de terceiros (GitHub, Slack, os seus próprios) sob a sua chave, com permissões por ferramenta, credenciais mantidas no servidor e um único log de auditoria.
  • Progresso de chamadas longas, transmitido enquanto uma ferramenta é executada.

Relacionados: Chaves de API · Chaves de provisioning · API de cobrança · Chat Completions