waha-fast-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAHA_API_KEY | Yes | Your WAHA API key. Set WAHA_API_KEY in .env; it is passed via the X-Api-Key header and is never a tool argument. | |
| WAHA_TIMEOUT | No | Timeout used by the server when calling the WAHA HTTP API. | |
| WAHA_BASE_URL | No | Base URL of the WAHA (WhatsApp HTTP API) server. The example configuration uses http://localhost:3000. | http://localhost:3000 |
| WAHA_MCP_TRANSPORT | No | Optional MCP transport. The server defaults to stdio; set to streamable-http (or SSE) to expose HTTP, e.g. WAHA_MCP_TRANSPORT=streamable-http. | stdio |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| waha_statusA | Check WAHA connectivity and return server status and version. |
| waha_list_sessionsC | List WhatsApp sessions. Set include_stopped to True to include stopped ones. |
| waha_get_sessionB | Get one session, including its status and the linked WhatsApp account. |
| waha_get_meB | Return the WhatsApp account (id, lid, pushName) linked to a session. |
| waha_start_sessionB | Start a stopped WhatsApp session. Scan its QR code with the dashboard. |
| waha_stop_sessionB | Stop a running WhatsApp session without deleting its data. |
| waha_create_sessionC | Create a new WhatsApp session. Scan its QR code with the dashboard. |
| waha_list_chatsC | List recent chats for a session, newest first. |
| waha_get_chatB | Get details about a chat. chat_id is like '549...@c.us' or '...@g.us'. |
| waha_get_chat_messagesB | Read messages from a chat, newest first. Use the id from waha_list_chats. |
| waha_send_textC | Send a text WhatsApp message. Optionally pass reply_to as a message id. |
| waha_send_imageC | Send an image from a URL, local path, or base64 data, with optional caption. |
| waha_send_fileC | Send a document from a URL, local path, or base64 data, with optional caption. |
| waha_mark_chat_readC | Mark all messages in a chat as read. |
| waha_set_typingC | Show or hide the 'typing...' indicator in a chat. |
| waha_check_number_existsB | Check whether a phone number (digits only, with country code) has WhatsApp. |
| waha_get_profile_pictureC | Get the profile picture URL for a contact or group. |
| waha_take_screenshotA | Capture the current WhatsApp Web screen and return the saved file path. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| waha_skill | Return the WAHA operational guide and safety rules from SKILL.md. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools target a distinct resource+action (sessions, chats, messages, media). The only mild overlaps are waha_get_session vs waha_get_me (the former already reports the linked account) and waha_send_image vs waha_send_file, which differ only by media type and are well described.
Every tool uses the waha_ prefix followed by a consistent snake_case verb_noun pattern (list_sessions, get_chat, send_text, mark_chat_read). No mixed conventions or casing deviations.
18 tools is at the upper edge but each maps to a concrete WhatsApp operation across sessions, chats, messages, and contacts. Nothing is clearly redundant, though a couple of convenience tools (waha_get_me, waha_take_screenshot) could be folded into existing calls.
Session lifecycle (create/start/stop/list/get), chat reading, message sending across three media types, and presence/contact lookups are covered. Gaps remain: no session delete/logout despite stop hinting data is retained, and no message deletion or edit, which agents may need for full lifecycle control.