WAHA MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAHA_URL | No | The URL of your running WAHA (WhatsApp HTTP API) instance. Defaults to http://localhost:3001. | http://localhost:3001 |
| WAHA_API_KEY | Yes | API key generated from your WAHA dashboard for authentication. | |
| USER_WHATSAPP_CHAT_ID | No | Your WhatsApp chat ID (e.g., 1234567890@c.us) used for the 'ask_user_via_whatsapp' tool during autonomous development workflows. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| waha_list_sessionsB | List all WhatsApp sessions and their statuses |
| waha_get_sessionB | Get detailed info about a specific WhatsApp session |
| waha_create_sessionC | Create a new WhatsApp session |
| waha_start_sessionC | Start a stopped WhatsApp session |
| waha_stop_sessionC | Stop a running WhatsApp session |
| waha_restart_sessionB | Restart a WhatsApp session |
| waha_delete_sessionC | Delete a WhatsApp session permanently |
| waha_logout_sessionA | Logout from a WhatsApp session (keeps session but disconnects WhatsApp account) |
| waha_get_qr_codeB | Get QR code for WhatsApp authentication. Returns the raw QR string value that can be used to generate a scannable QR code. |
| waha_request_pairing_codeB | Request a pairing code for phone number authentication (alternative to QR code). The user will receive a code on their phone to enter in WhatsApp. |
| waha_check_auth_statusB | Check the authentication status of a WhatsApp session |
| waha_send_textB | Send a text message to a WhatsApp chat |
| waha_send_imageB | Send an image to a WhatsApp chat (from local file OR URL) |
| waha_send_videoC | Send a video to a WhatsApp chat (from local file OR URL) |
| waha_send_voiceC | Send a voice message to a WhatsApp chat (from local file OR URL) |
| waha_send_fileC | Send a document/file to a WhatsApp chat (from local file OR URL) |
| waha_send_locationC | Send a location to a WhatsApp chat |
| waha_send_contactC | Send contact card(s) (vCard) to a WhatsApp chat |
| waha_send_pollC | Send a poll to a WhatsApp chat |
| waha_react_to_messageC | React to a message with an emoji |
| waha_get_messagesC | Get messages from a WhatsApp chat with optional filters |
| waha_delete_messageC | Delete a message from a WhatsApp chat |
| waha_edit_messageC | Edit a previously sent message |
| waha_mark_as_readC | Mark messages in a chat as read (send seen) |
| waha_star_messageC | Star or unstar a message |
| waha_forward_messageC | Forward a message to another chat |
| waha_list_chatsB | List all chats in a WhatsApp session |
| waha_get_chatC | Get detailed info about a specific chat |
| waha_archive_chatC | Archive or unarchive a chat |
| waha_pin_chatC | Pin or unpin a chat |
| waha_mute_chatC | Mute or unmute a chat |
| waha_delete_chatC | Delete a chat entirely |
| waha_clear_chatC | Clear all messages in a chat |
| waha_get_contactsC | Get all contacts from a WhatsApp session |
| waha_get_contactC | Get info about a specific contact |
| waha_check_number_existsB | Check if a phone number is registered on WhatsApp |
| waha_block_contactC | Block or unblock a contact |
| waha_get_profile_pictureB | Get the profile picture URL of a contact or group |
| waha_create_groupC | Create a new WhatsApp group |
| waha_list_groupsC | List all WhatsApp groups |
| waha_get_groupC | Get detailed info about a specific group |
| waha_get_group_participantsB | List all participants in a group |
| waha_add_group_participantsC | Add participants to a group |
| waha_remove_group_participantsC | Remove participants from a group |
| waha_promote_group_participantC | Promote participant(s) to group admin |
| waha_demote_group_participantC | Demote admin(s) to regular participant in a group |
| waha_update_group_subjectC | Update the name/subject of a group |
| waha_update_group_descriptionC | Update the description of a group |
| waha_update_group_pictureC | Set the profile picture of a group |
| waha_leave_groupC | Leave a WhatsApp group |
| waha_get_group_invite_codeB | Get the invite link/code for a group |
| waha_revoke_group_inviteC | Revoke the current invite link and generate a new one |
| waha_set_presenceB | Set your presence status (online/offline) |
| waha_get_presenceB | Get presence status of a contact (online/offline/typing) |
| waha_start_typingC | Show typing indicator in a chat (simulates real user behavior) |
| waha_stop_typingC | Stop showing typing indicator in a chat |
| waha_send_statusC | Post a text status/story update |
| waha_get_labelsC | Get all labels/categories in a WhatsApp session |
| waha_create_labelC | Create a new label |
| waha_delete_labelC | Delete a label |
| waha_add_label_to_chatC | Add a label to a chat |
| waha_remove_label_from_chatC | Remove a label from a chat |
| ask_user_via_whatsappA | 🤖 IMPORTANT FOR AI ASSISTANTS: Use this tool instead of stopping work when you need user input! WHEN TO USE:
DO NOT:
HOW IT WORKS:
EXAMPLE USAGE: const answer = await ask_user_via_whatsapp({ question: "Should I use REST or GraphQL for this API?", chatId: "1234567890@c.us", timeoutMinutes: 30 }); // Parse answer and continue working USER EXPERIENCE: User gets WhatsApp notification → replies from phone → you continue instantly This enables truly autonomous AI development! |
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 63 tools
Most tools have distinct purposes targeting specific WhatsApp actions like sending messages, managing groups, or handling sessions. However, some overlap exists, such as waha_send_text, waha_send_image, and waha_send_video, which could be confused as variants of a general send function, though their descriptions clarify media types. Overall, the set is well-differentiated with minimal ambiguity.
All tools follow a consistent waha_verb_noun naming pattern, using snake_case uniformly. This predictability makes it easy for agents to understand and navigate the toolset, with no deviations in style or structure across the 63 tools.
With 63 tools, the count is excessive for a WhatsApp API server, likely overwhelming agents and causing decision paralysis. A more focused set of 15-25 tools could cover the same functionality without redundancy, such as consolidating send operations into fewer tools. This high number feels heavy and unnecessary for the domain.
The toolset provides comprehensive coverage for WhatsApp operations, including messaging (text, media, polls), group management (create, update, participants), session handling (start, stop, QR codes), and chat features (archive, mute, labels). No obvious gaps exist; it supports full CRUD and lifecycle management for the domain.