Mark It Down — markdown notes from the VSCode extension. Use list_notes to discover, get_note to read, create/update/delete_note to mutate. get_active_markdown + list_open_md introspect the running VSCode editor when --ipc-sock points at a live extension; otherwise they degrade to a clear error.
mark-it-down provides 8 tools with consistent verb-noun naming (list_, get_, create_, update_, delete_, search_). All tools have descriptions (avg ~100 chars, within baseline 34-392). Input schemas are present with type declarations. However, parameter descriptions are sparse or missing entirely, most params lack actionable guidance on format, constraints, or dependencies. Output schemas are not documented. Error handling is minimal; no recovery guidance or categorization. The server lacks tool annotations (readOnlyHint, destructiveHint) despite having clear risk profiles (READ_ONLY, WRITE, DESTRUCTIVE). Composition is sound: tools chain well (search_notes → get_note → update_note). Security: no secrets in params, but no audit logging or permission gates visible.
Create a new global note with optional initial content + tags.
Permanently delete a note (no soft-delete or trash).
Return the markdown currently open in the active Mark It Down editor. Requires --ipc-sock to be set + the VSCode extension to be running.
Read a single note by id. Returns metadata + full markdown content.
List notes in the Mark It Down warehouse. Optionally filter by category (exact), categoryPrefix (matches the path or anything underneath), and/or tag.
List all open .md / .mdx tabs in the running VSCode. Requires --ipc-sock to be set + the VSCode extension to be running.
Parameter descriptions are minimal or absent. 'tags' in create_note says 'Tags (lowercase, alphanumeric + dashes; cross-cut categories)' but lacks guidance on max count, separator format, or examples. 'limit' in search_notes has no min/max bounds. LLMs cannot infer constraints from names alone.
Output schemas are not documented. Tools return 'metadata + full markdown content' (get_note) or 'ranked hits with snippet + score' (search_notes), but the exact field names, types, and structure are not specified. LLMs cannot plan downstream calls or extract data reliably.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk profiles (READ_ONLY, WRITE, DESTRUCTIVE) in metadata but not exposed via MCP tool annotations. Agents cannot determine which tools are safe to retry or have side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Fuzzy search across all global notes (title + category + body). Returns ranked hits with snippet + score.
Update a note. Any of title / category / content / tags may be patched; updatedAt bumps.
get_active_markdown and list_open_md require --ipc-sock and VSCode extension running, but this dependency is buried in descriptions. No error handling for missing prerequisites. If the extension is not running, the tool will fail silently or with a cryptic error.
delete_note has no confirmation or dry-run pattern. Agents can permanently delete notes without a safety gate. No recovery guidance if deletion fails or is unintended.