WAHA WhatsApp MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAHA_API_KEY | Yes | Backend API key for authentication | |
| WAHA_API_URL | No | Backend API base URL (no trailing slash) | http://localhost:8200/api |
| WAHA_SESSION | No | WAHA session name | default |
| WAHA_SEND_DELAY_MS | No | Minimum delay (ms) between outbound messages | 1000 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whatsapp_session_statusA | Check if the WhatsApp session is connected and working. Returns the session status (WORKING, STOPPED, etc.), the connected phone number, and display name. Use this to verify connectivity before sending messages. No parameters required. Returns:
|
| whatsapp_account_infoA | Get information about the authenticated WhatsApp account. Returns the phone number, display name, and WhatsApp ID of the connected account. Use this to verify which account is connected. No parameters required. |
| whatsapp_list_chatsA | List recent WhatsApp chats with last message preview and profile pictures. Returns chat IDs, names, profile picture URLs, and a preview of the last message. Use the chat ID from results to read messages with whatsapp_read_messages. Args:
Returns array of chats with:
|
| whatsapp_read_messagesA | Read messages from a specific WhatsApp chat. Returns messages with sender, text content, timestamp, and message ID. Use the message ID from results for whatsapp_react or reply_to in whatsapp_send_text. Powered by Message Store — persistent full history with full-text search and sender filtering. Args:
Returns:
|
| whatsapp_send_textA | Send a text message to a contact (person or group). CORE tier supports text messages only (no images, video, audio, or documents). A rate limit delay is enforced between sends to avoid WhatsApp detection. Args:
Returns:
|
| whatsapp_reactA | React to a WhatsApp message with an emoji. Use an empty string for the reaction to remove an existing reaction. Args:
Returns confirmation of the reaction. |
| whatsapp_edit_messageA | Edit a previously sent text message. Only works on messages you sent (fromMe=true). WhatsApp shows an "edited" label on the message after editing. Args:
Returns confirmation with the edited message ID. |
| whatsapp_delete_messageA | Delete (unsend) a message from a contact's chat. Removes the message for everyone. WhatsApp shows "This message was deleted" in its place. Args:
Returns confirmation of deletion. |
| whatsapp_forward_messageA | Forward a message from one chat to another contact. The forwarded message shows a "Forwarded" label in WhatsApp and preserves the original sender attribution. Args:
Returns confirmation with forwarded message ID. |
| whatsapp_check_numberA | Check if a phone number is registered on WhatsApp. Use this before sending a message to a number not yet in your address book. Args:
Returns:
|
| whatsapp_list_contactsA | Unified address book — lists people you DM and groups you're in. Use the returned 'id' as contactId in any chat-targeting tool (send_text, read_messages, etc.):
Args:
Returns array of contacts with:
|
| whatsapp_get_contactA | Detail for a single contact — person OR group, by stable id. Returns shape depends on kind:
Args:
|
| whatsapp_download_mediaA | Download media (image, audio, video, document) from a WhatsApp message. Fetches the media attached to a specific message and returns it directly:
Use whatsapp_read_messages first to find messages with hasMedia=true, then pass the contactId and messageId here. Note: Old media (weeks+) may no longer be available on WhatsApp's servers. Args:
Returns:
|
| whatsapp_transcribe_audioA | Transcribe a WhatsApp voice message or audio to text. Server-side transcription via Speaches (Whisper). Optionally replies to the original message with the transcription text. Args:
Returns:
|
| whatsapp_search_messagesA | Search across all WhatsApp message history. Supports full-text search, date ranges, sender filtering, and message type filtering. Args:
Returns:
Note: sender_name may be null for some messages. |
| whatsapp_contact_graphA | Get social graph for a WhatsApp contact — shared groups, mutual connections. Args:
Returns:
|
| whatsapp_chat_summaryA | Get a readable summary of recent messages in a WhatsApp chat, including sender names and timestamps. This is optimized for readability — use whatsapp_read_messages for structured data with filtering, or whatsapp_search_messages for full-text search. Args:
Returns:
|
| whatsapp_statsA | Overview dashboard of WhatsApp activity — message totals, top chats, top contacts, and group/DM breakdown. No arguments needed. Returns:
|
| whatsapp_import_chatA | Import a WhatsApp chat export file (ZIP or TXT) into the message store. Use this to backfill historical messages from WhatsApp's "Export Chat" feature. Only inserts new messages — won't overwrite or duplicate existing data. The file should be a WhatsApp chat export:
The chat name is extracted from the filename (e.g., "Conversa do WhatsApp com NAME.zip"). You can override it with the chatName parameter. Messages are matched to existing contacts by name. If a contact doesn't exist, it's created. If the chat already exists in the store (by name), messages are added to it. Args:
Returns:
|
| whatsapp_auto_reply_enableA | Enable auto-reply with audio transcription for a contact. When the contact sends a voice note, the transcription is sent back as a quoted reply automatically. DM only — voice notes in groups are never auto-replied even if a member is flagged. The flag is contact/phone-scoped, so it follows the contact across WhatsApp's @c.us → @lid JID transitions automatically — no need to re-flag when WhatsApp migrates the JID. Args:
Returns:
|
| whatsapp_auto_reply_disableA | Disable auto-reply with audio transcription for a contact. Args:
Returns:
|
| whatsapp_auto_reply_listA | List every contact that currently has auto-reply transcription enabled, with display names from Google Contacts (when matched) or WhatsApp push name fallback. Returns:
|
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/Maheidem/waha-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server