MCP server for WhatsApp messaging integration with support for sending messages, files, and audio; searching contacts; and retrieving chat history with message context.
The server defines 12 WhatsApp tools with reasonable naming and mostly complete schemas. All tools have descriptions (10 are 50+ chars), and parameters have types and descriptions. However, critical gaps exist: (1) No output schemas are documented, callers don't know what fields to expect from responses, forcing LLMs to guess. (2) No input validation or error recovery guidance, tools will fail silently or with generic errors. (3) No tool annotations (readOnlyHint/destructiveHint) to signal side effects to agents. (4) Pagination is incomplete, list_messages and list_chats have limit/page params but no total_count or next_cursor guidance. (5) No permission/scope documentation for sensitive write operations (send_message, send_file). The server is functional for basic read/write but lacks production-grade robustness.
Download media from a WhatsApp message and get the local file path.
Get WhatsApp chat metadata by JID.
Get all WhatsApp chats involving the contact.
Get WhatsApp chat metadata by sender phone number.
Get most recent WhatsApp message involving the contact.
Get context around a specific WhatsApp message.
Get WhatsApp chats matching specified criteria.
No output schemas documented. Callers cannot infer response structure, LLMs must guess what fields are returned, risking field mapping errors and forcing unnecessary discovery calls.
No error recovery guidance. Tools will fail (e.g., invalid recipient format, file not found, network timeout) but descriptions do not tell LLMs what to do next or what errors are retryable.
Destructive operations lack confirmation/dry-run pattern. send_message and send_file modify state irreversibly but have no confirmation step, allowing agents to accidentally send wrong messages or files.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Get WhatsApp messages matching specified criteria with optional context.
Search WhatsApp contacts by name or phone number.
Send any audio file as a WhatsApp audio message to the specified recipient. For group messages use the JID. If it errors due to ffmpeg not being installed, use send_file instead.
Send a file such as a picture, raw audio, video or document via WhatsApp to the specified recipient. For group messages use the JID.
Send a WhatsApp message to a person or group. For group chats use the JID.
No tool annotations (readOnlyHint/destructiveHint). Agents cannot distinguish read-only tools from destructive ones without manual reasoning. Six write tools lack destructiveHint.
Pagination incomplete. list_messages and list_chats accept limit/page but do not document total_count or next_cursor in response, agents cannot determine if more results exist or how to fetch them efficiently.
Parameter format constraints missing. send_message and send_file expect recipient as 'phone number with country code but no + or other symbols' or 'JID (e.g. 123456789@s.whatsapp.net)' but descriptions lack regex pattern or enum to make valid formats machine-parseable.
No scope/permission documentation. Write tools (send_message, send_file, send_audio_message) do not declare what permissions they require, blocking least-privilege configuration and audit trails.
Parameter naming mismatch risk. list_messages filters by 'sender_phone_number' and 'chat_jid', but send_message uses 'recipient', LLMs may conflate these and pass wrong identifiers.
No field chaining documentation. If list_chats returns a chat_jid, downstream tools should accept it without extra lookup, but no output schema confirms all required fields are present.