A remote MCP server for Outlook that's actually useful for AI agents
This server implements 8 Outlook/Teams tools with HTTP transport but critical gaps in schema visibility, parameter descriptions, and output documentation prevent confident production deployment. While naming conventions are sound (verb_noun structure: list_messages, get_message, send_message, create_draft, list_calendar_events, get_calendar_event, create_calendar_event, search_people), the source code provided does NOT contain the actual tool registration with input schemas or detailed parameter descriptions. The tools are INFERRED from directory structure (src/tools/mail.ts, src/tools/calendar.ts, src/tools/people.ts) but explicit tool definitions with Zod schemas, descriptions, and output documentation are not visible in the provided excerpts. Per hard scoring rule: 'If you cannot see the actual tool definition in the source (only inferred): cap that tool's overall at 50.' Additionally, parameter descriptions and output schemas cannot be verified from the code snippet. The Dockerfile and server.ts show solid infrastructure (Node 22, express, StreamableHTTPServerTransport, bearer auth, rate limiting, keep-alive for SSE, CORS), but tool-level quality cannot be assessed without schema visibility.
No visible tool schemas in provided source. Tool definitions cannot be verified, only inferred from file structure (src/tools/mail.ts, calendar.ts, people.ts).
No tool descriptions visible in source code. Cannot assess whether tools explain WHAT they do, WHEN to use them, or what they return.
No input parameter documentation visible. Cannot verify parameter descriptions, types, enums, or constraints.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 8 | - | v1 |
No output schemas documented in visible source. LLMs cannot predict response structure or plan downstream tool calls.
Destructive operations (send_message, create_draft, create_calendar_event) lack confirmation/dry-run pattern.
No pagination parameters visible for list_messages and list_calendar_events.
No error recovery guidance visible.