WhatsApp Business MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| META_APP_ID | No | Your Meta app ID (optional, for media uploads) | |
| META_WABA_ID | Yes | Your WhatsApp Business Account ID | |
| META_API_VERSION | No | API version (defaults to v24.0) | v24.0 |
| META_ACCESS_TOKEN | Yes | Your Meta access token | |
| META_PHONE_NUMBER_ID | Yes | Your WhatsApp phone number ID |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| validate_templateA | Validate a WhatsApp template against Meta's rules before submitting. Use this to check for errors before creating a template. Args: name: Template name (lowercase, underscores, starts with letter) category: MARKETING or UTILITY language: Language code (e.g. "en", "en_US", "hi") components: List of component dicts (HEADER, BODY, FOOTER, BUTTONS) template_type: TEXT, IMAGE, VIDEO, DOCUMENT, CAROUSEL, CATALOG, etc. is_lto: True if this is a Limited Time Offer template Returns: Validation result with any errors found. |
| create_templateA | Create and submit a WhatsApp template to Meta for approval. The template will go through Meta's review process. Check status with check_template_status after submission. Args: name: Template name (lowercase, underscores, starts with letter, max 512) category: MARKETING or UTILITY language: Language code (e.g. "en", "en_US", "hi") components: List of component dicts. Each has a "type" (HEADER, BODY, FOOTER, BUTTONS) and type-specific fields. Example: [ {"type": "HEADER", "format": "TEXT", "text": "Hello {{1}}", "example": {"header_text": ["John"]}}, {"type": "BODY", "text": "Your order {{1}} is {{2}}.", "example": {"body_text": [["ORD-123", "confirmed"]]}}, {"type": "FOOTER", "text": "Reply STOP to opt out"}, {"type": "BUTTONS", "buttons": [ {"type": "QUICK_REPLY", "text": "Track Order"}, {"type": "URL", "text": "View Details", "url": "https://example.com/order/{{1}}", "example": ["https://example.com/order/123"]} ]} ] Returns: JSON with template ID and status on success, or error details. |
| list_templatesA | List WhatsApp message templates. Args: limit: Max templates to return (1-100, default 20) after: Pagination cursor for next page name: Filter by template name (exact match) status: Filter by status: APPROVED, PENDING, REJECTED, PAUSED, DISABLED category: Filter by category: MARKETING, UTILITY Returns: JSON with list of templates and pagination info. |
| get_template_detailA | Get full details of a WhatsApp template by name or ID. Provide either template_name or template_id (not both). Args: template_name: Template name to look up template_id: Meta template ID to look up directly Returns: JSON with full template details including components. |
| check_template_statusA | Check the approval status of a WhatsApp template. Use this after creating a template to see if Meta approved or rejected it. Args: template_name: Template name to check template_id: Meta template ID to check directly Returns: JSON with current status (APPROVED, PENDING, REJECTED, etc.) |
| delete_templateA | Delete a WhatsApp template by name. WARNING: This permanently deletes ALL language variants of the template. Args: template_name: Name of the template to delete Returns: JSON confirming deletion. |
| send_template_messageA | Send an approved template message to a phone number. Args: to: Recipient phone number with country code (e.g. "+919876543210") template_name: Name of the approved template to send language: Language code matching the template (default "en") components: Optional list of component parameter dicts for dynamic values. Example for a template with header image and body params: [ {"type": "header", "parameters": [ {"type": "image", "image": {"link": "https://example.com/img.jpg"}} ]}, {"type": "body", "parameters": [ {"type": "text", "text": "John"}, {"type": "text", "text": "ORD-123"} ]} ] Returns: JSON with message ID on success. |
| send_bulk_template_messagesA | Send an approved template message to multiple phone numbers. Messages are sent sequentially (one API call per recipient). Each result is tracked individually. Args: to_list: List of phone numbers with country code template_name: Name of the approved template language: Language code (default "en") components: Optional parameter components (same for all recipients) Returns: JSON with per-recipient results (successes and failures). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nakulben/whatsapp-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server