First MCP server for WhatsApp via Baileys. Plug Claude/Cursor/GPT agents into WhatsApp through Model Context Protocol.
baileys-mcp has 8 well-named tools with consistent verb_noun patterns (send_text, list_groups, parse_bid). All tools have descriptions (avg 95 chars) and input schemas with type definitions. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present and correct. However, parameter descriptions are sparse or missing context. send_image accepts both imageUrl and imageBase64 but lacks guidance on mutual exclusivity. list_messages and resolve_jid lack output schema documentation. Error handling is minimal, no recovery guidance or actionable error messages visible in handlers. Missing pagination details for list_groups and list_messages despite caching architecture.
Get QR code for WhatsApp authentication (if not already paired).
Get WhatsApp connection status and uptime.
List all WhatsApp groups the account is participating in.
List recent messages from a chat (from in-memory cache).
Parse bid amounts from South African auction text (pure function).
Resolve JID to canonical form with LID/PN (uses baileys-antiban if available).
Send an image via WhatsApp with optional caption.
Output schemas undocumented. list_groups, list_messages, connection_status, auth_qr, resolve_jid lack documented return types. LLMs cannot plan downstream tool calls or extract required fields without knowing response structure.
send_image accepts both imageUrl and imageBase64 but lacks mutual exclusivity guidance. Parameter descriptions do not explain when to use each or what happens if both are provided.
No pagination or limit enforcement documented for list_groups and list_messages. Despite in-memory cache, no guidance on result caps, pagination tokens, or total counts. Large result sets risk context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2025-06-18+ | v2 |
Send a WhatsApp text message to a phone number or JID.
Error handling invisible in source. No recovery guidance, error classification, or actionable messages visible in tool handlers. Agents cannot distinguish retryable vs fatal failures.
parse_bid currencyHint parameter lacks enum constraint. Description says 'Currency code (default: ZAR)' but does not enumerate valid codes (ZAR, USD, EUR, etc.). LLMs may hallucinate invalid currency codes.