The complete email loop for AI agents: send, receive, parse, thread, reply, approve, and manage Drin with 54 MCP tools.
Single tool 'send_email' has a well-structured JSON Schema with 13 parameters, all typed and described. Naming follows verb_noun convention (send_email). Description is clear and actionable (98 chars). Schema includes proper type unions (string|array for addresses), format hints (ISO 8601 for scheduledAt), and optional/required field distinction. However, the server exposes only 1 of 54 claimed tools in the source code provided, the package.json claims '54 MCP tools' but only send_email is visible. This is a critical gap: either the other 53 tools are missing from the repo, or the evaluation is incomplete. Assuming the visible tool is representative, the quality is solid but incomplete.
Send a transactional email. Provide `html` and/or `text`, or render a saved template with `templateId` + `data`. Addresses accept "Name <email>" or bare "email".
Only 1 of 54 claimed tools visible in source. Package.json declares '54 MCP tools' but src/tools.ts shows only send_email definition. Remaining 53 tools are either missing, not yet implemented, or not included in the provided code sample.
send_email lacks output schema documentation. Tool description does not specify what fields are returned (e.g., messageId, status, scheduledTime). LLMs cannot plan downstream calls without knowing response structure.
No error handling guidance in send_email description. Does not explain what happens on invalid 'from' domain, malformed addresses, or template not found. LLMs need recovery hints (e.g., 'If template not found, call list_templates first').
Parameter 'sender' is optional and overrides server default, but no description explains when/why to use it. Guidance like 'Required for account-wide API keys; omit for product-scoped keys' would clarify intent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
No idempotency guarantee documented. 'idempotencyKey' parameter exists but description does not explain retry semantics or whether duplicate sends are prevented. Agents need to know if retrying is safe.