ararahq-mcp
v3.0.0
Published
MCP server for AraraHQ — turn Claude / Cursor / ChatGPT into a WhatsApp operator with 64 tools, OAuth login, Smart Links, Recovery and AbacatePay integration.
Downloads
165
Maintainers
Readme
Arara MCP
Turn Claude / Cursor / ChatGPT into a WhatsApp operator that knows your customers, your templates, your wallet, and your funnel. Built by AraraHQ — Brazilian CPaaS for WhatsApp, homologated by Meta.
64 tools · 6 resources · 5 guided workflows · OAuth login
Install in 30 seconds
Claude Desktop / Claude Code
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"arara": {
"command": "npx",
"args": ["-y", "ararahq-mcp"]
}
}
}Restart Claude. Type "log into Arara" in any conversation — your browser opens, you approve, you're in.
Cursor
Settings → MCP → Add server:
{
"arara": {
"command": "npx",
"args": ["-y", "ararahq-mcp"]
}
}Hosted (SSE) — no local install
Add to your client:
https://mcp.ararahq.com/sseAuthenticate with x-arara-key: ara_live_... or the OAuth flow.
Headless (CI / n8n / server)
Skip OAuth — set the env var and run:
ARARA_API_KEY=ara_live_xxx npx ararahq-mcp --stdio5 things you can do right now
1. Ask Claude: "Quantas mensagens entregamos essa semana e quanto gastei?"
→ Claude reads arara://wallet/balance + calls get_delivery_metrics. Two-line answer.
2. Ask Claude: "Manda uma promoção pra 200 leads do último mês com 10% off."
→ Triggers the plan_campaign prompt. Estimates cost, asks for approval, dispatches with idempotency key.
3. Ask Claude: "O cliente +5511999998888 reclamou. Como respondo?"
→ Runs respond_to_complaint. Reads conversation history, asks Brain for a suggestion in your tone, shows it, sends on approval.
4. Ask Claude: "Tem dinheiro saindo da minha conta? Recupera o que dá."
→ Runs recover_revenue. Scans AbacatePay leaks, enriches with WhatsApp history, proposes offers per leak.
5. Ask Claude: "Cria um Smart Link pra meu bio do Instagram que mande mensagem pra +5511999998888 com texto pré-pronto."
→ Calls create_smart_link. Returns a short URL with click tracking + QR code.
Why an MCP, not an API client?
A regular API client needs you to remember endpoints, payload shapes, validation rules. The MCP gives the LLM:
- Tools with self-describing schemas — LLM picks the right one
- Resources the LLM reads passively — no extra call for "what's my balance"
- Prompts that orchestrate multi-step flows —
plan_campaign,recover_revenue,weekly_reviewwork in one command - OAuth handshake — no key copy-paste
You speak Portuguese. Claude does the rest.
Tool index
| Tool | What it does |
|---|---|
| login | OAuth device flow. Opens browser, polls until approved, stores token in OS keychain. |
| logout | Wipes token from keychain. |
| whoami | Shows authenticated user + active organization + plan. |
send_message accepts EITHER text (free text, requires open 24h window) OR templateName + templateVariables (always allowed). Guardian content checks run before dispatch. send_template_to_many handles up to 1000 recipients with per-recipient variables.
create_template supports body + header (text/media/document) + footer + samples. Meta approval typically takes 1–5 minutes; poll with get_template_status.
create_campaign accepts optional idempotencyKey to safely retry on network errors. estimate_campaign_cost previews spend before commit.
upsert_contacts returns per-row errors so the LLM can summarize bad rows. Custom attributes accepted as free-form JSON.
reply_in_conversation only works within an open 24h session window. Use send_message with a template to reopen.
brain_interact answers about your business using your templates + knowledge + history. brain_suggest_reply drafts on-brand replies. ingest_url_to_brain crawls a URL into the knowledge base.
Trackable wa.me alternative with per-link QR code and click counting. Use in bios, ads, footers.
Manage the cart-abandonment / order-event funnel: configure events, fire test ingests with your own phone, list & retry failures.
Manage WhatsApp numbers, request new ones, force sync of profile (display name / vertical) with Meta.
Quick reads of the org state. Often combined into the weekly_review prompt.
rotate_api_key revokes the old and issues new in one call — for handling compromise without downtime.
Validate phones before sending. Returns mobile/landline, carrier, hasWhatsapp.
Custom regex rules per session that block sensitive content + brand-policy violations on outbound. Built-in rules (CPF, CNPJ, CVV, passwords, tokens) are always on.
Atomic recovery cycles: scan leaks → propose offer → dispatch payment link via WhatsApp → verify payment. Conversation as contract.
Resources (LLM reads, no tool call)
arara://organization/me— org name, plan, consumptionarara://wallet/balance— live BRL balancearara://templates/approved— only APPROVED templates, ready to usearara://numbers— active WhatsApp numbersarara://campaigns/recent— last 10arara://recovery/funnel— recovery endpoint health + recent ingest mix
Prompts (slash workflows)
| Prompt | When to use |
|---|---|
| plan_campaign | "I want to send X to Y people" — handles audience → template → estimate → confirm → dispatch |
| respond_to_complaint | A specific conversation in COMPLAINT state — reads history, drafts reply via Brain, sends on approval |
| recover_revenue | Pull AbacatePay leaks, propose per-leak offers, dispatch payment links with operator approval |
| onboard_customer | New customer → validate phone → register → welcome message |
| weekly_review | Compile balance + metrics + campaigns + recovery into a paste-ready summary |
Configuration
# OAuth is the default; these are all optional overrides.
ARARA_API_KEY=ara_live_xxx # Fallback / headless mode
ARARA_BASE_URL=https://... # Override (default: https://api.ararahq.com/api)
ABACATE_API_KEY=xxx # For AbacatePay tools
ARARA_MCP_TELEMETRY=off # Disable usage telemetry
PORT=3333 # SSE mode port (default)
MCP_TRANSPORT=sse # Force SSE instead of stdioTokens are stored via keytar — macOS Keychain, Linux Secret Service, Windows Credential Manager. Never on disk.
Local dev
npm install
npm run build
node build/index.js --stdio # for Claude Desktop testing
PORT=3333 node build/index.js # for SSE testing on localhostGet help
- Docs: docs.ararahq.com
- Issues: github.com/ararahq/ararahq-mcp/issues
- WhatsApp: just message any Arara number — yes, we use our own product
Built in São Paulo · MIT license · © AraraHQ
