An MCP Server for giving Claude control over Outlook on Mac
OutlookMCP has significant definition quality gaps across multiple dimensions. Tool naming is inconsistent (mixing verb-noun with descriptive phrases), descriptions vary widely in quality and specificity, parameter schemas are incomplete or missing entirely, and output schemas are entirely undocumented. No tool has explicit error handling guidance, and several critical tools have vague or missing descriptions. The server uses FastMCP with decorator-based tool registration, but the definitions lack the rigor required for production-grade agent tooling. 4 of 5 tools have minimal or vague descriptions (under 50 chars of meaningful detail), and only 1 tool has fully documented parameters. No tools declare their output schema structure.
Get the current available folder structure for mails and get mails in the inbox with guidance on how to plan sorting
Get folder name with specified ID
List all email folders and their structure in your Outlook account
Key header details for inbox messages default of 25 messages.
Automatically organize your inbox to achieve inbox zero by processing calendar invites, filing important emails, and organizing remaining messages.
No output schemas documented for any tool. LLMs cannot plan downstream operations or know what fields to extract from responses.
Tool names lack clarity and consistency. 'get_folders_and_inbox_mails_for_sort_planning' combines multiple responsibilities (get folders AND get mails AND provide guidance). Should be split into separate tools: get_folder_structure(), list_inbox_mails(), get_sort_guidance(). Current name violates the single-responsibility principle and makes tool selection ambiguous for LLMs.
Parameter descriptions are either missing or extremely vague. 'get_mail_folder_name_with_id' has folder_id parameter with description 'ID of the folder to retrieve' but no explanation of format (UUID? numeric ID? Office 365 format?). Users/LLMs cannot distinguish between folder_id, folder_name, or folder_path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
'list_inbox_messages' description says 'default of 25 messages' but the parameter default is 50 and docstring says default of 25. Contradiction confuses the LLM about what behavior to expect.
No pagination guidance. 'list_inbox_messages' accepts a count parameter but response format string truncation logic is unclear. No documentation of max result limit, whether pagination/cursor is supported, or what happens when count exceeds available messages.
'sort_inbox' is a destructive/write operation with no confirmation step, dry-run option, or explicit warning in description. The description says 'Automatically organize your inbox' but does NOT state that emails will be moved, deleted, or modified. No undo guidance provided.
No error handling guidance. None of the tools include recovery suggestions or error classification (retryable vs. fatal). If a tool fails (e.g., folder not found, permission denied, graph API timeout), the LLM has no next-step guidance.
Tool descriptions are too vague and do not follow the WHAT/WHEN/HOW pattern. 'List all email folders and their structure in your Outlook account' does not explain when to call this vs. 'get_folders_and_inbox_mails_for_sort_planning', whether it returns unread counts, or what the format of the structure is.
Credential/authentication handling is implicit. The `@requires_graph_auth` decorator handles auth, but there is no documentation of what OAuth scopes are required, what permissions the tool needs, or what happens if the user lacks permissions. Missing scope declaration violates least-privilege principle.
Response format inconsistency. Some tools return plaintext strings (list_inbox_messages returns formatted headers as string), others infer JSON (folder hierarchy from get_folders_and_inbox_mails_for_sort_planning returns base.UserMessage). No structured output schema means LLMs cannot reliably parse results for chaining.