Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the WhatsApp Business Cloud API in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Send WhatsApp messages, templates, media and buttons from Muse through Meta's official Cloud API.
Try asking
Example prompts for WhatsApp Business Cloud API
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → WhatsApp Business, paste your permanent System User access token + WhatsApp Business Account ID, then connect Muse — done. No Docker, no
git clone, no local server to run. You can skip the local-install steps below and jump straight to the client-wiring section.
Connect WhatsApp Business to Muse
WhatsApp Business Cloud API is Meta's hosted gateway for sending WhatsApp messages programmatically — text, templates, media, voice notes, interactive buttons, location pins. With AnythingMCP you drive all of it from Meta Muse in plain English. No SDK to glue, no JSON-by-hand for every message type.
What you can ask Muse
- "Send 'Your order has shipped — track it at https://acme.com/t/12345' to +49 151 5123 4567." Uses
whatsapp_send_text_message(only inside the 24-hour window, see below). - "Send the
order_confirmationtemplate (en_US) to +1 555 123 4567, fill in 'John' and 'ORD-9912'." Useswhatsapp_send_template_message. - "Send the invoice PDF at https://acme.com/inv/9912.pdf to my customer with caption 'Invoice 9912'." Uses
whatsapp_send_document. - "List the approved templates on my WABA, then send the welcome one in Italian to this new lead." Uses
whatsapp_list_message_templates, thenwhatsapp_send_template_message. - "Ask the customer to pick a delivery slot: morning, afternoon or evening." Uses
whatsapp_send_interactive_buttons(up to three reply buttons). - "Update our WhatsApp business profile: new address and opening hours in the description." Uses
whatsapp_update_business_profile.
What you need
- A WhatsApp Business Account (WABA) with at least one verified sending number. Meta's test number works for trying things out, but only sends to numbers you have added as testers.
- A permanent System User access token with
whatsapp_business_messaging+whatsapp_business_managementpermissions (the temporary 24h dev token works for testing but expires). - Approved message templates for anything you send outside the 24-hour window. You create them in Meta Business Suite; Meta has to approve them before they can be sent.
- AnythingMCP running locally or on cloud.anythingmcp.com (3-minute setup).
- Access to Meta Muse (available in the US and Canada).
Meta charges for WhatsApp Business messages according to its own price list, separately from AnythingMCP; see Meta's WhatsApp pricing page for your countries.
Step 1 — Get your WhatsApp Business credentials
- Open https://developers.facebook.com/ → your App → WhatsApp → API Setup. Note the WhatsApp Business Account ID (WABA ID).
- Go to Meta Business Suite → Business Settings → System Users, create a System User, assign your WABA, and Generate a New Token with both
whatsapp_business_messagingandwhatsapp_business_managementpermissions. Copy it — you can't see it again. - Make sure your sending phone number is verified in API Setup (the test number works out of the box; for production, add and verify your own).
Step 2 — Install the WhatsApp Business adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, click WhatsApp Business, and fill in:
| Field | Value |
|---|---|
WHATSAPP_ACCESS_TOKEN | the permanent System User token |
WHATSAPP_BUSINESS_ACCOUNT_ID | your WABA ID (e.g. 123456789012345) |
Click Install — the adapter is now in your catalog with 14 tools.
Step 3 — Find your phoneNumberId once
Ask Muse to call whatsapp_list_phone_numbers. It reads the numbers on the WABA you configured and returns the id of each sending number — pin that value, every send tool needs it as phoneNumberId. The connector does not pick a default number for you.
Recipients go in the to field in international format, country code first and without the +: 4915151234567 for a German mobile, 15551234567 for the US.
Step 4 — Add the connector in Muse
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Muse adds remote MCP servers as custom connectors and signs in to them with OAuth.
- In Muse, open Settings → Connectors and choose Add custom connector.
- Paste the MCP server URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. - Muse opens the AnythingMCP sign-in page: sign in and approve access.
- In a chat, ask Muse for something that needs the
WhatsApp Businesstools.
You can also set it up from a chat, on the web, in the iOS and Android apps or in WhatsApp. Send Muse this message:
Create a Custom Connector for a new remote MCP server, then connect to it:
Name: AnythingMCP
Transport: remote streamable HTTP
URL: https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID
Auth: OAuth
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Muse connects from Meta's cloud, so localhost does not work.
Available tools (14 total)
| Group | Tools |
|---|---|
| Discovery | whatsapp_list_phone_numbers, whatsapp_list_message_templates, whatsapp_get_message_template |
| Text & template | whatsapp_send_text_message, whatsapp_send_template_message |
| Media (URL or media ID) | whatsapp_send_image, whatsapp_send_audio, whatsapp_send_video, whatsapp_send_document |
| Interactive & location | whatsapp_send_location, whatsapp_send_interactive_buttons |
| Read receipts & profile | whatsapp_mark_message_as_read, whatsapp_get_business_profile, whatsapp_update_business_profile |
The 24-hour window — what your agent needs to know
WhatsApp only lets you send free-form messages (text, media, interactive, location) inside the 24 hours following the user's last inbound message to your number. Outside that window the only allowed sends are pre-approved templates — call whatsapp_send_template_message with the template name and language.
The adapter's instructions block tells Muse this rule, so when you ask "send a follow-up to that customer" days after their last reply, Muse will reach for whatsapp_send_template_message instead of free-form text.
Voice notes
Use whatsapp_send_audio with link pointing to an OGG-Opus file hosted on a public HTTPS URL. WhatsApp renders OGG-Opus as a true voice message (waveform + play button). MP3 and AMR also work but render as plain audio attachments.
Troubleshooting
- Everything worked yesterday, now every call is refused. You are probably still on the temporary access token from API Setup, which expires after 24 hours. Generate a permanent System User token and replace
WHATSAPP_ACCESS_TOKEN. - Sending fails, reading templates works. The System User token lacks
whatsapp_business_messaging, or the System User is not assigned to this WABA. Both permissions are needed:whatsapp_business_managementfor templates and numbers,whatsapp_business_messagingfor sending. - A template send is rejected. The template is not yet APPROVED, or the name or language code doesn't match exactly. Have Muse check with
whatsapp_list_message_templatesfirst. - An image or document never arrives. The
linkhas to be a public HTTPS URL that Meta's servers can download, within WhatsApp's size limits (image 5 MB, audio and video 16 MB, document 100 MB). - The recipient number is rejected. Use the international format without
+, spaces or a leading zero, for example4915151234567.
FAQ
Does this work without a verified business number? Meta's test number works for testing (only sends to numbers you've added as testers). For production sends to any recipient, your sending number must be verified and registered to your WABA.
What happens if I send free-form text outside the 24h window?
Meta returns error code 131047 ("Re-engagement message"). Use whatsapp_send_template_message instead.
Can the adapter receive inbound messages?
Not directly — Meta uses webhooks for inbound, and the AnythingMCP REST engine is outbound-only. Host a small webhook receiver next to AnythingMCP and use this connector for outbound + whatsapp_mark_message_as_read for receipts.
Is it free? AnythingMCP is open source under AGPL-3.0, so self-hosting is free, including commercial use inside your own company; AnythingMCP Cloud comes with a 7-day free trial. WhatsApp messages themselves are billed by Meta according to its pricing.
Is my data stored by AnythingMCP? Your Meta access token is stored encrypted (AES-256-GCM) in your workspace and is never shown to Muse. AnythingMCP passes each send request to Meta and the response back to Muse, and every call is recorded in your workspace's audit log. Inbound messages never reach AnythingMCP; they go to your own webhook.
Where is Muse available? Meta currently offers Muse in the US and Canada, on the web, in the iOS and Android apps and in WhatsApp.
Does Meta review this connector? No. Meta doesn't review custom connectors. Muse sees only the tools you switched on for this MCP server in AnythingMCP, and you can disconnect it anytime under Settings → Connectors.
Next steps
Was this guide helpful?