obsidian-mcp demonstrates solid naming conventions (verb_noun pattern: vault_read, vault_write, vault_delete) and comprehensive tool coverage for Obsidian vault operations. However, critical gaps exist: 17 of 23 tools lack visible input schemas in the provided source code, making validation impossible. Descriptions vary widely, some tools (vault_create_folder, vault_reindex, vault_batch) have detailed, actionable descriptions (100-200 chars), while others (vault_read, vault_list, vault_write, vault_patch, vault_move, vault_delete, vault_links, vault_frontmatter, vault_search, vault_diff, vault_snapshot, vault_query, vault_read_multiple, vault_stats, vault_tags, vault_outline, vault_resolve_embeds, vault_obsidian_url) have no visible descriptions in the source. Output schemas are not documented. Error handling is present (errorReporting=true) but recovery guidance is not evident in the sample code.
Run a sequence of vault operations (write, patch, delete, move, create_folder) in one call. Each operation is atomic on its own; the batch is sequential. Move operations share a single backlink index load+refresh+save (much cheaper than calling vault_move N times). For atomic-rollback semantics across the whole batch, take a vault_snapshot before calling.
Create a folder in the vault. Idempotent: succeeds with created=false if the folder already exists. Set createParents to true to create intermediate folders.
17 of 23 tools lack visible input schemas in source code. Cannot verify parameter types, constraints, or descriptions.
17 of 23 tools have no visible descriptions in provided source. LLMs cannot determine when/why to select these tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
Refresh the backlink index. Walks every .md file in the vault, re-parses changed files, and writes the cache to .obsidian-mcp-cache/backlinks.json. Backlink-aware tools (vault_move, vault_move_folder, vault_delete_folder) call this internally; you only need to call it explicitly to force a rebuild.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does vault_search return file_path, content, line_number?). Breaks tool chaining.
Destructive tools (vault_delete, vault_delete_folder) lack confirmation/dry-run patterns. Agents can permanently delete vault content without safeguards.
vault_batch accepts up to 200 operations but no per-operation success/failure reporting visible. If operation 150 fails, unclear whether ops 1-149 committed or rolled back.