Expose your vault to Claude and any MCP client over the Model Context Protocol, with on-device semantic search.
52 tools with mostly present descriptions (avg ~80 chars) and basic schemas. Naming is verb-forward and clear (get_, create_, delete_, etc.). However, many parameter descriptions are minimal or missing entirely. Output schemas are not documented. Error handling guidance is absent. Tool composition is reasonable but some tools combine multiple concerns (e.g., execute_obsidian_command is overly generic). Adaptive tool loading (tool_catalog, activate_tool, activate_tools) adds meta-capability but lacks clear error recovery paths.
Promotes an inactive tool to active status. With persist=false (default) the tool is available immediately and stays active until the Obsidian plugin reloads. With persist=true the promotion is saved and survives plugin reloads. Run tool_catalog first to see available tool names.
Promotes several inactive tools to active status in ONE call, refreshing the client's tool list once instead of once per tool. Prefer it over repeated `activate_tool` calls. Run `tool_catalog` first for the available names. With persist=true the promotions survive plugin reloads.
Add a node to a canvas
Append content to the active file
Append content to a periodic note
Append content to a file in the vault
Connect nodes in a canvas
patch_active_file and patch_vault_file lack parameter documentation. No description of what 'patch' format is expected (unified diff, JSON Patch, line-based?). LLMs cannot infer the correct format.
Output schemas are not documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does list_vault_files return file_id, path, size, modified_date?). This forces agents to guess structure.
execute_obsidian_command is overly generic. Requires a command ID string with no validation or enumeration. LLMs cannot discover valid commands without calling list_obsidian_commands first, and even then must parse the response to extract IDs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Create a new binary file in the vault. Overwrites if the path already exists.
Create a new directory in the vault
Create a new file in the vault. Overwrites if the path already exists.
Delete the active file
Delete a property from a note
Delete a directory in the vault
Delete a file in the vault
Execute a Dataview query
Execute an Obsidian command
Execute a Templater template
Fetch content from a URL
Find broken links in the vault
Find orphaned notes in the vault
Get the currently active file in Obsidian
Get backlinks for a note
Get a canvas file
Get files with a specific tag
Get the outline of a note
Get a property value from a note
Get or create a daily note
Get or create a periodic note
Get outgoing links from a note
Get recently accessed files
Get information about the MCP server
Get the content of a file in the vault
Get a partial section of a file in the vault
Get the content of multiple files in the vault
Get an overview of the vault
List all bookmarks in the vault
List all available Obsidian commands
List all values for a property
List all tags in the vault
List all files in the vault
Apply a patch to the active file
Apply a patch to a file in the vault
Rename a heading in a file
Rename a file in the vault
Search and replace content in the vault
Search the vault for files matching a query
Simple text search in the vault
Smart semantic search in the vault
Set a property value on a note
Show a file in the Obsidian UI
Promotes an inactive tool to active status. With persist=false (default) the tool is available immediately and stays active until the Obsidian plugin reloads. With persist=true the promotion is saved and survives plugin reloads. Run tool_catalog first to see available tool names.
Replace the whole file content of the active file
No error handling guidance. Tools like delete_active_file, delete_vault_file, and search_and_replace are destructive but provide no recovery hints. If deletion fails, LLMs have no guidance on what to try next.
get_vault_file_partial lacks parameter documentation for range/offset/limit. Description says 'Get a partial section' but does not explain how to specify which section (line numbers? character range? heading name?).