MCP server for WhatsApp integration via Baileys library, with FastMCP SSE server exposing tools for messaging, contacts, and chat management
WhatsApp MCP server shows moderate definition quality with significant gaps. All 8 tools have names following verb_noun conventions and basic descriptions, but descriptions are inconsistent in depth and parameter documentation is uneven. Schema definitions are present for most tools but lack comprehensive constraint documentation. The server demonstrates basic functionality but falls short of production-grade tool documentation standards. Average tool score: 52/100.
Initialize WhatsApp connection.
Get chat conversations list. Args: limit: Max results (default 50) offset: Pagination offset
Get contacts list. Args: search: Filter by name/phone (optional) limit: Max results (default 100)
Get messages from a chat or search across all chats. Args: chat_jid: Specific chat JID (optional) search: Search term (optional) limit: Max results (default 50, max 100) offset: Pagination offset
Check WhatsApp connection state.
Search messages across all chats. Args: query: Search term limit: Max results (default 20)
Minimal tool descriptions lack rationale and prerequisites. 'Check WhatsApp connection state' and 'Initialize WhatsApp connection' do not explain WHEN to use each tool, what state transitions are possible, or dependencies between them (e.g., must connect_whatsapp succeed before send_whatsapp_message works).
Parameter descriptions lack constraint information. 'phone' parameter says 'Phone with country code, no +' but does not specify format validation rules, character limits, or examples of valid vs invalid input. LLMs cannot infer these constraints from text alone.
No output schema documentation visible. Tools like get_whatsapp_messages and get_whatsapp_contacts return results but lack documented field names, types, and structure. LLMs cannot plan downstream tool calls or extract correct data without schema clarity.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Send message to phone number. Args: phone: Phone with country code, no + (e.g., "14155551234") message: Text to send
Send message to JID from contacts/chats. Args: jid: WhatsApp JID (e.g., "14155551234@s.whatsapp.net") message: Text to send
Pagination parameters (limit, offset) present but limits and defaults not explicitly stated in descriptions. No guidance on max limits or optimal page sizes. get_whatsapp_messages says 'default 50, max 100' in docstring but parameter descriptions do not repeat this constraint.
No error handling documentation. Tools do not document what errors can occur, why, or how to recover. E.g., what happens if connect_whatsapp fails? Is it retryable? Must the user scan a QR code? No guidance provided.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in schema. send_whatsapp_message is clearly destructive (side effect: message sent), but tool definition does not declare this. LLMs cannot distinguish safe from risky operations without explicit hints.
Parameter descriptions use informal examples ('e.g. "14155551234"') instead of formal constraints (regex pattern, length bounds). LLMs may treat examples as the only valid format rather than adapting to user context.