A record of what your AI sessions decided — and the receipts behind it. MCP server over a folder of markdown notes.
Four read-only tools with strong, detailed descriptions (150-250 chars each) and well-structured input schemas. All parameters are typed and described. Tool names follow verb_noun convention (librarian-search, librarian-recent, librarian-get-note, librarian-positions). Schemas include constraints (min/max for limit, optional fields clearly marked). However, output schemas are not documented in the source, LLMs cannot see what fields to expect from responses. Error handling and recovery guidance are absent. No tool annotations (readOnlyHint) despite all being read-only. Missing pagination details for search results.
Read one note in full by its vault path. Returns the note's frontmatter and body. Read-only.
Recall the user's recorded stances on topics. Give it a topic key for one topic, free text to search recorded stances, or a note path to find the positions that reference it. Returns each topic's current stance with the dates it was formed and last revised; add chain: true for the full history of how it changed. Read-only.
Recall the user's recent session summaries, newest-first. Each entry carries its date, its project (when recorded), and the notes it touched by versioned identity. Narrow with project (one effort), window (last N days), or count. Read-only.
Search the user's knowledge vault for notes matching a query. Returns notes ranked by relevance, each with its vault path, type/status/created provenance, and a matching snippet. A result the user engaged before also carries a quiet prior-engagement note. Read-only; all query terms must match.
Output schemas not documented. LLMs cannot see what fields responses contain (e.g., does librarian-search return 'snippet' or 'excerpt'? Is 'created' a timestamp or ISO string?). This forces agents to guess field names and wastes tokens on trial-and-error.
No tool annotations despite all four tools being read-only. Adding readOnlyHint: true signals to agents that these calls are safe to retry and have no side effects, improving agent planning.
librarian-search and librarian-recent lack pagination guidance. No mention of whether results are capped, how to fetch next page, or total count. Large result sets could exhaust context window.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If librarian-get-note receives an invalid path, what does it return? Can the agent retry? Should it call librarian-search first? Undocumented error behavior forces agents to guess.
librarian-positions has three optional parameters (topic, search, path) with unclear mutual exclusivity. Description does not state whether all three can be passed together, or if only one should be used. This invites ambiguous calls.