MCP server for WhatsApp integration providing tools to search contacts, list messages, manage chats, and send messages via WhatsApp
Server has 9 tools with basic descriptions and parameter schemas, but significant quality gaps. All tools have descriptions (good), but most are generic and under 100 chars. Parameter schemas are present but lack depth: many parameters missing type constraints (e.g., 'tuple' for date_range in list_messages is non-standard JSON Schema). No output schemas documented. Error handling is absent, no recovery guidance, no actionable error messages. Tool naming is verb-first (good), but descriptions don't explain WHEN to use each tool or dependencies between them. The send_message tool lacks confirmation/dry-run pattern despite being destructive. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels.
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.
Get WhatsApp messages matching specified criteria with optional context.
Parameter schemas use non-standard types ('tuple' for date_range in list_messages). JSON Schema requires 'array' with items specification, not Python type hints. This breaks schema validation in strict MCP clients.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., chat_jid from list_chats needed for get_chat). Violates pattern:tool requirement.
send_message (destructive write operation) lacks confirmation/dry-run pattern and has no error guidance. No description of what happens on failure (e.g., invalid phone format, rate limit, network error). Agents cannot recover from failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Search WhatsApp contacts by name or phone number.
Send a WhatsApp message to the specified phone number.
Tool descriptions are generic and under 100 chars on average. They state WHAT but not WHEN to use or dependencies. E.g., 'Get WhatsApp chat metadata by JID' doesn't explain that you need a JID from list_chats first, or how it differs from get_direct_chat_by_contact.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). 8 tools are read-only, 1 is destructive, this metadata is missing, forcing LLMs to infer safety from descriptions alone.