MCP server for WhatsApp integration using Whatsmeow library, providing tools to search contacts, list messages, manage chats, send messages and files, and download media
Server has 12 tools with complete input schemas and descriptions present for all tools and parameters. Naming follows verb_noun convention (search_, list_, get_, send_, download_). However, descriptions are generic and lack LLM-optimization guidance. Output schemas are not documented. Error handling is absent from tool definitions. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification (8 READ_ONLY, 4 WRITE). Parameter descriptions lack format constraints, ranges, and dependency documentation. No confirmation/dry-run pattern for destructive operations (send_message, send_file, send_audio_message, download_media). Missing guidance on when to use similar tools (e.g., get_chat vs get_direct_chat_by_contact).
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 tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk stratification. 8 tools are READ_ONLY; 4 are WRITE operations. LLMs cannot distinguish safe from destructive calls without annotations.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., chat_jid, message_id) without knowing response structure.
Destructive operations (send_message, send_file, send_audio_message) lack confirmation/dry-run pattern. Agents can accidentally send messages without verification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
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.
Parameter descriptions lack format constraints and ranges. E.g., 'limit' has no min/max; 'page' has no bounds; recipient format is described in prose but not validated. LLMs cannot self-correct invalid inputs.
Similar tools lack disambiguation guidance. get_chat, get_direct_chat_by_contact, and get_contact_chats all retrieve chat data but with different inputs. Descriptions do not explain when to use each.