@ararahq/mcp 6.x; mudanças em relação às versões antigas estão no changelog.
São 9 tools de propósito. Agente com painel de controle inteiro erra mais do que agente com poucas ações que aceitam o que uma pessoa sabe de cabeça (um nome, um número em qualquer formato) e resolvem o resto.
Como um destinatário é resolvido
send_whatsapp, broadcast, check_status e read_conversation aceitam em to um número em qualquer grafia ou o nome de um contato salvo.
- Número: o MCP remove pontuação e espaços. Número com
+ou com 12 dígitos ou mais é tratado como já tendo DDI; se for brasileiro (55) com 10 dígitos depois do DDI, ganha o nono dígito. Número sem DDI com 10 ou 11 dígitos ganha+55. O resultado precisa ser E.164 válido, senão a tool falha comINVALID_PHONE. - Nome: o MCP busca nos seus contatos salvos. Nenhum resultado dá
CONTACT_NOT_FOUND; mais de um dáCONTACT_AMBIGUOUScom os candidatos, em vez de chutar.
Busca por nome,
save_contacts e read_conversation usam a base de contatos da Arara, que depende do plano. Em plano sem contatos, a API recusa com PLAN_FEATURE_LOCKED; passe o número direto nas tools de envio.Falar com a base
send_whatsapp
Manda uma mensagem pra uma pessoa. Texto livre dentro da janela de 24h, ou template aprovado a qualquer hora. Passe exatamente um entremessage e templateName.
O retorno traz o
id da mensagem, o status de aceite e o destinatário resolvido. Aceite quer dizer na fila, não entregue: confira a entrega com check_status.
Se você mandou texto livre e a janela estava fechada, o erro CONVERSATION_WINDOW_CLOSED já vem com até 10 templates aprovados pra escolher, ou sugere criar um com create_template se não houver nenhum.
broadcast
Manda um template aprovado pra várias pessoas de uma vez, como campanha. Disparo em massa é quase sempre fora da janela de 24h, então só aceita template. Teste A/B e agendamento são opções da mesma chamada.
Por padrão é uma prévia. Com
dryRun omitido ou true, o MCP resolve a audiência, renderiza o corpo do template com as variáveis do primeiro destinatário, lista os botões e chama o estimador de custo da Arara. Nada é enviado. A resposta traz a mensagem renderizada, quantos destinatários resolveram, quais não resolveram, custo unitário e total, a configuração de A/B e o agendamento.
Com dryRun: false, a campanha é criada e a resposta traz o ID, o status, o total de mensagens e o custo total. Pra disparar, a organização precisa ter um número dedicado conectado.
Números ou nomes que não resolverem vêm listados na resposta, sem derrubar o disparo. Se nenhum resolver, a tool falha com NO_VALID_RECIPIENTS.
abTest: a Arara manda as duas variantes pra uma fatia da base, meio a meio, mede a melhor na janela de decisão e dispara o resto pela vencedora.
Ver o que voltou
campaign_report
SemcampaignId, lista as campanhas recentes, mais novas primeiro, com status, template, enviados, entregues, lidos, falhas e custo. Com campaignId, devolve o relatório completo: enviados, entregues, lidos, cliques, respostas, conversões (com valor), contatos segurados pelo A/B, bloqueados (com o motivo de cada grupo), estornos (quantidade e valor) e custo. A mensagem de texto já traz cada etapa em percentual da base.
check_status
Responde “chegou?”, “posso falar agora?” e “o template aprovou?”. Passe exatamente um dos três.read_conversation
Lê o conteúdo das mensagens trocadas com uma pessoa, direto da timeline: direção (cliente ou você), status, template usado, texto e data de cada uma. É como você separa interesse real de resposta automática antes de responder comsend_whatsapp.
Preparar
create_template
Submete um template novo pra aprovação da Meta. Você precisa de um pra qualquerbroadcast e pra falar com quem está fora da janela de 24h. A aprovação costuma levar minutos; acompanhe com check_status passando o templateId que volta na resposta.
Botão
SMART_LINK: passe em url o destino real (ex: https://wa.me/5511999999999?text=Quero%20saber%20mais). A Arara encurta e conta cada clique, que aparece como cliques no campaign_report. É assim que você descobre qual copy converteu num teste A/B.save_contacts
Salva (cria ou atualiza) contatos pra você mandar mensagem por nome em vez de decorar número. De 1 a 1.000 por chamada.
Devolve quantos foram criados, atualizados e ignorados, com a lista de erros por índice quando alguma linha não passa.
opt_out
Registra que uma pessoa não quer mais receber mensagens da sua organização, na lista de opt-out da organização. Idempotente: registrar duas vezes é seguro.Conta
whoami
Sem parâmetros. Mostra quem está autenticado (nome e e-mail), o plano atual e o saldo da carteira. Chame antes do primeiro disparo da sessão pra conferir em qual conta o agente vai operar.Formato de resposta e erros
Toda tool devolve um texto curto pro modelo e umstructuredContent estável:
429) ou de servidor, retryable vem true e, quando a API manda Retry-After, o campo retryAfterSeconds vem junto. Os códigos do próprio MCP:
Os demais códigos vêm da própria API da Arara e passam sem alteração. Veja Erros.
Painéis interativos
Em clientes com suporte a MCP Apps, quatro tools abrem um painel dentro do chat em vez de só texto. O texto continua vindo junto, então clientes sem painel não perdem nada.
Os botões que não executam direto viram uma mensagem no chat pro agente continuar (por exemplo, “Reenviar aos não lidos” pede um reenvio com outro template). Os painéis são servidos como resources
ui://arara/campaign.html, ui://arara/broadcast.html, ui://arara/status.html e ui://arara/conversation.html, e nunca recebem credencial.
Resources
Dados que o agente lê sem gastar tool call. Todos voltam em JSON; se a leitura falhar, o conteúdo trazRESOURCE_UNAVAILABLE.
Cada cliente expõe resources de um jeito. Se o seu não mostrar, peça ao agente pra ler a URI, por exemplo
arara://templates/approved.Prompts
Fluxos prontos que o cliente MCP expõe como atalhos. Nenhum recebe argumento, e todos param pra pedir aprovação antes de enviar.Automações (em preparação)
Esta seção descreve tools que ainda não estão no pacote publicado. Elas chegam numa próxima versão do
@ararahq/mcp; os nomes abaixo podem mudar até o lançamento.
Vale a mesma nota de permissão da API: escrita exige
AUTOMATIONS_MANAGE, leitura exige READ. Sem a permissão, a tool falha com o error.code que a API devolveu.
Próximos passos
Instalar o MCP
Login, configuração em cada cliente e primeiro uso.
Erros
Códigos que a API devolve e passam sem alteração pelo MCP.