Vitric demonstrates solid fundamentals: all 8 tools have clear verb-noun names (search_notes, read_note, list_notes, create_note, update_note, append_to_note, get_vault_info, list_recent_notes) and non-empty descriptions (avg ~90 chars). All tools expose complete JSON Schema with typed properties and required arrays. However, parameter descriptions are sparse, many lack guidance on format, constraints, or dependencies. Output schemas are not documented; LLMs cannot predict response structure. Error handling is minimal (read_note returns {error: ...} but no recovery guidance). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear read/write semantics. Composition is clean: each tool has one responsibility, and write tools accept vault parameter for multi-vault support.
Append content to the end of an existing note.
Create a new note at the given vault-relative path. The content should be the full markdown string (including frontmatter if desired). Fails if the note already exists unless overwrite is true.
Get configuration and agent instructions for a vault. Re-reads the instructionsNote on each call.
List markdown files in the vault (or a sub-folder). Returns path, title, and mtime for each.
List the most recently modified notes in the vault.
Read a note by vault-relative path.
Search notes by keyword across title, headings, and body.
Output schemas not documented. LLMs cannot predict response structure (e.g., search_notes returns {path, title, score, snippet, reasons} but this is invisible to the agent). Agents must guess or fail on downstream field access.
Parameter descriptions lack format/constraint guidance. 'path' parameter says 'Vault-relative path to the note' but does not specify: must end in .md? Can contain spaces? Max length? LLMs cannot validate input without explicit constraints.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes without reading descriptions. create_note and update_note should be marked destructiveHint=true; read tools should be marked readOnlyHint=true.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Overwrite an existing note with new content. Creates the note if it does not exist.
Error handling provides no recovery guidance. read_note returns {error: 'Note not found: ...'} but does not suggest next steps (e.g., 'Try list_notes() to find available paths'). Agents cannot self-correct.
list_notes and list_recent_notes lack pagination guidance. No mention of whether results are capped, how to request more, or what happens if vault contains >50 notes. Agents cannot reliably iterate large vaults.