Exposes personal notes to Claude via the Model Context Protocol. Claude can add, search, retrieve, and find connections across notes.
Notes KB has clear, action-verb naming (add_note, get_note, list_notes, search_notes, find_connections, summarize_topic) and reasonable descriptions (avg ~120 chars). All 6 tools have input schemas with typed parameters and descriptions. However, output schemas are not formally documented, responses are free-text strings rather than structured objects. Error handling is minimal (e.g., 'No note found' messages are helpful but lack recovery guidance). Parameters lack constraints (enums, ranges, length limits). The store.py implementation is incomplete in the provided code (find_connections function is cut off), making full validation impossible. Overall: functional but below production grade.
Save a new note to the knowledge base.
Find notes that are conceptually connected to a given topic or idea. Looks for shared tags and overlapping vocabulary in content. Great for discovering unexpected links between notes.
Retrieve the full content of a specific note by title.
List all notes in the knowledge base, optionally filtered by tag.
Search notes by keyword. Searches across title, content, and tags.
Retrieve all notes related to a topic so you can summarise them. Returns the full content of all matching notes — Claude will synthesise the summary.
Output schemas not documented. All tools return free-text strings instead of structured objects. LLMs cannot reliably extract fields for downstream tool calls or multi-step workflows.
No pagination support. list_notes and search_notes return all results without limit or offset. Large knowledge bases will blow context windows.
Parameters lack constraints. 'query', 'concept', 'topic', and 'tag' accept free-form strings with no length limits, format validation, or guidance on expected input patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. Responses like 'No note found' do not suggest next steps (e.g., 'Try list_notes() to see available notes').
Incomplete source code. store.py find_connections() function is truncated, preventing full validation of implementation correctness.