MCP server for handling email operations including reading, searching, and sending emails
Email MCP has 3 tools with basic definitions but significant quality gaps. All tools have descriptions (10-50 chars, below the 50-200 char baseline for LLM optimization) and visible input schemas with types. However, parameter descriptions are minimal or missing context. No output schemas documented. Error handling returns generic strings without recovery guidance. Tools lack idempotency hints and confirmation patterns for destructive operations (send_email). No tool annotations present. Naming is clear (verb_noun pattern) but descriptions don't explain WHEN to use each tool or dependencies between them.
Get recent emails from specified folder.
Search emails in specified folder.
Send an email to a specified recipient.
Descriptions are too short (10-50 chars vs. 50-200 char baseline). 'Get recent emails from specified folder' lacks context on when to use vs. search_emails, what data is returned, or prerequisites.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. Tools return plain strings; format_email_message output structure is not declared.
send_email_message lacks confirmation/dry-run pattern. Irreversible operation (sends email) with no undo capability or pre-execution confirmation. Agents can accidentally send duplicate emails on retry.
Error handling returns generic strings ('Failed to connect...', 'Error reading emails: {str(e)}') without recovery guidance. LLMs cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). send_email_message is destructive but unmarked; get_recent_emails and search_emails are read-only but unmarked. Agents cannot infer safety properties.