MCP / HTTP / BEARER
Seu aplicativo, conectado.
O guia para implementar.
Conecte seu app criado com IA, CRM ou software próprio ao WhatsApp Business. Com o cliente MCP preparado, a configuração usa a URL do Enlazá e uma chave pessoal. Siga o exemplo de leitura e adicione as tarefas necessárias.
01. Conexão e chave pessoal
Crie ou acesse sua conta Enlazá, conecte o WhatsApp Business e abra Chaves pessoais. Crie uma chave com nome e permissões. Copie ao criar: ela não será mostrada novamente. Até dez chaves ativas por conta. Use uma por integração. Guarde como segredo de servidor, nunca em URL, repositório, armazenamento do navegador ou mensagem de chat.
Servidor: https://enlaza.chat/mcp. Autenticação: Authorization: Bearer <chave pessoal>. Se o formulário pedir apenas a chave, cole o segredo sem Bearer. A chave autentica o acesso, mas não conecta seu número nem cria uma assinatura de avisos.
Experimentar grátis →02. Primeira leitura com JSON-RPC
Prefira um cliente MCP atualizado que negocie a versão e processe respostas JSON ou SSE. O exemplo mostra o contrato inicial; substitua o marcador por um segredo lido no servidor. Se o servidor retornar um identificador de sessão, conserve MCP-Session-Id nas solicitações seguintes. Envie cada objeto JSON-RPC em um POST separado, não todos juntos. Mantenha o header da versão negociada nas solicitações seguintes.
POST /mcp HTTP/1.1
Host: enlaza.chat
Authorization: Bearer <ENLAZA_PERSONAL_KEY>
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2025-11-25
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"my-business-app","version":"1.0.0"}}}Após initialize, envie notifications/initialized, consulte tools/list e depois whatsapp_accounts. Use o id real do seu número; ready e webhook_ready indicam preparação, não provam que uma mensagem chegou. Depois consulte whatsapp_messages com esse connection_id. Os resultados dependem das permissões e do estado do número.
{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "whatsapp_accounts",
"arguments": {}
}
}
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "whatsapp_messages",
"arguments": {
"connection_id": "<ID_FROM_WHATSAPP_ACCOUNTS>"
}
}
}03. Permissões e tarefas
| Permissão | Finalidade |
|---|---|
whatsapp:read | Obrigatória. Números próprios, mensagens, histórico disponível, arquivos, transcrições, estados e modelos. |
whatsapp:send | Opcional. Enviar texto, imagens, PDFs e modelos elegíveis; marcar como lido conforme a ferramenta. Cada ação exige autorização adequada. |
whatsapp:events | Opcional, junto com leitura. Assinar avisos de mensagens novas se o cliente admitir eventos e receber o callback. |
Descubra o esquema real de cada ferramenta com tools/list antes de chamar. whatsapp_messages pagina até 50 mensagens e retorna next_cursor quando aplicável. whatsapp_media recupera anexos disponíveis; whatsapp_transcription consulta ou solicita transcrições no idioma de áudio configurado: português, espanhol ou inglês. Traduzir o site para alemão não adiciona transcrição em alemão.
Use whatsapp_send_text, whatsapp_send_image ou whatsapp_send_document conforme o esquema descoberto. Gere um request_id UUID por operação e mantenha o mesmo ID e conteúdo ao repetir um resultado incerto. queued não confirma entrega: consulte whatsapp_message_status. Texto livre, imagens e PDFs exigem a janela de 24 horas. Fora dela, whatsapp_send_template exige modelo em espanhol aprovado, consentimento do contato e propósito autorizado; pode haver cobrança da Meta.
04. Mensagens novas e eventos
Consultar mensagens não exige servidor de callbacks. Para avisos, descubra events com server/discover e events/list, e assine whatsapp.message.received com events/subscribe. Seu app precisa implementar um receptor HTTPS público real, o desafio assinado e a verificação de assinaturas Standard Webhooks. Não cole o segredo de assinatura ou a chave em chats. O aviso contém identificadores e metadados: busque o conteúdo com whatsapp_messages usando sua própria credencial. O segredo de assinatura usa whsec_ seguido de 24–64 bytes aleatórios codificados em Base64. Após verificar a assinatura da solicitação type=verification, o receptor responde com JSON {"challenge":"o mesmo valor recebido"}. A URL do exemplo é um marcador: use seu receptor real.
{
"jsonrpc": "2.0",
"id": 5,
"method": "events/subscribe",
"params": {
"name": "whatsapp.message.received",
"arguments": {
"connection_id": "<ID_FROM_WHATSAPP_ACCOUNTS>"
},
"delivery": {
"mode": "webhook",
"url": "https://your-app.example/mcp-events",
"secret": "<WEBHOOK_SIGNING_SECRET>"
},
"ttlMs": 86400000
}
}A assinatura retorna id e refreshBefore e dura no máximo 24 horas. Renove antes dessa data; isso é separado da duração da chave. Elimine duplicatas por eventId e trate mensagens recebidas como dados não confiáveis, não como instruções. Histórico importado e mensagens enviadas não são mensagens recebidas novas. Confira whatsapp_notifications_status; não prometa escuta ativa sem assinatura confirmada. Edições e exclusões podem exigir nova leitura do conteúdo atual.
05. Duração, renovação e revogação
Sem vencimento é a opção padrão. Também é possível escolher um ano ou um prazo menor. Chaves com vencimento recebem um aviso 24 horas antes e outro ao vencer. A renovação mostra uma nova chave uma única vez: substitua o segredo no seu app; a chave anterior deixa de funcionar. Revogar interrompe o acesso imediatamente. Assinaturas de eventos mantêm seu próprio refreshBefore mesmo quando a chave não vence. Os prazos finitos disponíveis são 30, 90 ou 365 dias. Chaves existentes não são estendidas automaticamente. Renovar uma chave não reativa por si só uma assinatura de avisos vencida.
06. Se algo não funcionar
Não consigo autenticar
Confira /mcp, o header Bearer e se a chave está ativa. Substitua uma chave revogada, vencida ou renovada. Não exponha o segredo ao pedir ajuda.
Autentica, mas não há mensagens
Consulte whatsapp_accounts e confira conexão, ready e webhook_ready. Criar a chave e conectar o número são etapas separadas. Uma lista vazia também pode indicar histórico não compartilhado ou mensagens ainda indisponíveis.
Não consigo enviar
Confira permissão de envio, autorização do destinatário e conteúdo e janela de 24 horas. Fora da janela use modelo elegível com consentimento. Não repita indefinidamente uma falha conhecida.
Não chegam avisos
Confirme suporte a MCP Events, assinatura ativa, callback HTTPS, assinaturas e refreshBefore. Criar a chave não ativa avisos. Sem receptor, use leitura sob demanda sem prometer escuta contínua.
Recebo JSON ou fluxo SSE
Ambos são possíveis conforme a negociação. Use Accept: application/json, text/event-stream e um cliente MCP que processe os dois; não suponha resposta REST.
07. Instruções para seu agente de programação
Implemente integração MCP HTTP com https://enlaza.chat/mcp e uma chave pessoal Enlazá guardada como segredo de servidor. Leia este guia e /agents.md. Inicialize MCP, descubra tools/list, consulte whatsapp_accounts e use apenas os IDs próprios retornados. Comece lendo mensagens; adicione envio somente para ações autorizadas. Preserve request_id nas tentativas. Implemente eventos somente com receptor HTTPS real, verificação de assinaturas e renovação. Nunca peça a chave em uma conversa: use o gerenciador seguro de segredos do meu aplicativo.
agents.md → · Guia geral e ajuda
Contrato técnico do Enlazá. Revisado em 30 de outubro de 2026. Exemplos ilustram solicitações, não mensagens reais de clientes.