FastAPI-based server for sending messages via Telegram, Gmail, and WhatsApp
This server has critical definition quality failures across all three tools. All tools use a single generic 'command' string parameter instead of structured, typed inputs. Descriptions are minimal (10-20 chars) and lack context on WHEN to use each tool or what it returns. No output schemas are documented. No error handling guidance. The tool interface does not match the chat data model, users say 'Send a message to Jack' but the tool requires a 'telegram:' prefixed command string, forcing agents to construct low-level protocol strings. All three tools are WRITE operations with no confirmation/dry-run pattern. No input validation, no rate limiting, no audit logging.
Send an email via Gmail
Send a message to Telegram
Send a message via WhatsApp
All tools accept a single generic 'command' string parameter with no type validation, enum constraints, or structured schema. LLMs must construct low-level protocol strings ('telegram:hello') instead of natural parameters (recipient, message_text). This violates the chat-data-model pattern and forces agents to reason about implementation details.
Tool descriptions are 10-20 characters and provide no context on WHEN to use each tool, WHAT it returns, or HOW to construct the command parameter. Current descriptions fail to guide LLM tool selection.
No output schemas documented. Tools return bare strings ('WhatsApp message sent.', 'Email sent.') with no structured fields. LLMs cannot extract message IDs, delivery status, or timestamps for downstream operations. Violates response-shaper pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 28 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If send_telegram fails (invalid token, chat not found), the tool returns a bare string 'Failed' with no actionable next step. LLM cannot determine if the error is retryable, user-fixable, or fatal.
Credentials (TELEGRAM_BOT_TOKEN, TWILIO_ACCOUNT_SID, GMAIL token.json) are loaded server-side but no audit logging, rate limiting, or permission gates exist. Destructive WRITE operations (send_email, send_telegram, send_whatsapp) have no confirmation step or dry-run mode. An agent in a retry loop could spam users with duplicate messages.