whatsapp-business-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | HTTP transport bind address. | 0.0.0.0 |
| PORT | No | HTTP transport port. | 3000 |
| MCP_HTTP_PATH | No | HTTP transport endpoint path. | /mcp |
| MCP_TRANSPORT | No | Transport mode: stdio or http. | stdio |
| WHATSAPP_TOKEN | Yes | Meta Graph API access token (system user token recommended). | |
| MCP_BEARER_TOKEN | No | If set, HTTP requests must send Authorization: Bearer <token>. | |
| WHATSAPP_API_VERSION | No | Graph API version. | v23.0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| wa_get_business_accountsA | DISCOVERY — START HERE. List all WhatsApp Business Accounts (WABAs) owned by a Meta Business. This is the entry
point for almost every other tool: most calls take a Typical flow:
Resources |
| wa_get_phone_numbersA | List phone numbers registered to a WhatsApp Business Account (WABA). Use this to discover the Also returns quality_rating (GREEN/YELLOW/RED) and messaging status, useful for diagnosing delivery problems. |
| wa_get_templatesA | List message templates for a WhatsApp Business Account (WABA), with optional filters. When to use: discovery before sending (wa_send_template requires an APPROVED template), auditing template inventory, or verifying review status after wa_create_template. Filters are applied server-side (status, name) or client-side (language). Use pagination
via Returns: { count, templates[], has_more, next_cursor? } where each template includes name, language, status, category and component definitions. |
| wa_create_templateA | Create a new message template in a WABA. Templates go through Meta review before they can be sent. When to use: setting up a new outbound notification, marketing or authentication message type. Inputs:
Returns: the new template's ID. Status starts as PENDING; poll wa_get_templates for review result. |
| wa_delete_templateA | Delete a message template from a WABA by name. WARNING: deletes ALL languages of that template. When to use: removing obsolete or rejected templates. Cannot be undone. Note: deletion is irreversible. Confirm with the user before invoking. |
| wa_send_templateA | Send a pre-approved template message to a recipient on WhatsApp. When to use: outbound notifications, marketing or utility messages where the recipient is outside the 24-hour customer service window, or any first-contact message. Requirements:
Returns: the WhatsApp message ID (wamid) on success, which can be used with wa_get_message_status. Limitations: templates with header media require uploaded media handles; delivery/read status is delivered asynchronously via webhooks — this tool returns only the accepted message ID. |
| wa_get_message_statusA | Look up information about a previously sent WhatsApp message by its ID. Use this after wa_send_template to confirm Graph API received the message. Note that WhatsApp delivery/read status (sent → delivered → read) is pushed asynchronously via webhooks; the Graph API does not expose a polling endpoint for those transitions. This tool retrieves the message resource directly and surfaces whatever Meta returns. Inputs: the wamid returned by wa_send_template. |
| wa_api_callA | Escape hatch for WhatsApp Business / Meta Graph endpoints that don't have a dedicated tool yet. Restricted: only paths matching a curated allowlist of WhatsApp Business resources are accepted (message_templates, phone_numbers, messages, media, business_profile, analytics, subscribed_apps, owned_whatsapp_business_accounts, single-ID reads, wamid lookups). Anything else is rejected. Prefer the typed tools when one matches — they validate inputs and surface clearer errors. Inputs:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct resource and action: discovery (business accounts, phone numbers, templates), mutation (create/delete/send), and status lookup. No two tools overlap in purpose; wa_api_call is clearly an escape hatch for uncovered endpoints.
All tool names follow a consistent 'wa_verb_noun' pattern (e.g., wa_get_templates, wa_create_template, wa_send_template). The only outlier, wa_api_call, still fits the verb_noun style with 'call' as the verb. Naming is uniform and predictable.
8 tools is a well-scoped number for a WhatsApp Business server. Each tool earns its place in the primary workflow—discovery, template management, sending, and status checking—without unnecessary bloat or obvious missing essentials.
The server covers the core lifecycle: discover accounts/numbers/templates, create/delete templates, send messages, and check message status. Missing an update-template operation, but the wa_api_call escape hatch provides a workaround, so the gap is minor.