MCP server for Claude to access Microsoft 365 (Outlook, OneDrive, Power Automate) via Microsoft Graph API
Scoring was not performed
Output schemas are not documented. Tool descriptions do not specify what data is returned, forcing LLMs to infer response structure and risking parsing errors.
Destructive operations (delete-event, onedrive-delete, delete-email implied) lack dry-run or confirmation steps. No guidance on reversibility in descriptions. Agents could permanently delete data without user confirmation.
Error handling guidance is absent from tool descriptions. No indication of what LLMs should do on failure: retry, ask user, or abandon. Examples: 'Declines a calendar event' doesn't explain failure modes or recovery steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 28 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | - | v1 |
Numeric parameters lack range constraints in descriptions. Examples: count (max 50), sequence (no documented bounds). LLMs may pass invalid values without constraints to validate against.
Some parameters lack proper type or description. 'body' in create-event and 'body' in send-email lack length constraints or formatting guidance. 'comment' in decline-event and cancel-event lack length constraints.
Tool composition issue: onedrive-download requires 'itemId' OR 'path' but neither is marked as one-of. LLMs may pass both or neither, causing ambiguous failures.
Email operations (send-email, draft-email, move-emails) accept comma-separated lists as strings but lack clear parsing guidance. 'to' and 'cc' parameters should specify format precisely: 'comma-separated email addresses with optional display names'.
Conflicting tool purposes: read-email offers 'includeRawHtml' parameter marked UNSAFE for debugging, but no guidance on when/why an LLM should never use this. This invites injection attacks.
Folder-based tools (create-folder, move-emails, list-folders) accept human-readable names but some accept IDs. No clear guidance on whether 'parentFolder', 'targetFolder', 'sourceFolder' parameters accept names, IDs, or both.
Power Automate tools lack dependency documentation. 'flow-run' accepts 'inputs' as a JSON string, but no guidance on what inputs a specific flow expects or where to discover them.