Exemplo de requisição
curl -X POST "https://seu-dominio/mcp" \
-H "x-api-key: $VERTICE_API_KEY" \
-H "accept: application/json, text/event-stream" \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
const response = await fetch('https://seu-dominio/mcp', {
method: 'POST',
headers: {
'x-api-key': process.env.VERTICE_API_KEY ?? '',
'content-type': 'application/json',
accept: 'application/json, text/event-stream',
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}),
});
const payload = await response.json();
console.log(payload);
Entenda
Conceituação
Ponto único MCP Streamable HTTP. Recebe JSON-RPC (initialize, tools/list, tools/call) e expõe ferramentas de instâncias, mensagens, grupos e fila.
A sessão MCP é negociada via initialize e mantida pelo header Mcp-Session-Id. Ferramentas de escrita exigem uma API key com escopo write.
Corpo JSON. Os campos abaixo são exemplos; campos marcados como obrigatórios precisam ser enviados.
Contrato
Atributos
Header
x-api-key
string
obrigatório
API key do workspace (vtc_live_...). Também aceita Authorization: Bearer.
content-type
string
obrigatório
application/json.
accept
string
obrigatório
application/json, text/event-stream.
Body
jsonrpc
string
obrigatório
Versão do protocolo JSON-RPC. Use 2.0.
id
integer
opcional
Campo id do corpo JSON.
method
string
obrigatório
Método JSON-RPC, por exemplo initialize, tools/list ou tools/call.
params
object
opcional
Campo params do corpo JSON.
Payload
Request Body
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
Contrato
200
Resposta
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "list_instances"
},
{
"name": "send_text"
}
]
}
}
Este endpoint segue o formato JSON-RPC, sem envelope data.
Erros comuns
400
Corpo, query ou parâmetro inválido. A resposta traz error.code e error.message.
401
Credencial ausente, inválida ou sessão expirada.
403
Escopo insuficiente, IP não autorizado ou workspace suspenso.