MCP server for interacting with Infomaniak Mail via web API
Server has 21 well-named tools with consistent verb_noun patterns (mail_list_*, mail_create_*, mail_delete_*, etc.). All tools have descriptions and input schemas with Zod validation. However, descriptions are generic and lack LLM-optimization guidance (e.g., 'List emails in a folder' vs 'Retrieve emails from a specific folder with pagination; use limit/offset for large mailboxes'). Output schemas are not documented, responses are JSON-stringified but structure is opaque to the LLM. Parameters lack constraints (enums, ranges, format hints). Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. Security: MAIL_TOKEN is injected via environment, which is correct, but no audit logging or permission gates are visible. Composition is sound, each tool has one responsibility, and IDs chain correctly (mailbox_uuid, folder_id, message_id flow through calls).
Create a new folder in the mailbox
Delete a draft email
Delete emails from a folder
Delete a folder from the mailbox
Download a specific attachment from an email as base64-encoded content
List all draft emails
List emails in a folder
Output schemas not documented. Responses are JSON-stringified but LLM cannot infer field names, types, or structure. Prevents downstream tool chaining and forces LLM to parse unstructured text.
Destructive tools (mail_delete_folder, mail_delete_emails, mail_delete_draft) lack confirmation/dry-run pattern. No recovery guidance in error responses. Agents can permanently delete data without safeguards.
Parameter descriptions are generic and lack LLM-optimization guidance. E.g., 'Folder ID to delete' does not explain format, constraints, or consequences. Descriptions should be 50-200 chars and include WHEN to use the tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
List all folders in a mailbox
List all mailboxes in the Infomaniak account
Mark emails as not spam
Mark emails as read
Mark emails as spam
Mark emails as unread
Move emails to a different folder
Read a specific email
Rename a folder in the mailbox
Save an email as a draft
Search emails by keyword, sender, recipient, subject, or date range across all folders or within a specific folder
Send an email
Star emails
Unstar emails
No error handling or recovery guidance. Tools return JSON responses but do not categorize errors as retryable, user-fixable, or fatal. LLM cannot determine next action on failure.
Parameters lack constraints. E.g., 'limit' has no min/max bounds (could be 0 or 999999). 'since'/'before' accept strings but no format validation (YYYY-MM-DD vs other formats). Enums missing for status-like fields.