Personal Markdown workspace with SQLite FTS5 and an OAuth-protected MCP server
aonote demonstrates solid tool design with clear verb-noun naming (list_notes, create_note, update_note, delete_note) and comprehensive parameter schemas. All 10 tools have descriptions and input schemas with type definitions. However, parameter descriptions are sparse or missing for several tools (e.g., limit in list_notes lacks guidance on typical values; path in get_note lacks format examples). Output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling descriptions are absent; tools do not guide recovery (e.g., what happens on version conflict in update_note?). Mutually exclusive parameters (note_id vs path in get_note, filename vs path in create_note) are documented but could be clearer. Overall: solid foundation, but lacks LLM-optimized descriptions and output documentation needed for A-grade.
Create a workspace folder at the root or below an existing parent folder.
Create a Markdown note. Provide exactly one of filename or path, never both. Use filename with an optional folder_id, or path to automatically create missing folders (omit folder_id). Include a clear H1 heading in content.
Move a note to aonote's browser trash. Use only after explicit user confirmation.
Read one complete Markdown note. Provide exactly one of note_id or path, never both.
List workspace folders with IDs, parent IDs, and nesting depth. Use before moving a note.
List recent Markdown notes. Use this to browse before opening a note.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining. E.g., list_notes returns what fields? Does it include note_id, path, created_at? Required for pattern:tool-chain.
Parameter descriptions lack actionable detail. 'limit' in list_notes has no guidance on typical values or max; 'path' in get_note lacks format examples (e.g., 'ようこそ/01-ようこそ.md'). Descriptions under 50 chars invite LLM misuse.
Error handling guidance absent. update_note, rename_note, move_note all accept 'version' for conflict safety but do not document what error is returned on version mismatch or how to recover. Required for pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Move a note to a folder. Use list_folders first; pass null to move it to 未整理.
Rename a Markdown note using its current version for conflict safety.
Search note titles, filenames, and Markdown bodies with SQLite FTS5 keyword search.
Update a note using its current version for conflict-safe editing. Read the note first.
Mutually exclusive parameters (note_id vs path in get_note; filename vs path in create_note) are documented but descriptions could be clearer. LLMs may pass both, causing ambiguous failures. Recommend: 'Provide exactly one of note_id or path, never both. If you have a path, omit note_id.'
create_note description does not explain when to use 'filename + folder_id' vs 'path'. LLMs may guess wrong, leading to failed calls. Recommend: 'Use filename with folder_id for explicit placement, or path to auto-create missing folders.'