Pure Rust WhatsApp bridge — lean, single-binary, no Baileys. MCP server that proxies tool calls to the running whatsrust daemon via its HTTP API.
whatsrust exposes 22 WhatsApp bridge tools with generally consistent naming patterns (verb_noun format: send, reply, react, edit, revoke, etc.). All tools have descriptions present, though many are brief (30-80 chars). Input schemas are well-formed with proper JSON Schema types and required fields. However, parameter descriptions are inconsistent, some parameters lack explanations ('from_me' in whatsrust_react has no description; 'vcard' in whatsrust_contact is undocumented). Output schemas are not documented anywhere in the provided code. Error handling appears minimal, no recovery guidance, no error classification, and no examples of validation feedback. The tool set covers a broad WhatsApp API surface but lacks composition safeguards (e.g., no idempotency markers, no confirmation patterns for destructive operations like whatsrust_revoke). Security considerations are present (tool risks are labeled READ_ONLY, WRITE, DESTRUCTIVE) but not enforced at the MCP layer.
Archive a chat
Send a contact card
Edit a previously sent message
Get group details and members
List all joined groups
Get recent messages for a chat
Send an image (base64)
Parameter descriptions missing or incomplete for 8+ tools. 'from_me' (whatsrust_react), 'vcard' (whatsrust_contact), 'mime' (whatsrust_image) have no explanations. Rubric requires every parameter to have a description so LLMs understand what values are valid.
No output schemas documented. The rubric requires documentation of return types so LLMs know what fields to expect for chaining (e.g., whatsrust_search should return message IDs, sender JIDs, timestamps to enable follow-up calls).
Destructive operations (whatsrust_revoke, whatsrust_edit, whatsrust_send) lack confirmation or dry-run patterns. Agents can accidentally delete messages or send incorrect replies. Rubric pattern:confirmation-request recommends confirm_before_execute for irreversible operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Send a location pin
Mark a chat as read
Mute a chat indefinitely
Pin a chat to the top
Create a poll
React to a message with an emoji
Reply to a message (quote)
Delete a message for everyone
Search message history
Send a text message (optionally with @mentions and/or link preview)
Get bridge status, metrics, and connection state
Send typing indicator
Unarchive a chat
Unmute a chat
Unpin a chat
No error handling or recovery guidance visible in tool definitions. Tools lack descriptions of what happens on failure (e.g., 'User not found' or 'Invalid JID format'). Rubric requires error responses to guide LLM recovery (retryable vs. user-fixable).
JID parameter (used in 20+ tools) lacks format constraints in descriptions. JID format is critical ([email protected] vs [email protected]) but not documented. Agents may pass invalid values. Rubric requires format constraints in parameter descriptions.
Tool descriptions are uniformly brief (30-80 chars). Rubric baselines show A+ tools average 194 chars. Descriptions like 'Send a text message' lack context about when to use this tool vs. whatsrust_reply or whatsrust_image, confusing LLM selection.
whatsrust_history and whatsrust_search lack pagination context in descriptions. Unclear if results are capped, paginated, or can return thousands of messages. Rubric requires result limits documented and pagination parameters described.