Self-hosted second-brain service for ingesting and searching personal work context, specifically Gmail messages, with hybrid full-text and semantic search capabilities exposed via MCP.
Second Brain Mail provides 9 well-named, read-only tools with complete JSON schemas and reasonable descriptions. All tools follow verb_noun naming (search, fetch, list patterns). Schemas include proper type definitions, required fields, and min/max constraints on numeric parameters. However, descriptions are terse (avg ~60 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and omit dependency hints. Parameter descriptions are minimal, e.g., 'Search query string' and 'Internal message UUID' lack guidance on format or examples. Output schemas are not documented, forcing LLMs to infer response structure. Error handling is absent from visible code. No tool annotations beyond basic schema.
List messages involving a specific email address.
List high-activity contacts, optionally filtered by name or email.
Fetch a Gmail message by internal message id from search results.
Fetch a message thread by conversation id.
Investigate a question against the mailbox and return likely connections, themes, and evidence.
List recent messages with optional subject, sender, or participant filters.
Tool descriptions are terse (avg 60 chars vs 194-char baseline) and lack context on WHEN to use each tool or how they differ. E.g., 'search' vs 'search_chunks' distinction unclear without explanation of chunking strategy.
Parameter descriptions lack format guidance and constraints. E.g., 'Internal message UUID' does not explain format, 'Search query string' does not hint at syntax or operators, 'Optional subject filter' does not clarify partial vs exact match.
Output schemas are not documented. LLMs cannot infer what fields search() returns, what structure fetch_thread() produces, or how to chain results into downstream calls. This violates the documented-return-types baseline (100% of A+ tools).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Search Gmail messages using hybrid full-text and semantic retrieval.
Search semantically relevant email chunks instead of whole messages.
Return database health, record counts, and sync state.
No error handling guidance visible. Tools lack recovery hints (e.g., 'If no results, try a broader query' or 'If message not found, call search() first'). Error responses will not guide LLM recovery.
Tool 'status' has generic name and vague description ('Return database health, record counts, and sync state'). Does not clarify when to call it or what 'sync state' means to the user.