An MCP server that provides email sending capabilities via SMTP
Two tools with basic descriptions and schemas, but significant gaps in parameter documentation, error handling, and security. SendEmail and SendHtmlEmail have descriptions (10-word baseline met) and input schemas with types, but parameter descriptions are minimal (1-3 words each). No output schema documented. Error handling returns generic strings without recovery guidance. No input validation, no enum constraints, no idempotency markers. Credentials (SMTP_USERNAME, SMTP_PASSWORD) are injected server-side (good), but the tools lack permission gates, audit logging, and actionable error messages. Parameter descriptions do not explain format, constraints, or when to use each tool variant.
Sends an email using the configured SMTP server.
Sends an HTML email using the configured SMTP server.
Parameter descriptions are trivial (1-3 words: 'Recipient email address', 'Email subject', 'Email body'). LLMs cannot infer format, constraints, or validation rules. No mention of required format (RFC 5322 email), character limits, or encoding.
No output schema documented. Tools return plain strings ('Email sent successfully!' or 'Error sending email: ...'). LLMs cannot parse structured results or chain to downstream tools. No indication of success/failure codes or retry guidance.
Error handling is generic and non-actionable. Catch-all exception handler returns 'Error sending email: {ex.Message}' without categorizing errors as retryable, user-fixable, or fatal. LLM cannot determine next action.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
No input validation. Tools accept any string for 'to', 'subject', 'body' without checking email format, length limits, or encoding. Invalid input (e.g. malformed email, oversized body) will fail at SMTP layer with unhelpful error.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are destructive (send email) but lack idempotentHint=false or destructiveHint=true. LLM cannot reason about retry safety or side effects.