MCP server for mailcomb: four read tools over stdio, dispatched through ReadService. Provides email search, retrieval, and write capabilities with audit logging.
Mailcomb has 6 tools with clear verb-noun naming (search, get_message, list_labels, send_message, add_label, remove_label). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas are present with typed parameters and descriptions. However, output schemas are not documented in the source, parameter descriptions lack detail on constraints/formats, and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Composition is sound, tools are single-responsibility and chainable (e.g., search → get_message → add_label). Missing: enum constraints on parameters, pagination details for search results, and recovery guidance in error cases.
Add a label to an email message
Retrieve a specific email message by ID with full content and attachments
List all available Gmail labels for the authenticated account
Remove a label from an email message
Search emails in the Meilisearch index with full-text and field-specific queries
Send an email message with audit logging and rate limiting
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., does search return message_id for get_message chaining?). Baseline: 100% of A+ tools document return types.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications (READ_ONLY vs WRITE). Agents cannot distinguish safe from destructive operations without explicit hints.
Parameter descriptions lack constraint details. 'Search query string' does not specify format, length limits, or supported operators. 'Maximum number of results' lacks min/max bounds. Baseline: descriptions should state format, range, and allowed values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
No error handling guidance. Tools lack recovery hints (e.g., 'If message not found, try search() first'). No categorization of errors as retryable vs user-fixable. Agents cannot self-correct on failures.
send_message lacks confirmation/dry-run pattern for irreversible operation. Agents can accidentally send emails without verification. Baseline: destructive operations should support confirmation.