Search your notes from Claude Code, Cursor, or any MCP client. Zero dependencies, runs fully offline.
Three well-named, read-only tools with clear descriptions (avg 156 chars, within baseline 194). All tools have complete input schemas with proper JSON Schema structure and type definitions. search_notes includes helpful constraints (limit 1-25). However, output schemas are entirely undocumented, LLMs cannot predict response structure. Parameter descriptions are minimal (e.g., 'Natural language or keyword query' lacks format guidance). No error recovery hints or actionable error messages. Missing tool annotations (readOnlyHint). Composition is sound: tools chain logically (search → read → list). No security issues detected (read-only, no secrets).
List every indexed document with its headings. Useful for orienting before searching.
Read the full text of one indexed document by its relative path.
Search the indexed notes and return the most relevant passages, ranked by BM25. Use this instead of reading whole files when you only need the parts of a knowledge base that match a question.
Output schemas completely undocumented. LLMs cannot predict response structure (e.g., does search_notes return {passages: [...]} or {results: [...]}?). Forces LLMs to guess field names for downstream reasoning.
No error recovery guidance. When search_notes returns 'No matching passages found', LLM has no hint to try a different query or call list_notes first. Error messages are bare facts, not actionable.
Missing tool annotations. All three tools are read-only but lack readOnlyHint in schema. Clients cannot distinguish safe tools from destructive ones without parsing descriptions.
Parameter descriptions lack format/constraint guidance. 'Natural language or keyword query' doesn't explain max length, character restrictions, or language support. 'Relative path' doesn't clarify path traversal rules or allowed separators.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
list_notes has empty inputSchema properties but no explicit documentation of what it returns (document list, chunk counts, headings structure). LLM must infer from description alone.