Summary
Send WhatsApp messages, templates, media and buttons from Copilot through Meta's official Cloud API.
Guided setup
Connect WhatsApp Business Cloud API to Microsoft Copilot in 2 minutes
Start a free trial on AnythingMCP Cloud, connect WhatsApp Business Cloud API in the guided setup, then add your MCP URL to Microsoft Copilot. No code and no server to run.
No credit card · 7-day trial · Self-host alternative available
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 Copilot — 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 Copilot
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 Microsoft Copilot in plain English. No SDK to glue, no JSON-by-hand for every message type.
What you can ask Copilot
- "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).
- A work account with access to Copilot Studio (to add the connector to Microsoft Copilot).
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 Copilot 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 Microsoft Copilot
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.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
WhatsApp Businesstools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft'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 Copilot this rule, so when you ask "send a follow-up to that customer" days after their last reply, Copilot 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 Copilot 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 Copilot. AnythingMCP passes each send request to Meta and the response back to Copilot, and every call is recorded in your workspace's audit log. Inbound messages never reach AnythingMCP; they go to your own webhook.
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?