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/mcp

Autenticaçã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

FerramentaEscopoUso
chattoo_list_instancesinstances:readLista as instâncias do projeto.
chattoo_select_instanceinstances:readSolicita uma escolha ao cliente quando há várias instâncias.
chattoo_send_textcommands:writeAceita um envio com destinatário e idempotencyKey explícitos.
chattoo_get_command / chattoo_wait_commandcommands:readConsulta ou acompanha a execução com progresso.
chattoo_get_sessionsessions:readConsulta o estado da conexão sem expor QR ou credenciais.
chattoo_get_usageusage:readConsulta uso e limites.
chattoo_get_costscosts:readConsulta 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.0
import { 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 MCP

Meta, 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.