MCP server exposing local Microsoft Outlook (desktop) via COM late-binding over stdio
Solid tool naming (verb_noun convention) and comprehensive parameter schemas with type constraints (min/max). Descriptions are present and actionable, averaging ~120 chars. However, parameter descriptions are sparse or missing for many tools (e.g., 'entry_id' lacks context; 'folder' in list_folder has no description). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. Security warnings in descriptions (SIDE EFFECT) are good but lack structured error classification. Composition is strong: tools are single-purpose and chainable via entry_id references.
Save a draft email without sending. Returns the draft EntryID.
Create a calendar appointment. SIDE EFFECT: with non-empty attendees this SENDS real meeting invites — confirm with the user first.
Delete a message (goes to Deleted Items per Outlook policy). SIDE EFFECT — confirm first.
Forward a message. SIDE EFFECT when send=true with a recipient: sends real mail — confirm first.
Get the full body and headers of one message by EntryID (includes HTML body + attachment list).
List attachment metadata (index, name, size) for a message.
List calendar events in [start, end]. Dates as YYYY-MM-DD or ISO datetime.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Forces agents to guess what data is available after each call.
Parameter descriptions missing or generic for critical fields. 'entry_id' appears in 8 tools with no description of what it is or where to get it. 'folder' in list_folder has no description.
No error recovery guidance. Tools like send_mail, delete_mail, create_event have irreversible side effects but provide no error classification (retryable vs fatal) or recovery hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
List recent messages in any folder by well-known name, numeric id, or EntryID.
List well-known Outlook folders (inbox, sent, drafts, calendar, contacts, ...) with item counts.
List the most recent messages in the Outlook Inbox (newest first).
Mark a message read or unread.
Move a message to another folder.
Reply to a message. SIDE EFFECT when send=true: sends real mail — confirm first.
Save one attachment to a local file path. Select by 1-based index or file name.
Search the Inbox by subject/sender/body substring.
Search any folder by subject/sender/body substring.
Send an email via the open Outlook profile. SIDE EFFECT: sends real mail — confirm with the user first.
No confirmation/dry-run pattern for destructive operations. delete_mail, send_mail, create_event (with attendees) can cause irreversible harm without a confirmation step.
Pagination not documented. list_inbox, list_folder, search_mail, list_calendar accept 'count' but no offset/cursor. Large result sets will be truncated silently.