Local Outlook .olm indexing and search with CLI, MCP, and Streamlit interfaces. Exposes email search as tools that any MCP client can call directly.
14 tools with complete schemas and descriptions, but quality varies significantly. Tool names follow verb_noun convention well (search_emails, get_email, evidence_add). Descriptions are present but often generic (avg ~80 chars, below 194-char baseline). Parameters have types and descriptions, but lack constraints (enums, ranges, patterns). No output schemas documented. Error handling guidance absent. Security concerns: evidence_* and dossier_* tools lack permission gates; mailbox_sync is WRITE but no dry-run/confirmation pattern. Composition is reasonable, tools are single-purpose, but chains require manual ID passing.
Create a dossier from selected evidence items
Export a dossier as PDF
Retrieve a dossier by ID
List all dossiers
Add an evidence item to the investigation database
Delete an evidence item
List evidence items with optional filtering
Update an evidence item
Retrieve full email content by UID
No output schemas documented. LLMs cannot predict response structure, forcing them to guess field names and types for downstream tool calls. Breaks tool chaining.
Destructive tool (evidence_delete) lacks confirmation/dry-run pattern. No recovery guidance if agent deletes wrong evidence. Agents make mistakes, irreversible ops need safeguards.
No permission gates on evidence_* and dossier_* tools. Any agent can add/update/delete evidence without authorization checks. Missing scope declarations (read:evidence, write:evidence).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
List configured EWS accounts
List pending mailbox action proposals
Check mailbox synchronization readiness status
Synchronize selected EWS mailbox folders
Search emails using semantic and keyword-based hybrid search
Descriptions are generic and under 100 chars (avg ~80). Missing WHEN to use, prerequisites, and dependencies. E.g., 'evidence_add' doesn't explain that email_uid must come from search_emails or get_email first.
Parameters lack constraints. 'relevance' in evidence_add accepts integer but no min/max (should be 1-5 per description). 'top_k' in search_emails unbounded. No enums for 'category' in evidence_list.