Model Context Protocol · TypeScript
Seus agentes conectados à Chattoo.
MCP permite que um agente descubra ferramentas, consulte recursos e execute operações autorizadas. Use o token do seu projeto e o endereço abaixo no cliente MCP do seu serviço.
https://apis.chattoo.com.br/mcpAutenticação: Authorization: Bearer com o token de projeto. Requisições e respostas seguem JSON-RPC 2.0. O servidor usa o SDK oficial MCP v2; suporta a revisão 2026-07-28 e compatibilidade com clientes 2025-11-25.
Comunicação que permanece aberta
Streamable HTTP envia cada solicitação por POST. A resposta pode ser JSON ou um fluxo SSE. Na versão atual, subscriptions/listen mantém uma resposta aberta e avisa quando um recurso muda; outras chamadas continuam funcionando em paralelo. Há heartbeat, limite de duração e cancelamento.
Quando precisa de uma escolha, o servidor retorna input_required; o cliente obtém a resposta do usuário e retoma a chamada. Isso permite uma interação nos dois sentidos. WebSocket pode ser um transporte customizado, mas não é necessário para esta integração.
Nos clientes de 2025, a compatibilidade usa initialize, uma sessão MCP e GET com SSE para notificações. Essa sessão pertence ao protocolo e não determina a duração do vínculo do WhatsApp.
Ferramentas e permissões
| Ferramenta | Escopo | Uso |
|---|---|---|
| chattoo_list_instances | instances:read | Lista as instâncias do projeto. |
| chattoo_select_instance | instances:read | Solicita uma escolha ao cliente quando há várias instâncias. |
| chattoo_send_text | commands:write | Aceita um envio com destinatário e idempotencyKey explícitos. |
| chattoo_get_command / chattoo_wait_command | commands:read | Consulta ou acompanha a execução com progresso. |
| chattoo_get_session | sessions:read | Consulta o estado da conexão sem expor QR ou credenciais. |
| chattoo_get_usage | usage:read | Consulta uso e limites. |
| chattoo_get_costs | costs:read | Consulta custos somente com o escopo financeiro. |
A chave mantém as permissões e o isolamento do projeto. O catálogo mostra apenas as ferramentas permitidas. Não há pareamento, logout, importação de conversas ou alteração de cobrança pelo MCP.
Conecte pelo Node.js
npm install @modelcontextprotocol/client@2.4.0import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
const client = new Client(
{ name: 'meu-servico', version: '1.0.0' },
{ versionNegotiation: { mode: 'auto' } },
);
await client.connect(new StreamableHTTPClientTransport(
new URL('https://apis.chattoo.com.br/mcp'),
{ requestInit: { headers: {
Authorization: 'Bearer ' + process.env.CHATTOO_TOKEN!,
} } },
));
const result = await client.callTool({
name: 'chattoo_list_instances', arguments: {},
});
console.log(result.structuredContent);
client.setNotificationHandler('notifications/resources/updated', event => {
// O recurso mudou. Leia o estado atual com client.readResource({ uri }).
console.log(event.params.uri);
});
const resources = await client.listResources();
const events = resources.resources.find(resource => resource.name === 'events');
if (events) {
const subscription = await client.listen({ resourceSubscriptions: [events.uri] });
// O fluxo fica aberto. Ao encerrar seu serviço:
// await subscription.close(); await client.close();
}Para o exemplo, marque instances:read e webhooks:read na chave. A negociação auto é necessária no cliente oficial v2 para usar o protocolo atual. Guarde o token no backend; clientes que exigem login OAuth automático precisam de uma integração de autenticação adicional, ainda não incluída.
Recursos e acompanhamento
resources/list fornece as URIs do próprio projeto: instâncias, comandos, sessões e eventos. O recurso chattoo://guide descreve as regras de integração. Os recursos dinâmicos trazem até 20 registros recentes de metadados, com atualização consultada a cada cinco segundos. A notificação informa que o recurso mudou; leia novamente para obter o estado.
Não há corpo de mensagem, telefone, remetente, QR ou histórico de conversas nesses recursos. O fluxo de notificações não substitui os webhooks com retentativas para entrega de eventos de negócio. Ao reconectar, assine novamente e consulte o estado atual; não há replay MCP.
queued significa aceite. succeeded indica execução do comando e não confirma leitura. Acompanhe os eventos de envio, entrega e leitura. Cancelar uma espera ou fechar o fluxo não cancela um comando aceito nem desconecta o WhatsApp. Reutilize a chave de idempotência para a mesma intenção de negócio e consulte resultados incertos antes de reenviar.
Explore no Swagger
Use Authorize com o token e execute o exemplo tools/list. O Swagger ajuda a entender o envelope HTTP; para manter e consumir fluxos assíncronos, use um cliente MCP.
Baixar OpenAPI do transporte MCPMeta, coexistência e cobrança real continuam desativadas. A publicação no npm dos SDKs Chattoo é independente deste servidor MCP; os downloads HTTPS dos SDKs continuam disponíveis no guia de integração.