Semantic + keyword search over Claude Code session history via MCP
Five tools with complete schemas and descriptions. Naming is clear and verb-based (search_, get_, index_, grep_, session_). Descriptions are detailed (100-300 chars) and explain WHEN to use each tool. Parameters are well-typed with enums for constrained inputs (role, content_type). However, output schemas are not formally documented, responses are formatted as text rather than structured objects. Error handling is minimal (no recovery guidance). The index_sessions tool is marked WRITE but lacks confirmation/dry-run pattern. Overall solid for a semantic search server, but lacks production-grade error messaging and structured output.
Get conversation context around a specific point in a session. Use after search_sessions to expand context around an interesting result.
Search Claude Code session history using exact keyword or regex matching. Complements search_sessions (semantic search) — use this when you need to find a specific word, error message, variable name, or exact phrase. Does not require indexing — searches raw session files directly.
Index Claude Code session JSONL files into the vector database. Run this to build or update the search index. Incrementally indexes only new lines since last run.
Search Claude Code session history using semantic similarity. Returns relevant conversation fragments from past sessions. By default, searches only the current project. Set project to '*' to search all projects.
Get statistics about indexed sessions: total sessions, chunks, projects, and time range.
Output schemas not formally documented. Tools return formatted text (markdown) rather than structured JSON objects. LLMs cannot reliably extract fields for downstream tool chaining.
Destructive tool (index_sessions) lacks confirmation/dry-run pattern. No warning before indexing or overwriting vector database. Agents could accidentally re-index without safeguards.
Error handling is minimal. No recovery guidance. If search returns 0 results, the message suggests 'try a different query' but does not guide the agent on next steps (e.g., call grep_sessions, broaden filters, or check indexing status).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
session_stats tool has minimal description (70 chars). Does not explain when to call it or what insights it provides. Should clarify: 'Call this to verify indexing progress, check project coverage, or diagnose why searches return no results.'
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Clients cannot infer which tools are safe to retry or which modify state without reading descriptions.