MCP server exposing capability-scoped tools for agents. Streamable HTTP transport for agent tools. JMAP-native webmail built for agent/human collaboration.
Critical gaps across all dimensions. Tool definitions are inferred from codegen output (tools/codegen/src/generators/mcp-tool.ts) rather than directly visible in source. No input schemas, parameter descriptions, or output schemas are visible in the provided code. Descriptions are minimal (10-30 chars), far below the 50-200 char baseline for LLM-optimized tools. No error handling guidance, no parameter validation rules, no security annotations. The server exposes destructive operations (mail.delete, mail.modify, files.propose_write) without confirmation patterns or permission gates. Tool names lack clarity (mail.modify is ambiguous; mail.draft vs mail.send vs mail.modify creates confusion). No evidence of idempotency, pagination, or chaining IDs in responses.
List files
Propose a file write operation
Read a file
List email identities
Delete an email
Create a draft email
Modify email properties
Send an email
No input schemas visible for any tool. All 13 tools lack parameter definitions, types, and constraints. Cannot verify LLM can invoke tools correctly.
Descriptions are trivial (10-30 chars). Baseline for LLM-optimized tools is 50-200 chars. LLMs cannot determine when/why to select tools or what they modify.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 33 | 2025-06-18+ | v2 |
List mailboxes
Get the current session information
Get a specific email thread
List email threads
Search email threads
Destructive operations (mail.delete, mail.modify, files.propose_write) lack confirmation patterns, dry-run support, or permission gates. Agents can delete emails or modify files without safeguards.
Ambiguous tool names: mail.modify does not clarify what properties it modifies (status, labels, flags, all?). mail.draft vs mail.send vs mail.modify creates confusion. No verb_noun clarity.
No error handling guidance visible. No recovery hints, retryability classification, or actionable error messages. LLMs cannot self-correct on failures.