MCP server for sending complaint emails to relevant authorities with optional GPT-cartoonized image attachments
Three tools with identical schemas and minimal descriptions. Descriptions are 80-90 chars, below the 194-char baseline for production tools. No output schemas documented. Parameter descriptions are generic ('where the issue is located', 'details of the issue') without actionable constraints. No error handling guidance. Tools are well-named (verb_noun pattern: send_*_complaint) but lack the depth needed for reliable LLM selection and execution.
Send an electricity complaint email to the relevant authority, with optional GPT-cartoonized attachment.
Send a road complaint email to the relevant authority.
Send a water complaint email to the relevant authority, with optional GPT-cartoonized attachment.
Parameter descriptions missing or trivial. 'location' described as 'where the issue is located' provides no format guidance, validation rules, or examples. LLMs cannot infer whether to pass 'Room 42, Building A' or 'latitude,longitude' or 'street address'.
No output schema documented. Tools send emails with optional cartoonized attachments, but the response structure is not specified. LLMs cannot plan downstream actions or extract confirmation IDs.
No error handling guidance. If email send fails, SMTP auth fails, or image cartoonization fails, the tool provides no recovery hints. LLMs cannot distinguish retryable vs fatal errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Tool descriptions (80-90 chars) are below production baseline (194 chars). They do not explain WHEN to use each tool (electricity vs road vs water distinction is unclear), WHAT happens on success, or WHAT prerequisites exist (e.g., 'Requires SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD env vars').
Optional parameters (reporter_email, image_path, reference_image_path, humor_scene_hint) lack guidance on defaults and side effects. If image_path is omitted, does the tool skip cartoonization or fail? If reference_image_path is provided without image_path, what happens?