An MCP server that provides tools to interact with WhatsApp messages, chats, and contacts through a local bridge
WhatsApp MCP server has 12 tools with complete input schemas and descriptions, but quality is inconsistent. All tools have verb-noun naming (search_, list_, get_, send_, download_) and descriptions (avg ~80 chars). However, descriptions lack LLM-optimized guidance on WHEN to use each tool vs. alternatives (e.g., list_messages vs. get_message_context). Output schemas are not documented, LLMs cannot plan downstream calls. Error handling is absent from descriptions. Parameter descriptions are present but generic; many lack format/constraint guidance (e.g., 'phone number with country code but no + or other symbols' is buried in send_message description, not in recipient param). No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinction. Security concern: send_message and send_file accept recipient as free-form string, no validation guidance for LLMs on format. Pagination is present (limit, page) but no total_count or next_cursor documented.
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. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risking broken tool chains.
Missing tool annotations. send_message, send_file, send_audio_message are destructive (WRITE risk) but lack destructiveHint. read-only tools lack readOnlyHint. LLMs cannot distinguish safe from risky operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 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.
Recipient parameter in send_message, send_file, send_audio_message lacks validation guidance. Description says 'phone number with country code but no + or other symbols' but this is buried in tool description, not param description. LLMs will pass invalid formats.
No error handling guidance in any tool description. LLMs have no recovery path if a send fails, a contact is not found, or media download times out.
Pagination parameters (limit, page) present but no total_count or next_cursor documented. LLMs cannot determine if more results exist or how to iterate efficiently.