obsidian-ts-mcp
obsidian-ts-mcp is an MCP server that lets AI agents read, write, search, and manage notes inside an Obsidian vault via the official Obsidian CLI. It provides 37 tools across these areas:
Note Management: Create, read, append, and prepend content to notes; move or rename files (with Obsidian auto-updating internal links)
Daily Notes: Get, create, read, append, or prepend to today's daily note
Search & Discovery: Full-text search using Obsidian's query syntax (with folder scoping and result limits); list files filtered by folder/extension; retrieve vault metadata (name, path, file/folder counts, size)
Tags & Links: List all tags with occurrence counts; find backlinks to a note; list all outgoing links from a note
Note Structure: Get the heading outline of a note (tree or markdown format)
Frontmatter & Metadata: Set, read, list, or remove frontmatter properties (supporting text, list, number, checkbox, date, and datetime types)
Task Management: List tasks with filters (by file, completion status, or daily note); toggle task checkboxes on or off
Templates: List available templates and read their contents
Bases: Query an Obsidian Base for structured results
Project Management: Create and list projects; read overviews, load full context, generate activity summaries, view a cross-project dashboard; manage structured backlogs (add, read, complete, prioritize, and reorder items)
Requires the Obsidian desktop app running with the CLI enabled and a Catalyst license. Compatible with VS Code, Claude Desktop, and other MCP clients.
Wraps the official Obsidian CLI to enable reading, writing, searching, and managing notes, tags, frontmatter properties, and tasks within an Obsidian vault.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@obsidian-ts-mcpsearch my vault for notes about machine learning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
This project is deprecated and superseded by DevJournal. DevJournal is a standalone CLI tool (written in Zig) that covers the journaling workflow (backlogs, daily notes, sessions, ADRs) and includes an MCP server. No further development will happen here. Existing documentation is preserved below for reference.
obsidian-ts-mcp
A Model Context Protocol (MCP) server that wraps the official Obsidian CLI, letting AI agents in VS Code (and any other MCP client) read, write, search, and manage notes inside an Obsidian vault.
Prerequisites
Requirement | Minimum version |
Node.js | 18 |
Obsidian desktop app | 1.12 (with CLI enabled) |
Obsidian Catalyst licence | Required for CLI access |
The Obsidian desktop app must be running when the MCP server is in use.
The obsidian binary must be available on your PATH.
Related MCP server: Obsidian MCP Server
Installation
git clone https://github.com/dickiedyce/obsidian-ts-mcp.git
cd obsidian-ts-mcp
npm install
npm run buildConfiguration
VS Code (user-level MCP)
Add the following to your VS Code MCP configuration:
OS | Path |
macOS |
|
Linux |
|
Windows |
|
{
"servers": {
"obsidian": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/obsidian-ts-mcp/dist/server.js"],
"env": {
"OBSIDIAN_VAULT": "My Vault"
}
}
}
}Claude Desktop
Add to claude_desktop_config.json
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS,
%APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"obsidian": {
"command": "node",
"args": ["/absolute/path/to/obsidian-ts-mcp/dist/server.js"],
"env": {
"OBSIDIAN_VAULT": "My Vault"
}
}
}
}Set OBSIDIAN_VAULT to the name of the vault you want to target. The name
must match exactly what Obsidian shows in the vault switcher.
Environment variables
Variable | Description |
| Default vault name appended to every CLI call. |
| Absolute filesystem path to the vault root. Used by direct filesystem operations; if unset, the path is resolved via the CLI. |
Available tools
The server exposes 41 tools organised into eleven groups.
Core -- note management
Tool | Description |
| Create a new note, optionally from a template. Supports a |
| Read the full markdown contents of a note. |
| Append content to the end of a note. |
| Prepend content after the frontmatter of a note. |
| Full-text search with Obsidian query syntax. |
| Get or create today's daily note. |
| Append content to today's daily note. |
Discovery and context
Tool | Description |
| Vault name, path, file/folder counts, size. |
| List files, optionally filtered by folder or extension. |
| List all tags with occurrence counts. |
| Find notes that link to a given note. |
| Heading structure of a note. |
Properties and metadata
Tool | Description |
| Set a frontmatter property on a note. |
| Read a frontmatter property value. |
Tasks
Tool | Description |
| List tasks, with filters for status, file, or daily note. |
| Toggle a task checkbox on or off. |
Daily notes (extended)
Tool | Description |
| Read the contents of today's daily note. |
| Prepend content after the frontmatter of the daily note. |
Templates
Tool | Description |
| List all available templates in the vault. |
| Read the contents of a template, optionally resolved. |
Links
Tool | Description |
| List all outgoing links from a note. |
Properties (extended)
Tool | Description |
| List all frontmatter properties used across the vault. |
| Remove a frontmatter property from a note. |
Tags (extended)
Tool | Description |
| Get detailed info about a specific tag and its files. |
File management
Tool | Description |
| Move or rename a file; Obsidian updates internal links. |
Bases
Tool | Description |
| Query an Obsidian Base and return structured results. |
Project management
Tool | Description |
| Create a new project with overview and backlog files. |
| List all projects in the vault. |
| Read a project's overview metadata. |
| Load full project context: overview, backlog, recent sessions. |
| Generate a summary of project activity over a date range. |
| Cross-project dashboard with status, activity, and backlog counts. |
| Add an item to a project's backlog. |
| Read a project's backlog. |
| List open backlog items and backfill missing open-item IDs. |
| Mark a backlog item done by unique ID or text, with timestamp. |
| Mark multiple backlog items done in a single call. |
| Move a backlog item (by ID or text) to a specific position. |
| Reorder multiple backlog items (by IDs or text) in one call. |
| Sweep all done items into an |
Backlog entries created by backlog_add include a stable [#<id>] marker.
Prefer matching by ID over substring text matching where possible -- IDs survive
edits to item text.
Project structure
src/41
cli.ts -- Low-level Obsidian CLI wrapper (exec, arg building, errors).
fs-ops.ts -- Direct filesystem operations (mkdir, read, write) for exact path control.
tools.ts -- MCP tool definitions (names, descriptions, JSON schemas).
handlers.ts -- Dispatches tool calls (39 tools) to CLI commands or filesystem ops.
server.ts -- MCP server entry-point (stdio transport, error handling).
validation.ts -- Input validation against tool schemas.
tests/
cli.test.ts -- Unit tests for argument building and error types.
fs-ops.test.ts -- Unit tests for filesystem operations.
runObsidian.test.ts -- Tests for CLI execution, timeouts, vault targeting.
handlers.test.ts -- Tests for all 37 tool handlers (CLI and fs-ops are mocked).
tools.test.ts -- Schema validation for every tool definition.
validation.test.ts -- Input validation tests (types, enums, required fields).
server.test.ts -- Server factory, error formatting, version checks.Development
npm run dev # Watch-mode TypeScript compilation
npm test # Run the test suite once
npm run test:watch # Run tests in watch mode
npm run test:coverage # Run tests with coverage report
npm run build # One-shot compilation
npm run lint # Run ESLint
npm run format:check # Check Prettier formatting
npm start # Start the MCP server on stdioHow it works
An MCP client (VS Code, Claude Desktop, etc.) launches the server over stdio.
The client calls
tools/listand receives the 37 tool definitions fromsrc/tools.ts.When the client invokes a tool,
src/server.tsroutes the call tohandleTool()insrc/handlers.ts.handleTool()validates input against the tool schema, then either usesbuildArgs()andrunObsidian()fromsrc/cli.tsto execute the correspondingobsidianCLI command, or uses direct filesystem operations fromsrc/fs-ops.tswhen exact path control is needed (e.g. creating notes in subdirectories, project management).The CLI output is returned to the client as a text content block.
Testing
Tests use Vitest and mock the CLI layer so they never invoke the real Obsidian binary. Run:
npm testSecurity considerations
Full vault access. The server has read/write access to every note in the targeted vault. Limit
OBSIDIAN_VAULTto vaults you are comfortable exposing to AI agents.No authentication. The stdio transport has no built-in auth. Access control depends entirely on who can launch the server process.
Input validation. All tool inputs are validated against their declared schemas before execution. The server uses
execFile(notexec) to avoid shell injection, but note that file/path values are passed directly to the Obsidian CLI.Environment inheritance. The child process inherits the parent's environment variables. Avoid storing secrets in env vars visible to the server process.
Troubleshooting
Symptom
: obsidian: command not found
Cause: CLI binary not on PATH
Fix: Ensure Obsidian 1.12+ is installed and the CLI is enabled in Settings > General
Symptom
: Command timed out after 15000ms
Cause: Obsidian desktop app not running
Fix: Start the Obsidian app before using the MCP server
Symptom
: vault not found
Cause: Vault name mismatch
Fix: Check that OBSIDIAN_VAULT matches the exact name in Obsidian’s vault switcher
Symptom
: Catalyst licence required
Cause: Missing licence
Fix: The Obsidian CLI requires a Catalyst licence — purchase one at obsidian.md
Symptom
: Server exits immediately
Cause: Node.js version too old
Fix: Ensure Node.js >= 18 (node --version)
Licence
Available Tools
16 toolsappend_to_noteA
Append content to the end of an existing note. Useful for adding session logs, tasks, or follow-up notes to an existing document.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Note name to append to | |
| path | No | Exact path from vault root | |
| content | Yes | Content to append. Use \n for newlines. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool is for appending to existing notes, implying mutation, but does not disclose behavioral traits such as required permissions, whether the operation is idempotent, error handling, or how it interacts with note formatting. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with two concise sentences that each add value: the first states the purpose, and the second provides usage context. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with 3 parameters), no annotations, and no output schema, the description is incomplete. It covers purpose and usage but lacks details on behavior, error cases, or output format, which are needed for adequate agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond what the schema provides, such as explaining the relationship between 'file' and 'path' or providing examples. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Append content') and target resource ('to the end of an existing note'), distinguishing it from siblings like 'create_note', 'prepend_to_note', and 'read_note'. It specifies the verb+resource+scope precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Useful for adding session logs, tasks, or follow-up notes to an existing document'), but does not explicitly state when not to use it or name alternatives like 'prepend_to_note' or 'create_note' for new notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_noteB
Create a new note in the Obsidian vault. Supports optional content and templates. Use this when you need to record a new session, decision, or piece of documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Note name (without .md extension) | |
| content | No | Initial content for the note. Supports markdown. Use \n for newlines. | |
| template | No | Template name to use for the note | |
| overwrite | No | Overwrite if a note with this name already exists |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Supports optional content and templates,' which adds some context beyond the schema, but fails to cover critical aspects like permissions needed, whether creation is idempotent, error handling for duplicate names without overwrite, or rate limits. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that are front-loaded: the first states the core purpose, and the second provides usage context. There's no wasted verbiage, and each sentence adds value. However, it could be slightly more structured by explicitly listing key parameters or behaviors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation with 4 parameters), no annotations, and no output schema, the description is moderately complete. It covers the basic purpose and some usage but misses behavioral details like what happens on success/failure or return values. For a creation tool, more context on outcomes and constraints would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by mentioning 'Supports optional content and templates,' which loosely relates to 'content' and 'template' parameters but doesn't provide additional syntax or format details. With high schema coverage, the baseline is 3, and the description doesn't significantly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new note') and resource ('in the Obsidian vault'), making the purpose immediately understandable. It distinguishes from siblings like 'append_to_note' or 'read_note' by specifying creation rather than modification or reading. However, it doesn't explicitly contrast with 'daily_note' which might also create notes, so it's not fully differentiated from all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context with 'Use this when you need to record a new session, decision, or piece of documentation,' which implies scenarios for creation. However, it lacks explicit guidance on when to use alternatives like 'daily_note' for date-based notes or 'append_to_note' for adding to existing notes. No exclusions or prerequisites are mentioned, leaving gaps in decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
daily_appendA
Append content to today's daily note. Creates the daily note if it doesn't exist. Useful for logging tasks, session summaries, or quick entries.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to append to the daily note. Use \n for newlines. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context beyond the basic action by stating 'creates the daily note if it doesn't exist,' which clarifies a key behavioral trait. However, it lacks details on permissions, error handling, or response format, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with two concise sentences that directly state the purpose and a helpful usage example. Every sentence earns its place without redundancy or unnecessary elaboration, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a mutation with creation fallback), no annotations, and no output schema, the description is minimally adequate. It covers the core action and a behavioral nuance but lacks details on return values, error cases, or integration with sibling tools, leaving room for improvement in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the input schema already documents the single 'content' parameter with its type and formatting note. The description doesn't add any parameter-specific information beyond what's in the schema, resulting in a baseline score of 3 as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'append' and resource 'today's daily note' with the specific action of adding content. It distinguishes from siblings like 'append_to_note' by specifying 'today's daily note' as the target, though it doesn't explicitly contrast with other daily-related tools like 'daily_note'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context with 'useful for logging tasks, session summaries, or quick entries,' suggesting when to use this tool. However, it doesn't explicitly state when to choose this over alternatives like 'append_to_note' or 'create_note,' nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
daily_noteA
Get today's daily note path, creating it if it doesn't exist. Returns the file path of the daily note.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavior: it gets the path and creates the note if missing. However, it lacks details on permissions, file format, location, or error handling, which are important for a tool that modifies the filesystem.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and concise with two sentences: the first states the core action, and the second specifies the return value. Every sentence earns its place without waste, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a tool that potentially creates files, the description is minimally complete. It covers the basic purpose and return value but omits details like output format, error cases, or side effects, which could aid the agent in safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema coverage, the baseline is 4. The description adds no parameter information, but this is acceptable as there are no parameters to document, and it clarifies the tool's action without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('get' and 'creating') and resource ('today's daily note path'). It distinguishes from siblings like 'create_note' (general creation) and 'read_note' (reading existing notes) by focusing on the daily note with creation fallback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: for accessing today's daily note, ensuring it exists. However, it doesn't explicitly state when not to use it or name alternatives like 'read_note' for existing notes or 'create_note' for non-daily notes, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_backlinksA
List all notes that link to a given note (backlinks/incoming links). Provide at least one of 'file' or 'path' to identify the note.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Note name to find backlinks for | |
| path | No | Exact path from vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It clearly describes the read-only nature of listing backlinks, but doesn't mention potential limitations like whether it returns all backlinks or is paginated, what happens if no backlinks exist, or if there are rate limits. It provides basic operational context but lacks deeper behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each serve distinct purposes: the first states the tool's purpose, the second provides critical usage guidance. Every word earns its place with zero redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 2 parameters and 100% schema coverage but no output schema, the description provides adequate context about what the tool does and how to use it. However, it doesn't describe the return format (e.g., list structure, what fields are included in each backlink entry), which would be helpful given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents both parameters well. The description adds valuable semantic context by explaining the relationship between 'file' and 'path' parameters ('at least one of'), which clarifies their optional but mutually reinforcing nature. This goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all notes that link to a given note') and identifies the resource ('backlinks/incoming links'). It distinguishes this from siblings like 'get_outline' or 'search_vault' by focusing specifically on reverse link relationships rather than content structure or general search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('to find backlinks for a note') and specifies the required input condition ('Provide at least one of 'file' or 'path''). However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools for similar link-related queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outlineB
Get the heading structure/outline of a note.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Note name | |
| path | No | Exact path from vault root | |
| format | No | Output format (default: tree) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves heading structure but does not cover aspects like permissions required, rate limits, error handling, or output format details (e.g., tree vs. markdown implications). For a tool with no annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly. Every word earns its place, exemplifying ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimally adequate. It covers the core purpose but lacks details on output behavior, error cases, or integration with sibling tools. Without an output schema, it should ideally hint at return values, but it does not, leaving room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters ('file', 'path', 'format') with descriptions and an enum for 'format'. The description adds no additional meaning beyond the schema, such as clarifying parameter interactions or default behaviors. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Get the heading structure/outline of a note,' which specifies the verb ('Get') and resource ('heading structure/outline of a note'). It distinguishes from siblings like 'read_note' (full content) and 'get_tags' (metadata), though not explicitly. However, it lacks explicit sibling differentiation, preventing a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios like needing only headings versus full content (vs. 'read_note') or how it relates to other tools like 'get_backlinks' or 'list_files'. Without any usage context or exclusions, it falls short of even implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagsA
List all tags in the vault with their occurrence counts. Always returns all tags with counts included.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order (default: name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that it 'Always returns all tags with counts included', indicating completeness and output format, but lacks details on permissions, rate limits, or error handling. It adds some behavioral context but is not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste, front-loading the core purpose ('List all tags...') and adding a behavioral note ('Always returns...'). Every sentence earns its place by providing essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple single-parameter tool, the description is adequate but has gaps. It explains what the tool does and output behavior, but lacks details on return format, error cases, or integration with sibling tools, making it minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the 'sort' parameter with its enum and default. The description adds no parameter-specific information beyond what the schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all tags in the vault'), specifying the output includes 'occurrence counts'. It distinguishes from siblings like 'list_files' or 'search_vault' by focusing specifically on tags with counts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving tags with counts, but provides no explicit guidance on when to use this tool versus alternatives like 'search_vault' or 'get_vault_info'. It mentions 'Always returns all tags', which suggests it's comprehensive, but lacks context on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vault_infoB
Get information about the Obsidian vault: name, path, file count, folder count, and size.
| Name | Required | Description | Default |
|---|---|---|---|
| info | No | Return only a specific piece of info |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states what data is returned but lacks behavioral details like whether this is a fast read operation, if it requires specific permissions, or if it might fail if the vault is inaccessible. The description is minimal and does not disclose operational traits beyond the output content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and enumerates the returned data. There is no wasted text, and it directly communicates the tool's function without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no output schema, no annotations), the description is adequate but has gaps. It specifies what data is returned but does not cover behavioral aspects or usage context. For a simple read tool, it meets minimum viability but lacks completeness for optimal agent guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'info' documented as returning only a specific piece of info. The description does not add meaning beyond the schema, as it lists all possible info values but does not explain their semantics or usage. Baseline 3 is appropriate since the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'information about the Obsidian vault', specifying the exact data returned (name, path, file count, folder count, and size). It distinguishes itself from sibling tools like list_files (which lists files) or get_tags (which retrieves tags) by focusing on vault metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as requiring an open vault, or compare it to similar tools like get_outline or search_vault for different information needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesB
List files in the vault. Can filter by folder and/or file extension.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Filter to files in this folder | |
| ext | No | Filter by file extension (e.g. 'md', 'png') | |
| total | No | Return only the file count instead of the list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions filtering capabilities but fails to describe key behaviors such as whether the list is paginated, sorted, or includes hidden files, what permissions are required, or the format of the returned data. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List files in the vault') and immediately adds qualifying details about filtering. Every word earns its place with no redundancy or fluff, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and filtering options but lacks details on behavioral traits like output format, pagination, or error handling. Without annotations or an output schema, users must infer these aspects, leaving room for uncertainty in tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters ('folder', 'ext', 'total') clearly documented in the input schema. The description adds marginal value by mentioning filtering by folder and extension, aligning with the schema, but doesn't provide additional context like syntax examples or interaction effects between parameters. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('files in the vault'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'search_vault' by focusing on listing with optional filtering rather than full-text search. However, it doesn't explicitly differentiate from 'get_vault_info' which might also provide file information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the mention of filtering capabilities ('Can filter by folder and/or file extension'), suggesting this tool is for retrieving files with optional scoping. However, it doesn't explicitly state when to use this versus alternatives like 'search_vault' for content-based queries or 'get_vault_info' for metadata, leaving some ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksB
List tasks from notes. Can filter by file, completion status, or show tasks from the daily note.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Filter tasks to a specific note | |
| path | No | Filter tasks by file path | |
| all | No | List all tasks in the vault | |
| daily | No | Show tasks from today's daily note | |
| done | No | Show only completed tasks | |
| todo | No | Show only incomplete tasks | |
| verbose | No | Group by file with line numbers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions filtering capabilities but fails to describe critical behaviors: it doesn't specify the return format (e.g., list structure, pagination), potential rate limits, authentication requirements, or whether it's a read-only operation (though implied by 'list'). For a tool with 7 parameters and no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List tasks from notes') and briefly mentions key features. There's no wasted verbiage, and it's appropriately sized for the tool's complexity. However, it could be slightly more structured by separating filtering options for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, no output schema, no annotations), the description is incomplete. It lacks details on output format, behavioral traits like safety or performance, and doesn't fully compensate for the absence of annotations. While the schema covers parameters well, the overall context for an AI agent to use this tool effectively is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal value by hinting at filtering ('by file, completion status, or show tasks from the daily note'), which loosely maps to parameters like 'file', 'done', 'todo', and 'daily', but doesn't provide additional syntax, constraints, or interactions beyond the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List tasks from notes') and the resource ('tasks'), making the purpose immediately understandable. It distinguishes from some siblings like 'toggle_task' or 'create_note' by focusing on listing rather than modifying. However, it doesn't explicitly differentiate from 'search_vault' which might also retrieve tasks, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage by mentioning filtering options ('by file, completion status, or show tasks from the daily note'), which suggests when to use specific parameters. However, it lacks explicit guidance on when to choose this tool over alternatives like 'search_vault' or 'list_files', and doesn't mention prerequisites or exclusions, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepend_to_noteB
Prepend content after the frontmatter of a note. Useful for adding a summary or status update at the top of an existing document.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Note name to prepend to | |
| path | No | Exact path from vault root | |
| content | Yes | Content to prepend. Use \n for newlines. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that content is added 'after the frontmatter' and that the note must be 'existing', which are useful behavioral details. However, it doesn't disclose critical aspects like whether this operation is destructive (modifies the file), what happens if the file doesn't exist, or any permission/error handling, leaving significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste. The first sentence states the core functionality, and the second provides a practical use case, making it front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutation tool with no annotations and no output schema, the description is somewhat incomplete. It covers the basic purpose and a use case but lacks details on behavior, error conditions, or output. However, the 100% schema coverage for parameters and clear purpose keep it from being severely inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all three parameters well. The description doesn't add any meaningful parameter semantics beyond what the schema provides (e.g., it doesn't clarify the relationship between 'file' and 'path' or provide examples for 'content'). Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('prepend content after the frontmatter') and resource ('a note'), making the purpose understandable. However, it doesn't explicitly distinguish this tool from its sibling 'append_to_note', which handles similar content addition but at a different location in the note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage context ('useful for adding a summary or status update at the top of an existing document'), suggesting when this tool might be appropriate. However, it doesn't explicitly state when to use this versus alternatives like 'append_to_note' or 'create_note', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_noteA
Read the full contents of a note. Returns the markdown content including frontmatter. Provide at least one of 'file' or 'path' to identify the note.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Note name (resolved like internal links — no path or extension needed) | |
| path | No | Exact path from vault root (e.g. 'folder/note.md') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return type ('markdown content including frontmatter') and parameter requirements, but lacks details on error handling, permissions, or performance aspects like rate limits. This is adequate but has gaps for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a concise usage instruction. Both sentences are essential—none are redundant—making it efficiently structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (simple read operation), no annotations, no output schema, and high schema coverage, the description is mostly complete. It covers purpose, return type, and parameter guidance, but could improve by mentioning error cases or output structure more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters fully. The description adds minimal value by reiterating the need for at least one parameter, but does not provide additional syntax or format details beyond what the schema specifies, aligning with the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Read') and resource ('full contents of a note'), specifying it returns 'markdown content including frontmatter'. It distinguishes from siblings like 'append_to_note' or 'create_note' by focusing solely on reading without modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage context by stating 'Provide at least one of 'file' or 'path' to identify the note', which guides parameter selection. However, it does not specify when to use this tool over alternatives like 'read_property' or 'search_vault', leaving some ambiguity in sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_propertyB
Read a frontmatter property value from a note.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Property name to read | |
| file | No | Note name | |
| path | No | Exact path from vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it's a read operation, implying safety, but doesn't disclose behavioral traits like error handling, permissions needed, or what happens if the property doesn't exist. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste. It's front-loaded and appropriately sized for the tool's purpose, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimal but covers the basic purpose. However, it lacks details on behavior, usage context, and output, making it incomplete for effective agent use without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no additional meaning beyond implying the tool reads from frontmatter, but it doesn't explain parameter interactions or provide context beyond the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('read') and resource ('a frontmatter property value from a note'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'read_note' or 'get_tags', which might also involve reading from notes, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'read_note' or 'set_property'. It lacks context on prerequisites, exclusions, or comparisons to sibling tools, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_vaultA
Search the vault for text. Returns matching files and context. Use Obsidian's full search syntax (supports operators, tags, paths).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (supports Obsidian search syntax) | |
| path | No | Limit search to a folder path | |
| limit | No | Maximum number of results | |
| format | No | Output format (default: json) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the return type ('matching files and context') and search syntax, but lacks details on behavioral traits like pagination, error handling, performance limits, or authentication needs. For a search tool with no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by essential details in a second sentence. Every word earns its place—no fluff or redundancy—making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters with full schema coverage but no output schema and no annotations, the description is adequate for basic use but incomplete. It explains what the tool does and the query syntax, but lacks details on output structure, error cases, or advanced behavioral context, which are important for a search operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by reiterating 'Obsidian's full search syntax' for the query, but doesn't provide additional semantics beyond what's in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search') and resource ('the vault for text'), specifies what it returns ('matching files and context'), and distinguishes it from siblings like list_files (which lists without searching) and read_note (which reads specific files). The mention of 'Obsidian's full search syntax' further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Search the vault for text') and implies alternatives by specifying 'Obsidian's full search syntax,' suggesting it's for complex queries. However, it doesn't explicitly state when not to use it (e.g., vs. list_files for simple listing) or name specific sibling alternatives, keeping it from a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_propertyC
Set a frontmatter property on a note. Supports text, list, number, checkbox, date, datetime types.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Property name | |
| value | Yes | Property value | |
| type | No | Property type | |
| file | No | Note name | |
| path | No | Exact path from vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the action 'Set' and supported types, but lacks details on permissions, whether it overwrites existing properties, error handling, or response format. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and includes essential details about supported types. There is no wasted verbiage, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits like side effects, error conditions, or return values, which are crucial for an agent to use it correctly in context with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value by listing supported types (text, list, number, etc.), which clarifies the 'type' parameter beyond the schema's enum. However, with 100% schema description coverage, the schema already documents all parameters well, so the description provides only marginal additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'frontmatter property on a note', specifying what the tool does. It distinguishes from siblings like 'read_property' or 'append_to_note' by focusing on setting rather than reading or appending, though it doesn't explicitly mention these distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'append_to_note' or 'create_note', nor does it mention prerequisites such as needing an existing note. It only lists supported types without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_taskA
Toggle a task's completion status. Identify the task by 'ref' (path:line) or by 'file' and 'line' together.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Task reference in path:line format (e.g. 'Recipe.md:8') | |
| file | No | Note name containing the task | |
| line | No | Line number of the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('toggle a task's completion status'), which implies a mutation, but doesn't disclose critical traits like whether this requires specific permissions, if the change is reversible, what happens on error, or the response format. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste: the first states the purpose, and the second explains parameter usage. It's front-loaded with the core action and efficiently conveys necessary information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a mutation with three parameters), no annotations, and no output schema, the description is partially complete. It covers the purpose and parameter identification well, but lacks details on behavioral traits (e.g., permissions, error handling) and return values, which are important for a mutation tool. It's adequate but has clear gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (ref, file, line) with clear descriptions. The description adds value by explaining the identification logic ('by ref or by file and line together'), which clarifies the parameter relationships, but doesn't provide additional syntax or format details beyond what the schema offers. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('toggle a task's completion status') and the resource ('task'), distinguishing it from siblings like 'list_tasks' (which lists tasks) or 'append_to_note' (which modifies note content). It uses precise verbs and specifies the exact operation on the target resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying how to identify tasks ('by ref or by file and line together'), but it doesn't explicitly state when to use this tool versus alternatives like 'list_tasks' for viewing tasks or 'set_property' for other modifications. It provides some contextual guidance but lacks explicit when/when-not directives or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
16 tool updates
v0.1.0- First observed
append_to_note - First observed
create_note - First observed
daily_append - First observed
daily_note - First observed
get_backlinks - First observed
get_outline - First observed
get_tags - First observed
get_vault_info - First observed
list_files - First observed
list_tasks - First observed
prepend_to_note - First observed
read_note - First observed
read_property - First observed
search_vault - First observed
set_property - First observed
toggle_task
TDQS
Most tools have distinct purposes, but there is some overlap between 'append_to_note' and 'prepend_to_note' (both modify note content), and 'daily_append' and 'append_to_note' (both append content, but to different targets). Descriptions help clarify these differences, but an agent might occasionally confuse them when deciding between appending to a specific note versus the daily note.
All tool names follow a consistent verb_noun pattern with snake_case, such as 'append_to_note', 'create_note', and 'get_backlinks'. There are no deviations in naming conventions, making the set predictable and easy to parse.
With 16 tools, the server is well-scoped for managing an Obsidian vault, covering operations like note creation, reading, updating, searching, and task management. Each tool serves a specific function without redundancy, fitting the domain's complexity appropriately.
The tool set provides comprehensive coverage for Obsidian vault management, including CRUD operations for notes (create, read, update via append/prepend), property handling, search, backlinks, tags, tasks, and vault info. There are no obvious gaps; agents can perform full workflows from note creation to organization and retrieval.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol server that enables AI assistants to read, write, and manipulate notes in your Obsidian vault through a standardized interface.53,4684ISC
- FlicenseCqualityFmaintenanceProvides LLM agents with comprehensive access to Obsidian vaults via the official Obsidian CLI bridge. It enables users to read, search, and modify notes, tasks, properties, and plugins while the Obsidian desktop app is running.5416-
- FlicenseNot gradedqualityDmaintenanceA local MCP server that wraps the Obsidian CLI to give AI assistants direct access to read, edit, and manage notes within an Obsidian vault. It enables advanced operations such as frontmatter property management, context-aware searching, and the execution of internal Obsidian commands.2-
- AlicenseAqualityFmaintenanceA Model Context Protocol (MCP) server that provides AI assistants with secure access to Obsidian vaults. Enables reading, writing, searching, and managing notes without requiring Obsidian to be running.505,361Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dickiedyce/Obsidian-TS-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server