Outlook Web MCP Server via Playwright/CDP Browser Bridge
11 tools with complete schemas and descriptions present, but significant quality gaps. All tools have descriptions (10-200 chars, mostly German), and input schemas are visible with type definitions. However, descriptions lack LLM-optimized guidance on WHEN to use each tool vs. alternatives. Parameter descriptions are minimal (e.g., 'Suchbegriff' without format/constraint hints). No output schemas documented. Error handling is absent, no recovery guidance, no categorization of retryable vs. fatal errors. Tool composition has issues: outlook_get_email and outlook_read_email appear to do similar things (read email by index vs. by conversation-ID), creating ambiguity. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Naming is verb-first and generally clear, but parameter naming could be more explicit (e.g., 'folder' vs. 'folder_name').
Listet ALLE E-Mails eines Ordners per Scroll-Enumeration (überwindet die Virtualisierung der Nachrichtenliste). Gibt conversation-IDs + Vorschau je Mail zurück.
Schließt die Hintergrund-Browserinstanz.
Erstellt einen neuen E-Mail-Entwurf im Ordner "Entwürfe" (Drafts) in Outlook Web. Du musst die E-Mail danach nur noch in Outlook öffnen, kurz gegenlesen und absenden.
Liest eine E-Mail im Lesebereich vollständig aus (Markdown, Teams-Links, Metadaten). Standardmäßig die oberste E-Mail (Index 0).
Listet die Ordner im Navigationsbereich (Inbox, Sent Items, Archive, Deleted Items, Drafts, Newsletter) mit ihren Namen und Item-Counts.
Listet die neuesten E-Mails im Posteingang auf.
No output schemas documented. LLMs cannot predict what fields to expect from tool responses, forcing them to guess at downstream field names and types. This breaks tool chaining and wastes tokens on exploratory calls.
No error handling or recovery guidance. Tools return raw errors with no actionable next steps. E.g., if login fails, the LLM has no guidance on whether to retry, check credentials, or try a different realm.
Ambiguous tool composition: outlook_get_email (read by index) and outlook_read_email (read by conversation-ID) appear to do the same thing. LLMs will struggle to choose between them. Consolidate or clearly document when to use each.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Öffnet ein sichtbares Browserfenster (Edge/Chromium via WSLg/Desktop), damit du dich einmalig bei Microsoft 365 / OWA anmelden kannst.
Navigiert in einen Mail-Ordner (inbox|sentitems|archive|deleteditems|drafts|newsletter).
Liest eine E-Mail vollständig im Lesebereich (Markdown) anhand ihrer conversation-ID (data-convid aus bulk_list). Scrollt ggf. automatisch durch den Ordner, bis die conversation gefunden ist.
Sucht E-Mails in Outlook Web anhand eines Suchbegriffs (z.B. Kundenname, Ticketnummer, Absender).
Prüft den Status der Outlook Web Verbindung und ob du eingeloggt bist.
Parameter descriptions lack format/constraint hints. E.g., 'folder' parameter accepts 'inbox|sentitems|archive|...' but this is only documented in the description text, not as an enum. LLMs may hallucinate invalid folder names.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. outlook_create_draft is WRITE; outlook_close is REVERSIBLE. Annotations help agents reason about side effects and retry safety.