An MCP server that bridges WhatsApp messaging via Baileys, enabling Mantrin to send and receive WhatsApp messages
5 tools with basic schemas and descriptions, but significant gaps. All tools have input schemas with type definitions and descriptions present. However, descriptions are minimal (10-50 chars), parameter descriptions lack detail on constraints/formats, and output schemas are completely undocumented. No error handling guidance, no recovery paths. Tools lack annotations (readOnlyHint/destructiveHint). Naming is verb-based but generic ('x_post', 'x_read_*', 'x_send_dm'). No pagination support despite read tools. Confirmation gate exists for writes but no structured error responses.
Post a new tweet to X (Twitter) from the user's account.
Read recent direct messages (capped). Read-only.
Read recent tweets that mention the user (capped). Read-only.
Reply to a specific tweet (by its id) from the user's account.
Send a direct message to a user (by their numeric X user id).
Output schemas completely undocumented. Tools return free-text strings (e.g. 'Posted (tweet id {tid})') with no structured schema. LLMs cannot parse results reliably or chain to downstream tools.
Parameter descriptions lack constraints. 'limit' param has no min/max bounds; 'text' param says '<=280 chars' but no validation shown; 'participant_id' and 'tweet_id' lack format guidance (numeric string? UUID?). LLMs cannot infer valid ranges.
No error handling guidance. Exception catch-all returns '(x error) {e}' with no recovery hints. LLM cannot distinguish retryable (rate limit, timeout) from fatal (auth failure, invalid tweet_id) errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Tool descriptions too brief (10-50 chars). 'Read recent tweets that mention the user (capped)' lacks context on when to use vs other tools, what 'capped' means, or what fields are returned. Baseline is 194 chars.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot infer which tools are safe to retry or have side effects. Confirmation gate exists but not declared in schema.