Obsidian MCP Extended
Provides comprehensive tools for interacting with Obsidian vaults, including filesystem-native operations (backlinks, tags, tasks, Dataview fields, Kanban boards, link analysis, canvas files, templates) and API-based plugins (Dataview DQL, Templater, workspace management, command execution) when the Obsidian Local REST API plugin is active.
Click on "Deploy 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 MCP Extendedfind broken links in vault"
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.
Obsidian MCP Extended
A comprehensive MCP server for Obsidian with 45 tools across hybrid filesystem-native and API-based architectures. Extends obsidian-mcp with advanced plugin control, backlinks, tag management, and analytics.
Note: This project extends the base
obsidian-mcpserver. The original README is preserved as README.upstream.md.
๐ Features
Hybrid Architecture
Filesystem-Native Tools (33 tools) - Work completely offline, no Obsidian required:
โ Direct file access for maximum performance
โ Zero Obsidian plugins needed
โ Instant startup, minimal memory
โ Full offline capability
API-Based Tools (12 tools) - Enhanced features when Obsidian is running:
๐ Real-time workspace control
๐ Advanced plugin integration (Templater, Dataview DQL)
๐ Command palette access
๐ Requires Local REST API plugin
Related MCP server: obsidian-mcp-pro
๐ฆ Complete Tool List (45 Tools)
๐ Backlink Analysis (2 tools - Filesystem)
get_backlinks_fs- Find all notes linking to a specific noteget_broken_links_fs- Identify broken wikilinks in vault
๐ท๏ธ Tag Management (4 tools - Filesystem)
analyze_note_tags_fs- Extract frontmatter and inline tagsadd_tag_fs- Add tags to note frontmatterremove_tag_fs- Remove tags from frontmattersearch_by_tag_fs- Find notes by tag
โ๏ธ Smart Content Insertion (4 tools - Filesystem)
insert_after_heading_fs- Insert content after specific headingsinsert_after_block_fs- Insert after block referencesupdate_frontmatter_field_fs- Update/add frontmatter fieldsappend_to_note_fs- Append content to note end
๐ Statistics & Analytics (2 tools - Filesystem)
note_statistics_fs- Comprehensive stats for individual notesvault_statistics_fs- Aggregate vault statistics
โ Tasks Plugin (5 tools - Filesystem)
search_tasks- Search tasks with emoji metadata (๐ โซ๐โ )create_task- Create tasks with metadatatoggle_task_status- Toggle complete/incompleteupdate_task_metadata- Update due dates, priority, recurrenceget_task_statistics- Task completion analytics
๐ Dataview Inline Fields (4 tools - Filesystem)
extract_dataview_fields- Parse all syntax variants (::, [], ())search_by_dataview_field- Find notes by field valuesadd_dataview_field- Add inline fieldsremove_dataview_field- Remove inline fields
๐ Kanban Boards (5 tools - Filesystem)
parse_kanban_board- Parse markdown Kanban structureadd_kanban_card- Add cards to columnsmove_kanban_card- Move cards between columnstoggle_kanban_card- Toggle card completionget_kanban_statistics- Board analytics
๐ Enhanced Link Tracking (5 tools - Filesystem)
get_link_graph- Complete vault link graphfind_orphaned_notes- Identify isolated notesfind_hub_notes- Find highly connected notesanalyze_link_health- Vault connectivity metricsget_note_connections- Multi-level connection exploration
๐จ Canvas Files (5 tools - Filesystem)
parse_canvas- Parse JSON Canvas v1.0 filesadd_canvas_node- Add text/file nodesadd_canvas_edge- Connect nodes with edgesremove_canvas_node- Delete nodesget_canvas_node_connections- Analyze node relationships
๐ Templates (3 tools - Filesystem)
expand_template- Simple {{variable}} expansioncreate_note_from_template_fs- Apply templates offlinelist_templates- Browse available templates
๐ Dataview Query API (4 tools - Requires Obsidian + Dataview)
execute_dataview_query- Execute full DQL queries (LIST/TABLE/TASK)list_notes_by_tag_dql- DQL tag-based querieslist_notes_by_folder_dql- DQL folder queriestable_query_dql- Create tabular data views
๐ Templater Plugin API (3 tools - Requires Obsidian + Templater)
render_templater_template- Dynamic template renderingcreate_note_from_template_api- Create notes from Templater templatesinsert_templater_template- Insert templates at cursor
๐ Workspace Management (6 tools - Requires Obsidian)
get_active_file- Get currently active fileopen_file- Open files in Obsidianclose_active_file- Close current filenavigate_back- Navigate backward in historynavigate_forward- Navigate forward in historytoggle_edit_mode- Switch edit/preview mode
๐ Command Execution (3 tools - Requires Obsidian)
execute_command- Run Obsidian commandslist_commands- List all available commandssearch_commands- Search commands by name/ID
๐ Quick Start
Prerequisites
# Python 3.11+ required
python --version
# Install uv (recommended package manager)
curl -LsSf https://astral.sh/uv/install.sh | shInstallation
# Clone repository
git clone https://github.com/aleksakarac/obsidian-mcp.git
cd obsidian-mcp
# Install with uv (recommended)
uv pip install .
# Or with pip
pip install .Configuration
For Filesystem-Only Tools (No Obsidian Required)
Add to your Claude Code config (~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"obsidian": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/obsidian-mcp",
"run",
"obsidian-mcp"
],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault"
}
}
}
}For Full Hybrid Mode (Filesystem + API Tools)
Install Local REST API plugin in Obsidian
Configure plugin settings:
Enable HTTPS: No (use HTTP for localhost)
API Key: Generate a secure key
Port: 27124 (default)
Update Claude Code config:
{
"mcpServers": {
"obsidian": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/obsidian-mcp",
"run",
"obsidian-mcp"
],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault",
"OBSIDIAN_REST_API_KEY": "your-api-key-here",
"OBSIDIAN_API_URL": "http://localhost:27124"
}
}
}
}๐ Usage Examples
Tasks Plugin (Filesystem-Native)
# Search for high-priority incomplete tasks
search_tasks(
status="incomplete",
priority="high",
sort_by="due_date",
limit=10
)
# Create task with metadata
create_task(
file_path="Projects/Current.md",
content="Review PR #123",
priority="high",
due_date="2025-11-01",
tags=["code-review", "urgent"]
)Dataview Fields (Filesystem-Native)
# Extract all inline fields
extract_dataview_fields(file_path="Project Notes.md")
# Find notes where status=active
search_by_dataview_field(
field_name="status",
field_value="active"
)Kanban Boards (Filesystem-Native)
# Parse board structure
parse_kanban_board(file_path="Boards/Sprint.md")
# Move card between columns
move_kanban_card(
file_path="Boards/Sprint.md",
card_text="Implement authentication",
from_column="To Do",
to_column="In Progress"
)Link Analysis (Filesystem-Native)
# Find orphaned notes
find_orphaned_notes()
# Get link graph
get_link_graph()
# Analyze vault health
analyze_link_health()Dataview Queries (Requires Obsidian)
# Execute DQL query
execute_dataview_query(
query="TABLE status, due FROM #project WHERE status = 'active'"
)Workspace Control (Requires Obsidian)
# Open file
open_file(file_path="Daily/2025-10-22.md")
# Get active file
get_active_file()
# Execute command
execute_command(command_id="editor:toggle-bold")๐๏ธ Architecture
Hybrid Design Philosophy
Filesystem-First Approach:
Everything that CAN be filesystem-native, IS filesystem-native
Direct file access for reading/writing markdown
Zero dependencies on Obsidian plugins for core features
Full offline capability
API Enhancement:
API tools complement filesystem tools
Provide features impossible without Obsidian (workspace UI, command execution)
Enable plugin integration (Templater, Dataview DQL)
Graceful degradation with clear error messages
Technology Stack
FastMCP: MCP protocol implementation
Pydantic: Type-safe data models with validation
Python Standard Library: Zero external dependencies for filesystem operations
httpx: Async HTTP client for API tools
Performance
Filesystem Tools:
1,000 notes: < 3 seconds for full vault scans
Single note operations: < 100ms
Link graph generation: < 10 seconds for 1,000 notes
API Tools:
Command execution: < 500ms
Query execution: Depends on Dataview plugin
Workspace operations: < 200ms
๐งช Testing
See TESTING.md for comprehensive testing documentation.
# Run all tests
uv run pytest
# Run specific test suite
uv run pytest tests/unit/test_tasks.py -v
# Run with coverage
uv run pytest --cov=src --cov-report=html๐ Development
Project Structure
obsidian-mcp/
โโโ src/
โ โโโ models/ # Pydantic data models
โ โโโ tools/ # MCP tool implementations
โ โโโ utils/ # Shared utilities (patterns, API client)
โ โโโ server.py # FastMCP server with tool registrations
โโโ tests/
โ โโโ unit/ # Unit tests for tools
โ โโโ integration/ # End-to-end workflow tests
โโโ specs/ # Feature specifications
โโโ pyproject.toml # Project configurationAdding New Tools
Create tool module in
src/tools/Add Pydantic models to
src/models/obsidian.py(if needed)Register tool in
src/server.pywith@mcp.tool()decoratorAdd unit tests in
tests/unit/Update README.md and CHANGELOG.md
๐ค Contributing
Contributions welcome! Please:
Follow existing code style
Add tests for new features
Update documentation
Ensure all tests pass
๐ License
MIT License - see LICENSE for details
๐ Acknowledgments
Base implementation: obsidian-mcp
MCP Protocol: Model Context Protocol
Obsidian: Obsidian.md
๐ Additional Documentation
TESTING.md - Testing guide
CHANGELOG.md - Version history
README.upstream.md - Original obsidian-mcp README
specs/ - Feature specifications and design docs
Available Tools
63 toolsadd_canvas_node_toolC
Add node to Canvas (filesystem-native, offline).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Canvas file path | |
| node_type | Yes | Node type | |
| content | Yes | Node content | |
| x | Yes | X position | |
| y | Yes | Y position | |
| vault_path | No | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions 'filesystem-native, offline' but does not disclose effects like file creation, position constraints, or error cases.
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 extremely concise with a single sentence, front-loading the purpose. It could be more structured but attains 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 7 parameters, no output schema, and no annotations, the description is severely incomplete. It omits details about return values, side effects, and parameter interactions.
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 coverage is 71% (5/7 params have descriptions). The description adds 'filesystem-native, offline' which provides context but does not improve parameter understanding beyond schema.
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 'Add' and the resource 'node to Canvas'. It is specific enough to distinguish from other tools like parse_canvas_tool, though it does not explicitly contrast with 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?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description is purely functional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dataview_field_toolA
Add a Dataview inline field to a note (filesystem-native, offline).
Creates a new Dataview field using the specified syntax variant. Automatically detects and preserves value types (number, boolean, date, etc.).
Syntax variants:
full-line:
field:: value(standalone line, most common)bracket:
[field:: value](inline, visible in reading mode)paren:
(field:: value)(inline, hidden key in reading mode)
Insertion positions:
after_frontmatter: After YAML frontmatter (or start if none)
start: Very beginning of file
end: Very end of file
When to use:
Adding metadata to existing notes
Batch tagging/categorization
Automated property assignment
Template-based field injection
Returns: Success status, formatted field string, and canonical key
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to note file (relative to vault) | |
| key | Yes | Field key | |
| value | Yes | Field value (will be auto-typed: number, boolean, date, etc.) | |
| syntax_type | No | Syntax variant: full-line (field:: value), bracket ([field:: value]), paren ((field:: value)) | full-line |
| insert_at | No | Where to insert the field | after_frontmatter |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behaviors: auto-detection of value types, syntax variants, insertion positions, and returns success info. It does not mention file permissions or potential conflicts, but covers core behavior well.
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 well-structured with clear sections and bullet points. Every sentence adds value, and the most important information (purpose, usage) is front-loaded. Concise without missing critical details.
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 lack of output schema, the description usefully states return values (success, formatted field string, key). It covers purpose, parameters, and behavior adequately. Missing error handling or prerequisite info, but sufficient for typical use.
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 coverage is high (86%), but the description adds value by explaining 'value' auto-typing and detailing 'syntax_type' and 'insert_at' with examples and defaults. It goes beyond just restating the schema.
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 ('Add'), the resource ('Dataview inline field to a note'), and the scope ('filesystem-native, offline'). It distinguishes from sibling tools like remove_dataview_field_tool and search_by_dataview_field_tool by specifying it is for adding new fields.
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 includes a 'When to use' section listing appropriate scenarios (e.g., adding metadata, batch tagging). However, it does not explicitly state when NOT to use the tool or compare it to alternatives like update_frontmatter_field_fs_tool for frontmatter fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_kanban_card_toolA
Add a new card to a Kanban board column (filesystem-native, offline).
Creates a new card with optional metadata and inserts it at the specified position in the target column. Preserves all existing cards and board structure.
Card format:
Incomplete: - [ ] Card text
Completed: - [x] Card text
With metadata: - [ ] Card text @{2025-10-30} #tag [[link]]
When to use:
Adding tasks to project boards
Batch card creation
Automated workflow management
Template-based board setup
Performance:
< 500ms for boards with 1,000 cards
Returns: Success status, column name, position, and formatted card line
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to Kanban board file (relative to vault) | |
| column_name | Yes | Name of the column to add card to (must match ## heading) | |
| card_text | Yes | Card text/description | |
| status | No | Card completion status | incomplete |
| due_date | No | Due date in @{YYYY-MM-DD} format | |
| position | No | Where to insert card in column | end |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses performance (<500ms for 1000 cards), card format details, and that it preserves existing board structure. While it could mention conflict handling or authentication, it provides sufficient behavioral context for an add 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 well-structured with clear sections (card format, when to use, performance, returns). It is slightly verbose but each sentence adds value, and it avoids redundancy with the schema.
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 complexity (8 parameters, no output schema), the description covers purpose, usage, performance, and return format. It lacks details on optional parameters like due_date format but schema covers those. It is complete enough for an add operation tool.
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 88% (high), so baseline is 3. The description adds general context about optional metadata and insertion position but does not significantly elaborate beyond what the schema provides for each parameter.
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 explicitly states 'Add a new card to a Kanban board column' and details the card format, distinguishing it from sibling tools like create_task_tool or toggle_kanban_card_tool. It provides specific verb and resource with clear context.
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?
A 'When to use' section lists specific scenarios such as adding tasks to project boards and batch card creation. Although alternatives are not mentioned, the contexts are clear and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tag_fs_toolA
Add a tag to a note's frontmatter.
Creates frontmatter if it doesn't exist. Handles duplicate tags gracefully. Supports nested tags (e.g., "project/active/critical").
When to use:
Adding tags to organize notes
Bulk tagging operations
Automated note categorization
Performance: < 200ms per operation
Returns: Success status and descriptive message
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note file | |
| tag | Yes | Tag to add (without # symbol) | |
| vault_path | No | Path to vault root (optional) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It covers key actions (creates frontmatter, handles duplicates, supports nested tags, performance <200ms) but omits details like file existence requirements, permission needs, or error handling. The mutation implicit in 'add' is clear, but more depth would improve 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 well-structured with sections for usage, performance, and returns. While it is slightly verbose with the 'When to use' list, every sentence serves a purpose. It could be trimmed but remains concise for the information provided.
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 four parameters and no output schema, the description covers the main function and key behaviors. However, it lacks details on prerequisites (e.g., file must exist), side effects on other frontmatter fields, and error scenarios. This is adequate for a simple tool but not fully complete.
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 coverage is 75% (ctx lacks description). The description adds value by providing an example of nested tags for the 'tag' parameter and contextualizing the tool's purpose, but does not elaborate on filepath or vault_path beyond the schema. The ctx parameter remains undefined, leaving a gap.
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 it adds a tag to a note's frontmatter, creating frontmatter if needed, handling duplicates, and supporting nested tags. This specific verb-resource combination distinguishes it from other tag tools like 'add_tags_tool' which likely operate on different structures.
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 'When to use' section lists use cases like organization and bulk tagging, but does not mention when to avoid this tool or compare it to alternatives such as 'add_tags_tool' or 'remove_tag_fs_tool'. This leaves the agent without guidance on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tags_toolA
Add tags to a note's frontmatter.
When to use:
Organizing notes with tags
Bulk tagging operations
Adding metadata for search
When NOT to use:
Adding tags in note content (use update_note)
Replacing all tags (use update_note with new frontmatter)
Returns: Updated tag list for the note
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note | |
| tags | Yes | Tags to add (without # prefix) | |
| ctx | No |
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 returning an 'Updated tag list for the note,' but does not disclose whether tags are appended or overwritten, or if frontmatter is created when absent. The description provides some behavioral context but lacks depth 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 concise with a front-loaded main sentence, bullet points for usage, and a returns line. It is efficient, though the 'Returns' section could be integrated into the main description to reduce redundancy. Overall, well-structured without unnecessary 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 simplicity and the absence of an output schema, the description covers the basic operation and return value. However, it lacks details on side effects, concurrency, or validation of tags. This is adequate but could be more complete for a tool that modifies note content.
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 67%, and the description does not add any parameter-specific meaning beyond the schema. For example, it does not explain the 'ctx' parameter or provide additional context for 'path' or 'tags' beyond what is already in the schema. Baseline is 3 given the moderate 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 'Add tags to a note's frontmatter.' It uses a specific verb and resource, and the 'When NOT to use' section explicitly distinguishes from update_note for replacing all tags or adding tags in content, removing 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 includes explicit 'When to use' and 'When NOT to use' sections, providing concrete scenarios (organizing notes, bulk tagging) and alternatives (update_note) for incorrect usage. This helps the agent decide when to invoke this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_link_health_toolA
Analyze vault-wide link health metrics (filesystem-native, offline).
Provides comprehensive vault health analysis including:
Total notes and links
Orphaned notes count
Notes with no inlinks/outlinks
Broken links count
Average links per note
Link density score
When to use:
Vault health assessment
Identifying maintenance needs
Tracking vault evolution over time
Understanding vault connectivity
Performance:
1,000 notes: < 15 seconds
10,000 notes: < 150 seconds
Returns: Comprehensive health metrics with counts and averages
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It mentions 'filesystem-native, offline' and provides performance estimates, giving insight into behavior. It does not explicitly state read-only but implies non-destructive analysis.
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 well-structured with bullet points and clear sections. It is concise yet informative, front-loading the purpose and key details without unnecessary 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?
The description covers all necessary aspects: purpose, metrics, usage scenarios, and performance. Even without an output schema, it describes the return values sufficiently. It is complete for its complexity.
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 50%, and the description does not elaborate on parameters beyond what the schema provides. It adds no value for the 'ctx' parameter or usage details for vault_path.
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 what the tool does: 'Analyze vault-wide link health metrics (filesystem-native, offline).' It lists comprehensive metrics and distinguishes from siblings like find_broken_links_tool and find_orphaned_notes_tool.
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 'When to use:' section provides explicit scenarios for using the tool, such as vault health assessment and identifying maintenance needs. No exclusion or alternative guidance is given, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_note_tags_fs_toolA
Extract all tags (frontmatter and inline) from a specific note.
This tool analyzes a note's content and extracts:
Frontmatter tags (from YAML tags field)
Inline tags (#tag syntax in content)
Deduplicated list of all tags
When to use:
Understanding what tags a note has
Before adding tags to avoid duplicates
Analyzing tag usage patterns
Performance: < 100ms per note
Returns: Tags organized by source (frontmatter, inline, all)
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note file (relative to vault or absolute) | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
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 performance (<100ms) and the return structure, but could explicitly state the tool is read-only and has no side effects.
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 well-structured with clear sections (what, outputs, when to use, performance, returns). Every sentence adds value, no 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 simplicity (3 params, no output schema), the description provides sufficient context: output details, usage guidance, and performance. It could be improved by mentioning prerequisites like note existence.
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 67% (two of three parameters described). The description does not add meaning beyond the schema; it focuses on output. With moderate coverage, a baseline of 3 is appropriate.
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 'extract' and the resource 'tags from a note', and distinguishes it from siblings like list_tags_tool by specifying it operates on a single note and returns tags by source.
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 explicit 'When to use' scenarios, giving clear context for appropriate usage. It does not mention exclusions or alternatives, but the context is sufficient for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_to_note_fs_toolA
Append content to the end of a note.
Adds content at the very end of the file. Useful for adding appendices, logs, or any content that should come after all existing content.
When to use:
Adding appendices or footnotes
Appending log entries
Building chronological content
Adding content when position doesn't matter
Performance:
Any note size: < 100ms
Returns: Success status and descriptive message
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note (relative to vault or absolute) | |
| content | Yes | Content to append to the end of the note | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It clearly states the behavior (appends at end, not modifies existing content) and performance (<100ms). It does not mention authorization or side effects, but the append operation is inherently low-risk. The 'Returns' section adds clarity on outcome.
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 highly concise: a single lead sentence followed by bullet-pointed 'When to use', 'Performance', and 'Returns' sections. Every sentence adds utility without redundancy. It is front-loaded with the core action.
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 output schema, the description appropriately covers the return value and performance. The sibling list is large but not directly addressed; however, the tool's distinct append-only purpose is clear. It could briefly note that the tool does not create the note if missing, but this is evident from the name and siblings.
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 coverage is 75%, and the description adds minimal value beyond schema definitions. For 'content', it simply restates 'append to the end of the note' and for 'filepath' it references the schema. The description does not elaborate on formatting or constraints beyond what the schema provides.
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 to the end of a note.' It specifies the verb ('append'), resource ('note'), and exactly where the content goes ('very end of the file'). This distinguishes it from sibling tools like insert_after_heading_fs_tool or update_note_tool.
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 explicit 'When to use' scenarios (appendices, logs, chronological content). However, it does not mention when NOT to use it or suggest alternatives (e.g., for mid-note insertion use insert_after_* tools). Siblings include relevant alternatives, making this a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folder_toolA
Create a new folder in the vault, including all parent folders in the path.
When to use:
Setting up project structure in advance
Creating deep folder hierarchies (e.g., "Apple/Studies/J71P")
Creating archive folders before moving notes
Establishing organizational hierarchy
Preparing folders for future content
When NOT to use:
If you're about to create a note in that path (folders are created automatically)
For temporary organization (just create notes directly)
Note: Will create all necessary parent folders. For example, "Apple/Studies/J71P" will create Apple, Apple/Studies, and Apple/Studies/J71P if they don't exist.
Returns: Creation status with list of folders created and placeholder file path
| Name | Required | Description | Default |
|---|---|---|---|
| folder_path | Yes | Path of the folder to create | |
| create_placeholder | No | Whether to create a placeholder file (.gitkeep or README.md) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that it creates all necessary parent folders and returns creation status. However, it does not mention what happens if a folder already exists or any permission requirements, which would strengthen 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 well-organized with clear sections for usage, not-usage, and returns. It is concise yet thorough, with every sentence adding value.
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 output schema, the description covers purpose, usage, behavior, and return format. It could be improved by detailing error scenarios or the exact placeholder file behavior (e.g., .gitkeep vs README.md), but overall it is sufficiently complete for a folder creation tool.
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 coverage is 67%, so baseline 3. The description adds value by explaining that folder_path supports nested paths and that placeholder creation defaults to true. However, the 'ctx' parameter is not described, and the schema already covers the other two parameters adequately.
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 it creates a folder including all parent folders. It distinguishes itself from sibling tools like create_note_tool by focusing on folder creation only, and provides explicit examples of when to use.
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 explicitly lists when to use (e.g., setting up project structure, deep hierarchies) and when NOT to use (e.g., when notes create folders automatically). This provides clear decision rules for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_note_toolA
Create a new note or overwrite an existing one.
When to use:
Creating new notes with specific content
Setting up templates or structured notes
Programmatically generating documentation
When NOT to use:
Updating existing notes (use update_note unless you want to replace entirely)
Appending content (use update_note with merge_strategy="append")
Returns: Created note information with path and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path where the note should be created relative to vault root | |
| content | Yes | Markdown content for the note. Consider adding tags (use list_tags to see existing ones) | |
| overwrite | No | Whether to overwrite if the note already exists | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries burden; it discloses overwrite capability and return value, but lacks detail on side effects or permissions.
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?
Well-structured with sections and bullet points, concise without waste; minor improvement possible by further condensing.
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 params, no output schema, and many siblings, the description provides sufficient context for an agent to decide when to use it.
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 covers 75% of params; description adds small extra value (e.g., suggesting tags) but doesn't mention ctx param. Adequate but not exceptional.
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 creates or overwrites a note, distinguishing it from siblings like update_note_tool which is mentioned for updates.
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?
Explicitly lists when to use (new notes, templates) and when not to (updating, appending) with alternative tool named (update_note).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_task_toolA
Create a new task with Tasks plugin metadata (filesystem-native, offline).
Creates a checkbox task with optional metadata (priority, dates, recurrence) and inserts it at the specified location in the file. Creates the file if it doesn't exist.
Metadata will be formatted using Tasks plugin emoji syntax:
Priority: โซ๐ผ๐ฝโฌ emojis
Dates: ๐ โณ๐ซโ โ emojis with YYYY-MM-DD
Recurrence: ๐ emoji with pattern
When to use:
Adding tasks to project notes
Creating recurring task templates
Batch task creation
Automated task generation
Returns: Success status, formatted task line, line number, and file path
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to file where task should be created (relative to vault) | |
| task_content | Yes | Task description text | |
| priority | No | Task priority level | normal |
| due_date | No | Due date (YYYY-MM-DD) | |
| scheduled_date | No | Scheduled date (YYYY-MM-DD) | |
| start_date | No | Start date (YYYY-MM-DD) | |
| recurrence | No | Recurrence pattern (must start with 'every') | |
| insert_at | No | Where to insert the task | end |
| heading | No | Heading name if insert_at='after_heading' | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description shoulders the full burden. It discloses that the tool creates a checkbox task, inserts it at a specified location, creates the file if missing, and formats metadata with emoji syntax. The return value is also described. No contradictions are present.
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 well-structured, starting with a clear purpose statement, followed by details on metadata formatting, a 'When to use' list, and a description of the return value. It is concise (about 15 lines) with no superfluous content; every sentence earns its place.
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 11 parameters (2 required), no output schema, and no annotations, the description covers the most crucial aspects: creation behavior, insertion location, file creation, metadata formatting, and return format. It could be slightly more complete by mentioning error handling or limitations, but it is generally sufficient.
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 coverage is high (91%), so the baseline is 3. The description adds valuable context beyond the schema, such as explaining the emoji syntax for priority, dates, and recurrence, and the insert_at options. This enriches understanding of how parameters affect the output.
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 states 'Create a new task with Tasks plugin metadata (filesystem-native, offline).' It clearly specifies the verb (Create), resource (task), and context (Tasks plugin). This distinguishes it from sibling tools like toggle_task_status_tool or update_task_metadata_tool, which handle existing tasks.
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?
Includes a 'When to use:' section listing four concrete scenarios (e.g., 'Adding tasks to project notes', 'Creating recurring task templates'). This provides clear context for when to invoke this tool, though it does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_note_toolC
Delete a note from the vault.
Args: path: Path to the note to delete
Returns: Deletion status
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description simply states it deletes a note, but does not disclose whether deletion is permanent, if it can be undone, or what side effects occur (e.g., cascading deletions). With no annotations, the description carries full burden and fails to provide sufficient behavioral context.
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 concise with a clear Args/Returns structure, but it is too brief, lacking sufficient detail. It achieves minimum viability but could be more informative without being verbose.
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 delete operation with no output schema or annotations, the description is incomplete. It does not explain the return value, error handling, or confirm the deletion action, leaving critical gaps for an agent.
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 a brief explanation of the 'path' parameter (path to the note), but does not specify format or constraints. The 'ctx' parameter is not explained at all. Since schema description coverage is 0%, the description does not compensate adequately.
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 it deletes a note from the vault, which is a specific verb-resource pair. It distinguishes from siblings like create_note or update_note, but does not explicitly contrast with them.
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?
No guidance on when to use this tool versus alternatives (e.g., moving or archiving). No when-not or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_command_toolB
Execute Obsidian command (requires Obsidian running).
| Name | Required | Description | Default |
|---|---|---|---|
| command_id | Yes | Command ID (e.g., 'editor:toggle-bold') | |
| ctx | No |
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 disclosing behavioral traits. It describes the action ('Execute') but provides no information about side effects, error behavior, or whether it modifies data. The one additional detail is the requirement for Obsidian to be running.
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 sentence of 7 words, front-loaded with the action, and contains no redundant information. Every word earns its place.
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 simplicity (2 params, no output schema), the description is minimally adequate. It includes a crucial prerequisite but does not explain what constitutes a valid command_id, whether the command returns output, or safety considerations.
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 50%: only command_id has a description. The tool description does not add any meaning beyond what the schema already provides, nor does it compensate for the missing description of the 'ctx' parameter.
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 'Execute Obsidian command' uses a specific verb and resource, clearly stating what the tool does. It distinguishes itself from sibling tools, as no other tool is dedicated to executing arbitrary Obsidian commands.
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 mentions a prerequisite ('requires Obsidian running'), which gives some usage context. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide examples or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_dataview_query_toolA
Execute a Dataview Query Language (DQL) query (requires Obsidian + Dataview plugin).
Executes full DQL queries with all Dataview plugin capabilities:
LIST: Simple page lists
TABLE: Tabular data views
TASK: Task queries
CALENDAR: Date-based views
Supports all DQL clauses: FROM, WHERE, SORT, LIMIT, GROUP BY
When to use:
Complex queries beyond filesystem capabilities
Leveraging Dataview's computed fields
Accessing Dataview's metadata indices
Real-time query results
Requires:
Obsidian running
Dataview plugin installed and enabled
Local REST API plugin enabled
Returns: Query results in Dataview's structured format
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | DQL query string (e.g., 'LIST FROM #project WHERE status = "active"') | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions requirements (Obsidian, Dataview plugin, local REST API) and that results are in Dataview's structured format, but does not disclose potential errors, timeouts, or side effects. More details on error behavior would improve 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 well-organized with clear sections (purpose, types, clauses, when-to-use, requirements). It is concise at ~150 words and every sentence adds value, though the 'Returns' line could be slightly more specific.
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 query tool with no output schema, the description covers the DQL language components, usage scenarios, and prerequisites. It lacks details on error handling or result format specifics, but overall it is fairly complete for the tool's complexity.
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?
Description adds value to the 'query' parameter by listing examples and supported syntax, which supplements the schema. However, the optional 'ctx' parameter is not described at all in the description, and schema coverage is only 50%. Baseline 3 is appropriate.
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 it executes DQL queries and enumerates supported query types (LIST, TABLE, TASK, CALENDAR) and clauses. It distinguishes from sibling tools like list_notes_by_tag_dql_tool and search_notes_tool which are simpler.
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 'When to use' section provides four clear scenarios (complex queries, computed fields, metadata indices, real-time results). It implies this tool is for advanced queries beyond basic filesystem capabilities, though it does not explicitly exclude simpler cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expand_template_toolC
Expand template variables (filesystem-native, offline).
| Name | Required | Description | Default |
|---|---|---|---|
| template_path | Yes | Template file path | |
| variables | No | ||
| vault_path | No | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'filesystem-native, offline' indicating local-only operation without network dependencies, which is useful. However, it does not disclose important behavioral traits such as whether the tool modifies the template file in place, what happens if variables are not provided, or if there are side effects like file creation. Since no annotations are provided, the description carries the full burden but falls short.
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 extremely concise: a single sentence that conveys the core function and two key attributes (filesystem-native, offline). No wasted words, and the information is front-loaded. It is appropriate in size for a simple tool.
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 lack of output schema and annotations, the description should be more comprehensive. It omits crucial details such as the format for the 'variables' parameter, how 'vault_path' is used, and what the output looks like (e.g., expanded content). The tool has 4 parameters with only one required, yet no guidance on optional ones. This incompleteness could lead to incorrect usage.
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 only 25%, and the tool description does not explain any of the parameters despite the low coverage. The description (outside the schema) provides no additional meaning for 'variables' or 'vault_path', which are partially described in the schema. The context parameter is completely undocumented. This is insufficient for correct invocation.
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: expanding template variables. It adds specificity with 'filesystem-native, offline' which helps differentiate from sibling tools like render_templater_template_tool that might use a different engine. However, the purpose could be more explicit about the scope (e.g., which template systems it supports).
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?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, such as the need for a template file to exist, nor does it advise on cases where variables are missing or invalid. There is no comparison with sibling tools that might offer similar functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_dataview_fields_toolA
Extract all Dataview inline fields from a note (filesystem-native, offline).
Parses all three Dataview inline field syntax variants:
Full-line:
field:: valueBracket:
[field:: value](inline, visible)Paren:
(field:: value)(inline, hidden key)
Automatically detects value types:
String, number, boolean, date (ISO8601)
Wikilink: [[note]]
List: "item1", "item2" or item1, item2
Skips code blocks to avoid false matches.
When to use:
Extracting metadata from notes
Auditing field usage
Migrating to frontmatter
Understanding note properties
Performance:
Single note: < 100ms
Processes up to 10,000 fields per second
Returns: All fields with keys, values, types, syntax variants, and line numbers
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to note file (relative to vault) | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully bears the burden. It details three syntax variants, value type detection, code block skipping, and performance metrics (<100ms/note, 10k fields/sec). Also states return structure, ensuring 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?
Well-organized with sections: purpose, syntax variants, behavior, use cases, performance, return. Every sentence adds value, no redundancy. Front-loaded with key purpose.
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?
With no output schema, description fully explains return values (fields, keys, values, types, syntax, line numbers). Covers performance and edge cases (code blocks). Complete for an extraction tool.
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 coverage is 67% (file_path and vault_path have descriptions, ctx only has title). Description adds little beyond schema; vault_path default behavior is implied in schema. For ctx, no additional meaning. Baseline 3 due to 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 ('Extract all Dataview inline fields'), the resource ('from a note'), and distinguishes from siblings like execute_dataview_query_tool and search_by_dataview_field_tool by focusing on field extraction and offline capability.
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?
Provides explicit 'When to use' scenarios (extracting metadata, auditing, migrating), though lacks explicit 'when not to use' or alternatives. Still, the context is clear and covers primary use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_broken_links_toolA
Find all broken links in the vault or a specific directory.
When to use:
After renaming or deleting notes
Regular vault maintenance
Before reorganizing folder structure
Cleaning up after imports
When NOT to use:
Checking links in a single note (use get_outgoing_links with check_validity)
Finding backlinks (use get_backlinks)
Returns: All broken links grouped by source note
| Name | Required | Description | Default |
|---|---|---|---|
| directory | No | Specific directory to check (optional, defaults to entire vault) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It states the return format but does not disclose potential side effects, performance implications, or scope limitations (e.g., external links). Lacks explicit safety cues for a scanning 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?
Extremely concise with clear sections (purpose, when to use, when not to use, returns). No redundancy; every sentence adds value.
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?
Covers usage scenarios and return format. Lacks details on how broken links are detected (internal vs external) and any performance notes, but is fairly complete for a simple scanning tool given no 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?
Schema coverage is 50% (ctx parameter undocumented in schema and description). Description adds no new parameter information beyond the schema's directory description. Does not compensate for the undocumented ctx parameter.
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 it finds all broken links in the vault or a directory, using specific verbs and resources. It explicitly distinguishes from sibling tools like get_outgoing_links and get_backlinks by listing when not to use them.
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?
Provides explicit when-to-use scenarios (e.g., after renaming notes, regular maintenance) and when-not-to-use with alternative tool names, giving clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_hub_notes_toolA
Find hub notes with high outlink counts (filesystem-native, offline).
Identifies notes that link to many other notes (hubs/MOCs/index notes). These are typically index pages, maps of content, or navigation notes.
When to use:
Finding index/MOC notes
Identifying central navigation points
Understanding information architecture
Discovering organizational structures
Performance:
1,000 notes: < 10 seconds
10,000 notes: < 100 seconds
Returns: List of hub notes sorted by outlink count (highest first)
| Name | Required | Description | Default |
|---|---|---|---|
| min_outlinks | No | Minimum outlink count to be considered a hub | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behaviors itself. It mentions performance metrics for different note counts, which provides some transparency. However, it does not explicitly state that the operation is read-only or safe, nor does it discuss required permissions or side effects.
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 around 10 lines with clear sections: purpose, explanation, when to use, performance, and returns. Every sentence serves a purpose and there is no 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?
Despite no output schema and no annotations, the description covers purpose, usage context, performance expectations, and the output format (list sorted by outlink count). The only gap is the undocumented ctx parameter, which prevents a perfect score.
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 67%; two of three parameters have descriptions. The description adds context like default values and range for min_outlinks, and explains vault_path optionality and environment variable fallback. However, the ctx parameter remains undocumented, and the description does not add significant new semantic detail beyond the schema.
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 'Find hub notes with high outlink counts' and elaborates on what hub notes are. It distinguishes this tool from siblings like find_broken_links_tool and get_outgoing_links_tool by focusing on outlink count centrality.
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 'When to use' section lists four concrete scenarios (finding index/MOC notes, identifying navigation points, etc.). While it doesn't explicitly state when not to use it or mention alternatives, the context is clear and helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_orphaned_notes_toolA
Find orphaned notes with no connections (filesystem-native, offline).
Identifies notes that have neither inlinks nor outlinks - completely isolated notes that aren't referenced anywhere and don't reference anything else.
When to use:
Vault cleanup and maintenance
Finding forgotten or unused notes
Identifying candidates for archiving
Improving vault connectivity
Performance:
1,000 notes: < 10 seconds
10,000 notes: < 100 seconds
Returns: List of orphaned notes with file paths
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses it is filesystem-native and offline, and includes performance estimates. However, it does not explicitly state it is read-only, nor mention any permissions or side effects, leaving some behavioral uncertainty.
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 concise and well-structured with clear sections for purpose, usage, performance, and return value. Every sentence earns its place with no 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?
For a simple tool with minimal parameters and no output schema, the description covers the main functionality, use cases, and performance. However, it could be more precise about the return format (e.g., relative vs absolute paths) and whether subfolders are included.
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 only 50% schema description coverage, the description adds no parameter information. The 'ctx' parameter is undocumented in both schema and description, and the description does not elaborate on how vault_path is used beyond what the schema already states.
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?
Clearly states 'Find orphaned notes with no connections', which is a specific verb+resource. It distinguishes from siblings like find_broken_links_tool and find_hub_notes_tool by targeting completely isolated notes.
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?
Lists specific use cases (vault cleanup, finding forgotten notes, etc.), providing clear context for when to use. However, it does not mention when not to use or explicitly name alternatives among the 60+ sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_file_toolC
Get currently active file (requires Obsidian running).
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states a prerequisite, missing details about read-only nature, return value, or side effects.
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?
Single sentence, efficient and front-loaded with key information; no redundant text, though could include more detail without being verbose.
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 simple tool with no output schema and no annotations, the description fails to explain what 'active file' means or what the tool returns, leaving significant gaps.
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 coverage is 0% and description does not mention the 'ctx' parameter at all, adding no meaning beyond the schema.
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?
Description clearly states the tool gets the currently active file, which differentiates it from tools like open_file_tool or read_note_tool, but does not explicitly mention sibling alternatives.
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?
Mentions a prerequisite ('requires Obsidian running'), but provides no guidance on when to use this tool vs. alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_backlinks_fs_toolA
Find all notes that link to a specified note (filesystem-native, no Obsidian required).
This tool uses direct filesystem access for maximum performance and works without requiring Obsidian to be running. It scans all markdown files in the vault to find wikilinks pointing to the target note.
When to use:
Finding which notes reference a specific concept/note
Building connection graphs without Obsidian running
High-performance backlink discovery for large vaults
Batch processing multiple notes
Performance:
1,000 notes: < 2 seconds
10,000 notes: < 20 seconds
Returns: All notes containing wikilinks to the target note with context
| Name | Required | Description | Default |
|---|---|---|---|
| note_name | Yes | Name of the note to find backlinks for (without .md extension) | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
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 filesystem access, scanning of all markdown files, and performance estimates. It does not mention error handling or limitations (e.g., only wikilinks), but overall provides good behavioral context.
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 well-structured with sections for purpose, explanation, usage, performance, and returns. It is front-loaded with the main purpose and every sentence adds value 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?
No output schema is provided, so the description must clarify return values. It states 'returns all notes containing wikilinks with context', but 'context' is vague (e.g., surrounding lines?). It also lacks details on error cases (e.g., note not found) or response structure, leaving some gaps for a data-returning tool.
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 coverage is 67% (two of three params have descriptions). The description adds little beyond the schema: it mentions note_name as 'target note' and vault_path as optional with env fallback, but does not elaborate on parameter usage or constraints.
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 ('Find all notes that link to a specified note') and the resource (filesystem-native backlinks). It distinguishes from siblings by emphasizing 'no Obsidian required' and 'direct filesystem access', which differentiates it from get_backlinks_tool.
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 'When to use' bullet points provide clear scenarios (e.g., building connection graphs, high-performance discovery). However, it does not explicitly state when to avoid using this tool or mention the alternative get_backlinks_tool for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_backlinks_toolA
Find all notes that link to a specific note (backlinks).
When to use:
Understanding which notes reference a concept or topic
Discovering relationships between notes
Finding notes that depend on the current note
Building a mental map of note connections
When NOT to use:
Finding links FROM a note (use get_outgoing_links)
Searching for broken links (use find_broken_links)
Performance note:
Fast for small vaults (<100 notes)
May take several seconds for large vaults (1000+ notes)
Consider using search_notes for specific link queries
Returns: All notes linking to the target with optional context
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note to find backlinks for | |
| include_context | No | Whether to include text context around links | |
| context_length | No | Number of characters of context to include | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses performance characteristics (fast for small vaults, slow for large) and return value structure. However, it could mention more about output format or potential side effects, though none expected 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 well-structured with clear sections, bullet points, and no extraneous information. Every sentence adds value.
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 output schema, the description explains return values adequately. It also includes performance notes. Could be more specific about return format, but sufficient for typical use.
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 coverage is 75%, so many parameters already have descriptions. The description adds minimal extra value beyond the schema, mostly repeating the context parameter behavior. Baseline 3 is appropriate.
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 'Find all notes that link to a specific note (backlinks)' with a specific verb and resource. It also explicitly distinguishes from siblings by noting when to use alternatives like get_outgoing_links and find_broken_links.
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 dedicated 'When to use' and 'When NOT to use' sections with explicit alternatives, giving clear context for when this tool is appropriate versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broken_links_fs_toolA
Find all broken wikilinks in the vault (filesystem-native, no Obsidian required).
This tool uses direct filesystem access to scan all markdown files and identify wikilinks pointing to non-existent notes. Works without requiring Obsidian to be running.
When to use:
After renaming or deleting notes
Regular vault maintenance and cleanup
Before reorganizing folder structures
Identifying orphaned link references
Performance:
1,000 notes: < 10 seconds
10,000 notes: < 100 seconds
Returns: All broken links grouped by source note
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially covers behavior: scans markdown files, identifies wikilinks to non-existent notes, and gives performance timing. However, it misses details like error handling, limitations (e.g., only markdown), and whether it's read-only.
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?
Well-structured with sections for introduction, usage, performance, and returns. Efficiently conveys key information without unnecessary words, though the 'Returns' section could be omitted if output schema existed.
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?
Covers main purpose, use cases, and performance. Lacks details on output format (only says 'grouped by source note') and edge cases (e.g., handling of non-markdown files, errors). Adequate but could be more complete.
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 coverage is 50% (only vault_path described). The description explains vault_path's default usage from env var but does not mention the ctx parameter, leaving it undocumented.
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 it finds broken wikilinks using filesystem access without requiring Obsidian, and distinguishes itself from sibling find_broken_links_tool by emphasizing 'no Obsidian required'.
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?
Provides a bullet list of when to use (after renaming/deleting notes, maintenance, etc.) and performance estimates, but lacks explicit when-not-to-use or comparison to alternatives like find_broken_links_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kanban_statistics_toolA
Get comprehensive statistics for a Kanban board (filesystem-native, offline).
Analyzes the board and provides:
Total cards, completed, incomplete counts
Per-column card counts and completion rates
Overall board completion percentage
Column names and structure
When to use:
Project progress tracking
Sprint velocity analysis
Board health monitoring
Generating board reports
Performance:
Boards with 100 cards: < 500ms
Boards with 1,000 cards: < 5 seconds
Returns: Comprehensive board statistics with counts and percentages
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to Kanban board file (relative to vault) | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
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 tool is offline and gives performance estimates (<500ms for 100 cards, <5s for 1000 cards). However, it does not state that the tool is read-only, discuss permissions, or describe error conditions or edge cases.
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 well-structured with bullet points, sections, and front-loaded purpose. It is reasonably concise at about 10 lines, though the 'Returns:' line is somewhat redundant with the earlier list. Overall efficient and easy to scan.
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?
The description covers the main use cases and return values, and with no output schema, it provides enough detail on what is returned. However, it lacks information on error handling (e.g., missing file, empty board), and the ctx parameter is undocumented. These gaps reduce completeness for a tool with moderate complexity.
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 67% description coverage (file_path and vault_path have descriptions, ctx does not). The description adds no parameter-specific information beyond what the schema provides. Without further elaboration on parameter formats or constraints, it meets the baseline for a 3 but does not compensate for the uncovered parameter.
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 gets comprehensive statistics for a Kanban board, specifying 'filesystem-native, offline'. It details what statistics are provided (total cards, per-column counts, completion rates) and distinguishes itself from related sibling tools like parse_kanban_board_tool and note_statistics_fs_tool.
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 includes an explicit 'When to use' section listing four scenarios: project progress tracking, sprint velocity analysis, board health monitoring, and generating board reports. This provides clear context for usage, though it does not explicitly mention when not to use the tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_link_graph_toolA
Get complete link graph for the vault (filesystem-native, offline).
Builds a comprehensive graph of all note connections, tracking:
Inlinks (notes linking TO each note)
Outlinks (notes linked FROM each note)
Link types (wikilinks, markdown links, embeds)
When to use:
Understanding vault structure and relationships
Analyzing note connectivity
Building visualization data
Identifying connection patterns
Performance:
1,000 notes: < 10 seconds
10,000 notes: < 100 seconds
Returns: Complete link graph with all note connections and link type counts
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adds value by noting performance characteristics and stating it is 'filesystem-native, offline'. It implies read-only operation and provides return expectations.
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?
Well-structured with clear sections, bullet points, and front-loaded purpose. Efficiently conveys necessary information without excessive verbosity.
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 output schema and no annotations, the description covers purpose, usage, performance, and return type fairly well. Some details like exact output format could be added but not critical.
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 coverage is 50% with only vault_path described in schema. The description adds no extra parameter details; ctx remains undocumented. Parameter semantics are weak.
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 it fetches a 'complete link graph for the vault', specifying verb 'get', resource 'link graph', and details inlinks, outlinks, and link types. This distinguishes it from sibling tools like get_note_connections_tool or get_backlinks_tool.
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 'When to use' section lists appropriate scenarios like understanding vault structure and building visualization data. It does not explicitly mention when not to use or alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_note_connections_toolA
Get connection graph for a specific note (filesystem-native, offline).
Explores connections from a note up to specified depth:
Depth 1: Direct connections (notes linked from target)
Depth 2: Second-degree connections (notes linked from direct connections)
Depth 3: Third-degree connections
Provides both inlinks (backlinks) and outlinks with depth information.
When to use:
Understanding note relationships
Exploring local note neighborhoods
Finding related content
Building connection visualizations
Performance:
Depth 1: < 1 second
Depth 2: < 5 seconds
Depth 3: < 30 seconds
Returns: Connection graph with multi-level links and depth annotations
| Name | Required | Description | Default |
|---|---|---|---|
| note_name | Yes | Note name to analyze (with or without .md) | |
| depth | No | Connection depth to explore (1=direct, 2=second-degree, etc.) | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses performance estimates for each depth level, mentions 'filesystem-native, offline', describes the return type (connection graph with multi-level links and depth annotations), and explains that it provides both inlinks and outlinks.
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?
Well-structured with clear sections: depth explanation, usage scenarios, performance expectations, and return description. Every sentence adds value and is front-loaded with the most important information (depth behavior).
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?
Despite no output schema, the description adequately explains what the tool returns (connection graph with depth annotations). Given the tool's complexity (4 parameters, multi-level graph building), the description provides sufficient context for an AI agent to understand and use it correctly.
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?
Input schema covers 75% of parameters with descriptions (note_name, depth, vault_path). The description adds semantic context beyond schema by explaining depth levels and the relationship between parameters (e.g., note_name is the starting point). ctx parameter is undocumented but appears optional and not critical.
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 it gets a connection graph for a specific note, with explicit depth levels (1=direct, 2=second-degree, 3=third-degree). It distinguishes from sibling tools like get_backlinks_tool and get_outgoing_links_tool by focusing on multi-level connections.
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?
Provides a dedicated 'When to use' section listing four clear use cases (understanding relationships, exploring neighborhoods, finding related content, building visualizations). Missing explicit 'when not to use' or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_note_info_toolC
Get metadata and information about a note without retrieving its full content.
Args: path: Path to the note
Returns: Note metadata and statistics
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not explicitly state read-only behavior, side effects, or what 'metadata and statistics' entails (e.g., creation date, tags, links). The phrase 'without retrieving its full content' is the only behavioral clue.
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 short and front-loaded with the main purpose, but the Args/Returns section repeats information that could be integrated. No wasted words.
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 tool with no output schema and only 0% schema coverage, the description should detail return values (e.g., list of metadata fields) and clarify any constraints, but it does not.
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 coverage is 0%; description only mentions 'path: Path to the note' (redundant) and completely omits the optional 'ctx' parameter, leaving its purpose unclear.
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 states it retrieves metadata without full content, which distinguishes it from read_note_tool, but is vague about what specific metadata ('statistics') and does not differentiate from note_statistics_fs_tool or get_note_connections_tool among many 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?
No guidance on when to use this tool vs alternatives like read_note_tool or note_statistics_fs_tool; no exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outgoing_links_toolA
List all links from a specific note (outgoing links).
When to use:
Understanding what a note references
Checking note dependencies before moving/deleting
Exploring the structure of index or hub notes
Validating links after changes
When NOT to use:
Finding notes that link TO this note (use get_backlinks)
Searching across multiple notes (use find_broken_links)
Returns: All outgoing links with their types and optional validity status
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note to extract links from | |
| check_validity | No | Whether to check if linked notes exist | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. States it returns outgoing links with types and validity status, implying read-only operation. Lacks details on error handling or prerequisites, but sufficient given simplicity.
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?
Concise, well-structured with bullet points for usage guidance and returns. No redundant information, every sentence adds value.
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?
Describes return values (outgoing links with types and validity status) despite no output schema. Usage guidelines add context. Slightly incomplete on edge cases like embedded content, but generally sufficient.
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 67% (two of three parameters have descriptions). The description does not add extra parameter meaning beyond the schema, which is adequate but not improved.
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?
Clearly states the tool lists outgoing links from a specific note, distinguishing it from siblings like get_backlinks_tool (which finds backlinks) and find_broken_links_tool (which searches across notes).
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?
Explicitly provides 'When to use' and 'When NOT to use' sections, including concrete scenarios and alternative tools, giving clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_statistics_toolA
Get aggregate task statistics for a note or entire vault (filesystem-native).
Analyzes all tasks and provides:
Total, incomplete, completed counts
Breakdown by priority level
Overdue tasks (past due date, still incomplete)
Upcoming tasks (due within 7 days)
Recurring tasks count
Optional grouped data
When to use:
Project progress tracking
Workload analysis
Finding overdue tasks
Weekly planning
Performance:
Single note: < 100ms
Vault (1,000 notes): < 5 seconds
Returns: Comprehensive task statistics with counts and optional grouping
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | Statistics scope: single note or entire vault | |
| file_path | No | File path (required if scope='note') | |
| group_by | No | Optional grouping for detailed breakdown | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
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 performance metrics and return content, but lacks details on return format or potential edge cases. The tool is read-only, which is implied but not explicitly stated.
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 well-structured with sections (main description, statistics list, when to use, performance, returns). It is front-loaded with the key action. Minor redundancy could be trimmed, but overall 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 the tool's complexity (aggregate task statistics with optional grouping), the description provides sufficient context: what statistics are returned, optional grouping, performance guidance. Missing output schema is compensated by the 'Returns' summary. Edge cases are not addressed.
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?
Input schema has 80% coverage with descriptions for 4 of 5 parameters. The description adds value by explaining the overall output, but does not elaborate on parameter details beyond the schema. The 'ctx' parameter remains undocumented.
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 'Get aggregate task statistics for a note or entire vault' and lists specific statistics. It distinguishes the tool's focus on tasks, but does not explicitly differentiate from similar sibling tools like note_statistics_fs_tool or vault_statistics_fs_tool.
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 includes a 'When to use' section with relevant scenarios (project progress tracking, workload analysis, etc.). However, it does not mention when not to use this tool or compare it to alternatives such as search_tasks_tool or note_statistics_fs_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_after_block_fs_toolA
Insert content immediately after a block reference.
Finds the specified block reference (^block-id) and inserts content after the line containing it. Accepts block IDs with or without the ^ prefix.
When to use:
Adding follow-up content to referenced blocks
Expanding on specific paragraphs
Building linked content structures
Programmatic content generation
Performance:
10,000 word notes: < 500ms
Returns: Success status and descriptive message
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note (relative to vault or absolute) | |
| block_id | Yes | Block reference ID (with or without ^ prefix) | |
| content | Yes | Content to insert after the block | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains block ID format, performance, and return type, but lacks detail on error handling, side effects, and whether content insertion creates a new line. Ambiguities remain.
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 concise (10 lines) with clear sections (When to use, Performance, Returns). Each sentence is purposeful and front-loaded with the core action.
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?
The description covers purpose, usage, performance, and return type, but lacks details on error cases (e.g., block not found), exact insertion behavior, and return value structure. With no output schema, more completeness would be beneficial.
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 80% (4 of 5 parameters documented). The description adds minimal value beyond the schema, only reiterating that block_id can omit the ^ prefix, which the schema already states.
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: 'Insert content immediately after a block reference.' It explains block references and differentiates from sibling tools like insert_after_heading_fs_tool by specifying block-level insertion.
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 'When to use' section lists relevant scenarios (e.g., adding follow-up content, expanding paragraphs). However, it does not explicitly exclude alternatives or mention when to use sibling tools like insert_after_heading_fs_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_after_heading_fs_toolA
Insert content immediately after a specific heading in a note.
Finds the specified heading (case-sensitive) and inserts content on the line immediately following it. If multiple headings with the same text exist, content is inserted after the first occurrence.
When to use:
Adding tasks to a "Tasks" section
Inserting notes under a "Notes" heading
Appending content to specific sections
Building structured content programmatically
Performance:
10,000 word notes: < 500ms
Returns: Success status and descriptive message
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note (relative to vault or absolute) | |
| heading | Yes | Heading text to insert after (without # symbols) | |
| content | Yes | Content to insert after the heading | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses case-sensitive matching, first-occurrence insertion, and a performance note (10k words <500ms). Lacks details on error handling (e.g., heading not found) or side effects, but covers core behavior adequately.
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?
Well-structured with sections for purpose, details, when to use, performance, and returns. Front-loaded with purpose, each sentence adds value, no fluff. Efficient and clear.
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 simplicity of tool, high schema coverage, and no output schema, description covers all necessary aspects: behavior (case-sensitivity, first occurrence), usage scenarios, performance, and return value. Complete for task of inserting after a heading.
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 80% (ctx parameter lacks description). Description adds examples for filepath and heading, clarifies heading should be without #, and explains content parameter. Does not elaborate on 'ctx' parameter, but overall adds marginal value over schema.
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?
Description clearly states 'Insert content immediately after a specific heading in a note,' with specific verb (insert), resource (content after heading), and behavior (case-sensitive, first occurrence). Distinguishes from sibling insert_after_block_fs_tool which inserts after a block rather than a heading.
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?
Provides explicit 'When to use' list (e.g., adding tasks to Tasks section, inserting notes under Notes heading) giving clear context for appropriate use. Does not explicitly contrast with alternatives or state when not to use, but the listed scenarios are specific enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commands_toolB
List all available commands (requires Obsidian running).
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description only adds the prerequisite condition. It does not disclose read-only nature, output format, or other behavioral traits.
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 sentence that conveys purpose and a key requirement with no wasted words.
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?
The description lacks details about the output format (e.g., list of command names, IDs) and does not specify the return structure, making it incomplete for a list 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?
The schema has 0% description coverage for the sole parameter 'ctx', and the description provides no additional meaning, leaving the parameter completely opaque.
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 'List all available commands' with a specific verb and resource, and distinguishes from siblings like execute_command_tool.
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 mentions the prerequisite 'requires Obsidian running' but provides no explicit guidance on when to use versus alternatives like execute_command_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_folders_toolA
List folders in the vault or a specific directory.
When to use:
Exploring vault organization structure
Verifying folder names before creating notes
Checking if a specific folder exists
Understanding the hierarchy of the vault
When NOT to use:
Listing notes (use list_notes instead)
Searching for content (use search_notes)
Returns: Folder structure with paths and names
| Name | Required | Description | Default |
|---|---|---|---|
| directory | No | Specific directory to list folders from (optional, defaults to root) | |
| recursive | No | Whether to include all nested subfolders | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions the return type but lacks details on permissions, hidden folders, performance, or error handling, leaving 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?
Well-structured with clear headings and concise sentences. Some slight redundancy in the 'Returns' section could be integrated, but overall effective 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?
Without an output schema, the description adequately explains the return structure. It covers key use cases and parameters, though missing pagination or error handling details for a complete picture.
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 coverage is 67% (two of three parameters described). The description adds minimal extra parameter info beyond the schema, repeating 'directory' context but not enriching the semantics further.
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 lists folders in the vault or a specific directory, with explicit use cases and differentiation from sibling tools like list_notes.
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?
Provides dedicated 'When to use' and 'When NOT to use' sections with specific alternatives (e.g., list_notes, search_notes), offering clear guidance on appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notes_by_folder_dql_toolA
List notes in a folder using DQL (requires Obsidian + Dataview plugin).
Simplified interface for folder-based queries with optional filtering and sorting.
When to use:
Finding notes in specific folders with filters
Leveraging Dataview's folder indexing
Real-time folder queries
Returns: List of matching notes with Dataview metadata
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes | Folder path to query | |
| where_clause | No | Optional WHERE filter | |
| sort_by | No | Optional SORT clause | |
| limit | No | Optional result limit | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses the prerequisite (Dataview plugin) and states the return format. However, it does not mention side effects, permissions, or whether it is read-only, which would enhance 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?
Description is fairly concise with clear sections (purpose, when-to-use, returns). It is front-loaded with key action. Could be slightly tighter by removing some 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 no output schema, description explains return value ('list of matching notes with Dataview metadata'). Covers prerequisites, inputs, and high-level behavior. Lacks details on limit usage or error cases.
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 80% schema coverage, the description adds little beyond schema: 'optional filtering and sorting' maps to where_clause and sort_by. It does not provide constraints, syntax examples, or defaults beyond schema.
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?
Description starts with clear verb and resource: 'List notes in a folder using DQL'. It distinguishes from siblings like list_notes_tool by specifying the method (DQL) and prerequisites (Obsidian + Dataview plugin).
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?
Includes a 'When to use' section with three specific scenarios, providing context for appropriate usage. However, it does not explicitly mention when not to use or compare to alternatives like list_notes_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notes_by_tag_dql_toolA
List notes with a specific tag using DQL (requires Obsidian + Dataview plugin).
Simplified interface for tag-based queries with optional filtering and sorting.
When to use:
Finding notes by tag with complex filters
Leveraging Dataview's tag indexing
Real-time tag queries
Returns: List of matching notes with Dataview metadata
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag to query (with or without # prefix) | |
| where_clause | No | Optional WHERE filter (e.g., 'status = "active"') | |
| sort_by | No | Optional SORT clause (e.g., 'file.name ASC') | |
| limit | No | Optional result limit | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must handle transparency. It mentions prerequisites (Obsidian + Dataview plugin) and hints at read-only behavior by noting it 'returns' results, but does not explicitly state non-destructiveness, rate limits, or error handling for missing dependencies.
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?
Description is brief and well-structured with a summary, usage guidelines as bullet points, and return type. Every sentence adds value 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 no output schema, description only states 'List of matching notes with Dataview metadata,' which is vague. It does not specify exact fields or structure. Also, it does not distinguish from similar sibling tools like search_by_tag_fs_tool.
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 coverage is high (80%), so baseline is 3. Description reinforces that filtering and sorting are optional but adds no new semantic detail beyond the schema. The 'ctx' parameter lacks description in both schema and description.
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?
Clearly states it lists notes by tag using DQL, and differentiates from siblings like list_notes_tool or search_by_tag_fs_tool by specifying it's a simplified interface for tag-based queries with optional filtering and sorting.
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?
Includes a 'When to use' bullet list with three specific scenarios (complex filters, Dataview's indexing, real-time queries), providing clear context. However, it does not explicitly state when not to use or directly compare to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notes_toolB
List notes in the vault or a specific directory.
Args: directory: Specific directory to list (optional, defaults to root) recursive: Whether to list all subdirectories recursively (default: true)
Returns: Vault structure and note paths
| Name | Required | Description | Default |
|---|---|---|---|
| directory | No | ||
| recursive | No | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It only mentions what it returns ('Vault structure and note paths') but omits key traits such as file type filtering (e.g., only .md), performance limitations, or sorting order. The defaults are given but not the behavioral implications.
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 extremely concise, using clear sections (Args, Returns) and front-loading the purpose. Every sentence adds value 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?
The tool is simple and the description covers its core function, but it omits explanation of the 'ctx' parameter and does not differentiate from similar sibling tools (e.g., list_notes_by_folder_dql_tool). No output schema is provided, but the return description is adequate for basic use.
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 coverage is 0%, so the description adds essential meaning for the directory and recursive parameters, including defaults. This goes beyond the schema's basic types. However, the 'ctx' parameter is completely undocumented, which lowers the score slightly.
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) and resource (notes) with scope clarification ('in the vault or a specific directory'). It distinguishes from list_folders_tool but does not explicitly differentiate from list_notes_by_folder_dql_tool or search_notes_tool.
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?
No guidance is provided on when to use this tool versus siblings like list_notes_by_folder_dql_tool (for DQL-based listing) or search_notes_tool (for content search). Missing context about prerequisites or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tags_toolA
List all unique tags used across the vault with usage statistics.
When to use:
Before adding tags to maintain consistency
Getting an overview of your tagging taxonomy
Finding underused or overused tags
Discovering tag variations (e.g., 'project' vs 'projects')
When NOT to use:
Getting tags for a specific note (use get_note_info)
Searching notes by tag (use search_notes with tag: prefix)
Performance note:
For vaults with <1000 notes: Fast (1-3 seconds)
For vaults with 1000-5000 notes: Moderate (3-10 seconds)
For vaults with >5000 notes: May be slow (10+ seconds)
Uses batched concurrent requests to optimize performance
Returns: All unique tags with optional usage counts
| Name | Required | Description | Default |
|---|---|---|---|
| include_counts | No | Whether to include usage count for each tag | |
| sort_by | No | How to sort results - by name (alphabetical) or count (usage) | name |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses performance characteristics based on vault size and mentions use of batched concurrent requests, adding valuable behavioral context beyond a simple 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?
Well-structured with clear sections: main purpose, when to use, when not to use, performance note, and returns. Every sentence adds value, no 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?
Covers all essential aspects: purpose, usage guidelines, behavioral traits (performance), and return values. No output schema but returns are described sufficiently. Complete for a simple list tool.
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?
Input schema has 67% description coverage (2 out of 3 parameters described). Description adds context about usage counts and sorting in 'Returns' section, but does not detail parameter defaults or formats beyond schema. Still, it compensates adequately with provided use cases.
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?
Description clearly states 'List all unique tags used across the vault with usage statistics.' It uses a specific verb and resource, and distinguishes well from sibling tools like add_tags_tool and search_notes_tool.
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?
Provides explicit 'When to use' and 'When NOT to use' sections with bullet points and alternative tool names, offering clear guidance on invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templates_toolB
List available templates (filesystem-native, offline).
| Name | Required | Description | Default |
|---|---|---|---|
| template_folder | No | Templates | |
| vault_path | No | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description adds context about filesystem-native and offline behavior but omits details on side effects, permissions, or output format.
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 efficiently short but too brief to cover essential information, balancing conciseness with inadequacy.
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 output schema, no annotations, and minimal parameter coverage, the description fails to provide sufficient context for an AI agent to use the tool confidently.
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 0% and the description does not mention any of the three parameters (template_folder, vault_path, ctx), leaving their purpose unexplained.
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 it lists available templates and specifies they are filesystem-native and offline, distinguishing it from template expansion tools.
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 listing offline, filesystem-based templates but lacks explicit when-to-use or alternatives guidance, especially given siblings like expand_template_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_folder_toolA
Move an entire folder and all its contents to a new location.
When to use:
Reorganizing vault structure
Archiving completed projects
Consolidating related notes
Seasonal organization (e.g., moving to year-based archives)
When NOT to use:
Moving individual notes (use move_note instead)
Moving to a subfolder of the source (creates circular reference)
Returns: Move status with count of notes and folders moved
| Name | Required | Description | Default |
|---|---|---|---|
| source_folder | Yes | Current folder path to move | |
| destination_folder | Yes | New location for the folder | |
| update_links | No | Whether to update links in other notes (future enhancement) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool moves folder and contents, returns move status with counts, and warns about circular references. However, lacks details on overwriting behavior, error scenarios, or any side effects beyond what is stated.
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?
Concise and well-structured: a purpose statement, bullet lists for usage and non-usage, and a returns line. Every sentence adds value 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?
Covers the main aspects of the tool's behavior and usage, including return value. Could mention what happens on conflict (e.g., if destination exists), but given no output schema, it provides sufficient context for a folder move tool.
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 coverage is high (75%) with parameter descriptions and examples already provided. The tool description adds the circular reference warning but does not significantly extend parameter semantics beyond the schema.
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 'move' and the resource 'entire folder and all its contents', distinguishing it from sibling tool move_note_tool which moves individual notes.
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?
Explicitly lists when to use (reorganizing, archiving, consolidating, seasonal) and when NOT to use (moving individual notes, moving to subfolder causing circular reference), with a direct alternative mentioned (use move_note).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_kanban_card_toolA
Move a card between columns on a Kanban board (filesystem-native, offline).
Finds a card by matching its text, removes it from the source column, and adds it to the destination column. Preserves all metadata, subtasks, and formatting.
When to use:
Moving tasks through workflow stages
Dragging cards between columns programmatically
Batch workflow updates
Automated status changes
Performance:
< 500ms for boards with 1,000 cards
Returns: Success status, source/destination columns, and card details
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to Kanban board file (relative to vault) | |
| card_text | Yes | Text of the card to move (must match exactly) | |
| from_column | Yes | Source column name | |
| to_column | Yes | Destination column name | |
| position | No | Where to insert in destination column | end |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
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 the tool preserves metadata, subtasks, formatting, and mentions performance (<500ms for 1k cards) and return value structure. However, it does not discuss error handling (e.g., card not found) or reversibility, but the core behavioral traits are adequately covered.
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 well-structured with clear sections: main action, when to use, performance, returns. It is concise, front-loaded with the core task, and contains no redundant sentences. Every element adds value.
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 tool with 7 parameters (4 required) and no output schema, the description covers purpose, usage, behavioral traits, performance, and return values. It lacks details on error cases but is otherwise thorough. The presence of sibling tools and context signals adds to 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 86%, so the schema already documents parameters well. The description adds general context (e.g., 'Finds a card by matching its text') but does not provide additional semantic meaning beyond what the schema offers. Baseline 3 is appropriate.
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: 'Move a card between columns on a Kanban board' and elaborates on the process. It differentiates from sibling tools like add_kanban_card_tool and toggle_kanban_card_tool through its specific verbs and context.
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 a 'When to use' list with concrete scenarios (e.g., moving tasks through workflow stages, batch updates). While it doesn't explicitly state when not to use or list alternatives, the context signals show many sibling tools, and the guidelines are clear enough for typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_note_toolB
Move a note to a new location, optionally updating all links.
Args: source_path: Current path of the note destination_path: New path for the note update_links: Whether to update links in other notes (default: true)
Returns: Move status and updated links count
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | ||
| destination_path | Yes | ||
| update_links | No | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavioral traits. It mentions link updating but does not state whether the tool is destructive, if it overwrites existing notes, or any permission requirements. The return value is vague ('Move status').
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 concise: a single summary line followed by clear args and returns. Every sentence is necessary and well-structured, with no 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 is a mutation with no output schema, the description should explain what happens if the destination already exists, what 'updating links' means in detail, and the exact format of the return value. It falls short on these details.
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 explains source_path, destination_path, and update_links with their roles. However, it omits the 'ctx' parameter present in the schema (despite schema coverage being 0%), so not all parameters are covered.
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 ('Move a note to a new location') and key behavior ('optionally updating all links'). It distinguishes from sibling tools like create_note or delete_note by specifying the move operation.
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?
No guidance on when to use this tool versus alternatives like move_folder or create_note. The description lacks context about prerequisites or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
note_statistics_fs_toolA
Get comprehensive statistics about a single note.
Analyzes the note for words, characters, lines, links (wikilinks and markdown), tags (frontmatter and inline), headings, code blocks, and file metadata.
Returns detailed metrics including:
Word count (excluding frontmatter and code blocks)
Character counts (with and without spaces)
Line count
Links: wikilinks, markdown links, total links
Tags: frontmatter and inline tags
Headings: count, by level, structure
Code: fenced code blocks and inline code
File metadata: size, timestamps
When to use:
Analyzing individual note complexity
Tracking note growth over time
Understanding note structure
Content auditing
Performance:
Any note size: < 1 second
Returns: Comprehensive statistics dictionary
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note (relative to vault or absolute) | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
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 covers performance (<1 second), exclusions (word count excludes frontmatter and code blocks), and return details. It lacks mention of side effects or dependencies, but overall is transparent.
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 well-structured with clear sections for purpose, analyzed elements, returned metrics, usage, and performance. Every sentence adds value 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 complexity and absence of an output schema, the description effectively lists all returned metrics (e.g., word count, tags, headings). It lacks exact structure but provides sufficient context for understanding tool output.
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 coverage is 67% (2 of 3 parameters have descriptions). The description adds examples and clarifications (e.g., relative vs absolute path, optional vault_path), but doesn't significantly extend beyond the schema. Baseline 3 is appropriate.
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 'Get comprehensive statistics about a single note' and lists detailed analysis areas, distinguishing it from vault-wide tools like vault_statistics_fs_tool. However, it does not explicitly differentiate from all sibling tools, so it scores 4.
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 'When to use' section provides clear use cases such as analyzing note complexity and tracking growth. It does not mention when not to use or alternatives, but the context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_file_toolB
Open file in Obsidian (requires Obsidian running).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | File path to open | |
| new_pane | No | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the runtime requirement, but does not disclose what opening a file entails (e.g., effect on current workspace, whether it replaces or opens in new pane).
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?
Single sentence with no wasted words. Front-loads the core purpose and critical prerequisite.
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?
The description is too brief for a tool with three parameters (one required) and no output schema. It omits details on the effect of new_pane, ctx, and what happens on success or failure.
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 schema description coverage at 33%, the description should compensate, but it only repeats 'Open file' which mirrors the file_path description. It adds no meaning for new_pane or ctx parameters.
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 opens a file in Obsidian, with a specific verb and resource. It distinguishes from siblings like read_note_tool (which reads content) and create_note_tool (which creates).
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?
Only mentions the prerequisite 'requires Obsidian running', but gives no guidance on when to use this tool versus alternatives (e.g., read_note_tool, create_note_tool) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_canvas_toolC
Parse Canvas file (filesystem-native, offline).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Canvas file path | |
| vault_path | No | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. Only 'offline' hints at behavior, but it does not disclose whether the tool modifies files, requires specific permissions, or returns any output. The behavior beyond parsing is opaque.
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 very short (one sentence) but this sacrifices useful detail. It is concise but lacks structure to convey essential information.
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 absence of an output schema and annotations, the description should explain what parsing returns and how parameters affect behavior. It fails to do so, leaving significant gaps for an agent.
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 33% (only file_path has a description) and the description does not explain the purpose of vault_path or ctx. The description adds no meaning beyond the schema's minimal 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 it parses a Canvas file and notes it is filesystem-native and offline. 'Parse' is a specific verb and 'Canvas file' is a distinct resource, differentiating it from sibling tools like parse_kanban_board_tool.
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, when not to use it, or compare with similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_kanban_board_toolA
Parse a Kanban board file and extract its structure (filesystem-native, offline).
Parses markdown-based Kanban boards with the following structure:
Column Name (level 2 or 3 headings)
Card text with metadata
Nested subtask
Metadata formats:
Due dates: @{YYYY-MM-DD}
Tags: #tag (inline)
Wikilinks: [[note]]
Supports nested subtasks with indentation levels.
When to use:
Analyzing board structure
Extracting card data programmatically
Generating board reports
Understanding card relationships
Performance:
Boards with 100 cards: < 500ms
Boards with 1,000 cards: < 5 seconds
Returns: Board structure with columns, cards, subtasks, metadata, and statistics
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to Kanban board file (relative to vault) | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses performance benchmarks and metadata formats but does not explicitly state safety aspects (e.g., read-only nature) or required permissions.
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?
Well-structured with clear sections: summary, format details, metadata, usage, performance, returns. Every sentence adds value 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?
Describes input, process, and return value (board structure with columns, cards, etc.). Lacks edge-case handling (e.g., malformed boards) but is adequate for a read-only parsing tool.
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 coverage is 67% (ctx param undocumented). Description adds examples for file_path and explains vault_path uses env var, but ignores ctx parameter entirely.
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?
Description explicitly states the tool parses a Kanban board file and extracts its structure, with specific details on supported markdown formats. It distinguishes from siblings like add_kanban_card_tool and get_kanban_statistics.
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?
Lists clear when-to-use scenarios such as analyzing board structure and extracting card data. However, it does not mention when not to use or compare to similar tools like get_kanban_statistics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_note_toolA
Read the content and metadata of a specific note.
When to use:
Displaying note contents to the user
Analyzing or processing existing note data
ALWAYS before updating a note to preserve existing content
Verifying a note exists before making changes
When NOT to use:
Searching multiple notes (use search_notes instead)
Getting only metadata (use get_note_info for efficiency)
Returns: Note content and metadata including tags, aliases, and frontmatter
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note relative to vault root | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It implies read-only behavior and advises using before updates to preserve content. However, it does not explicitly state it is non-destructive or mention any potential side effects, but the context is clear.
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?
Well-structured with bullet points for usage guidance and a returns section. Each sentence adds value, no 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?
No output schema, but description covers return values (content, metadata, tags, aliases, frontmatter). Distinguishes from key siblings and provides sufficient context for a read tool.
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 50% (ctx parameter undocumented). The description adds examples and constraints for path but does not explain ctx. Baseline 3 is appropriate as it partially compensates.
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 'Read the content and metadata of a specific note.' It uses a specific verb and resource, and explicitly distinguishes from sibling tools like search_notes and get_note_info.
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?
Provides explicit when-to-use scenarios (displaying, analyzing, before updating, verifying existence) and when-not-to-use conditions (searching multiple notes, getting only metadata) with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_dataview_field_toolA
Remove a Dataview inline field from a note (filesystem-native, offline).
Removes all occurrences of a field by key (canonicalized matching), or a specific occurrence if line_number is provided.
For inline fields (bracket/paren syntax), removes only the field while preserving surrounding text. For full-line fields, removes the entire line.
When to use:
Cleaning up obsolete metadata
Removing duplicate fields
Migrating fields to frontmatter
Batch field removal
Returns: Success status, removed key, and canonical key
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to note file (relative to vault) | |
| key | Yes | Field key to remove (will be canonicalized) | |
| line_number | No | Optional specific line number (if multiple fields with same key) | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility. It explains how removal works for inline vs full-line fields, canonicalized matching, and the effect of providing line_number. It also mentions return values. It does not mention reversibility or permissions, but this is sufficient 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 well-structured with a clear first sentence, then a breakdown of behavior, usage guidelines, and return info. Every sentence is relevant and no filler. It is concise yet informative.
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 has 5 parameters and no output schema, the description covers purpose, behavior, usage scenarios, and return values well. It could elaborate on error conditions or side effects, but overall it is comprehensive.
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 coverage is 80%, and the description adds context by explaining canonicalized matching and the optional line_number's role. It ties parameters to behavior, e.g., how key and line_number affect removal. This adds value beyond the schema's base 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 tool's purpose: 'Remove a Dataview inline field from a note'. It specifies the verb 'remove', the resource 'Dataview inline field', and the context 'from a note'. It also distinguishes from sibling tools like add_dataview_field_tool and extract_dataview_fields_tool by being explicitly about removal.
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 includes a 'When to use:' section listing specific scenarios like cleaning up metadata and migrating fields. However, it does not explicitly state when not to use the tool or provide alternatives, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tag_fs_toolA
Remove a tag from a note's frontmatter.
Handles non-existent tags gracefully. Only removes from frontmatter, not inline tags in content.
When to use:
Cleaning up old tags
Reorganizing tag taxonomy
Bulk tag removal operations
Performance: < 200ms per operation
Returns: Success status and descriptive message
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note file | |
| tag | Yes | Tag to remove (without # symbol) | |
| vault_path | No | Path to vault root (optional) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses key behaviors: graceful handling of non-existent tags, scope (frontmatter only), performance estimate, and return value. Lacks details on error handling for missing filepath.
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?
Description is well-structured with clear sections, no redundancy, and all sentences add value.
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?
Covers purpose, usage, behavior, performance, and return. Could elaborate on error cases or prerequisites like file existence, but adequate for typical usage.
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 descriptions cover 75% of parameters; description adds no new parameter-level information beyond restating the action. The tag format (without #) is already in schema.
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 'Remove a tag from a note's frontmatter' and distinguishes from inline tag removal, aligning with sibling tools like remove_tags_tool which likely remove all occurrences.
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?
Provides a 'When to use' section with three specific scenarios, though does not explicitly mention alternative tools like remove_tags_tool for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tags_toolA
Remove tags from a note's frontmatter.
Args: path: Path to the note tags: List of tags to remove (without # prefix)
Returns: Updated tag list
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| tags | Yes | ||
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is adequate, stating it removes tags and returns an updated list. However, with no annotations, it doesn't disclose side effects, error behavior for non-existent tags or notes, or permission requirements. It's neither misleading nor highly informative.
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?
Extremely concise with a clear title line and structured Args/Returns sections. Every sentence is necessary and front-loaded.
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?
Covers the basic semantics for parameters and return value. However, it does not explain the 'ctx' parameter, error scenarios, or edge cases like removing non-existent tags. Given the simplicity of the tool and lack of output schema, it meets minimum viability but has gaps.
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 explains the required parameters 'path' and 'tags' with context (e.g., tags without '#' prefix), adding significant value beyond the input schema which has no descriptions. The optional 'ctx' parameter is not described, but since it's not required, the coverage is high.
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 (remove tags) and the resource (a note's frontmatter). It distinguishes from sibling tools like add_tags_tool and update_tags_tool.
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?
No guidance on when to use this tool versus alternatives like add_tags_tool or update_tags_tool. The description only states what the tool does, not when it should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_templater_template_toolC
Render Templater template (requires Obsidian + Templater plugin).
| Name | Required | Description | Default |
|---|---|---|---|
| template_file | Yes | Template file path | |
| target_file | No | Target file for context | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only mentions the plugin requirement, but does not disclose behavioral traits like side effects, output, or whether it modifies files.
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 efficiently short (two sentences) with no unnecessary words. However, the prerequisite could be integrated into a more comprehensive description.
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 lack of output schema and only moderate schema coverage, more context is needed. No mention of return values, errors, or what the rendered output does.
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 coverage is 67% (2 of 3 parameters described), and the description adds no parameter-level information beyond what's in the schema. No compensation for undocumented 'ctx' parameter.
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?
Description states 'Render Templater template' which is a verb+resource, but does not differentiate from the sibling 'expand_template_tool'. The prerequisite mention adds context but does not clarify unique purpose.
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?
No guidance on when to use this tool versus alternatives. The only usage hint is the prerequisite requirement, but no when-to-use or when-not-to-use information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_dataview_field_toolA
Find all notes containing a specific Dataview field (filesystem-native, offline).
Searches across all markdown files in the vault for a field by key (and optionally value/type). Field keys are canonicalized for consistent matching:
"Project Status" โ "project-status"
"Due Date" โ "due-date"
When to use:
Finding notes with specific metadata
Discovering field usage patterns
Locating notes by custom properties
Building dynamic collections
Performance:
1,000 notes: < 5 seconds
10,000 notes: < 50 seconds
Returns: Matching fields grouped by file, with total counts and file list
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Field key to search for (will be canonicalized: lowercase, spacesโhyphens) | |
| value | No | Optional value to match (exact match) | |
| value_type | No | Optional value type filter | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers all behavioral aspects: offline filesystem-native operation, canonicalization rules, performance estimates for typical vault sizes, and return format (grouped by file with counts). This is complete and transparent.
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 well-structured with sections, bullet points, and examples. It is concise but could be slightly shortened. Every sentence adds value, and the format aids readability.
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 5 parameters and no output schema, the description covers purpose, behavior, canonicalization, performance, and returns. It lacks explanation of the ctx parameter, but overall provides sufficient context for an agent to use the tool correctly.
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 covers 80% of parameters with descriptions. The description adds canonicalization details for 'key' but does not significantly enhance meaning for other parameters beyond schema. Performance and return info are not parameter-specific. Baseline 3 is appropriate.
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 it finds notes containing a specific Dataview field, using verbs 'Find all notes' and specifying the resource. It distinguishes from siblings like search_by_date, search_notes, and search_tasks by focus on Dataview fields.
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 'When to use' section lists specific scenarios like finding notes with metadata and building dynamic collections, providing clear context. It does not explicitly exclude other cases, but the list guides appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_date_toolA
Search for notes by creation or modification date.
When to use:
Finding recently modified notes
Locating notes created in a specific time period
Reviewing activity from specific dates
When NOT to use:
Content-based search (use search_notes)
Finding notes by tags or path (use search_notes)
Returns: Notes matching the date criteria with paths and timestamps
| Name | Required | Description | Default |
|---|---|---|---|
| date_type | No | Type of date to search by | modified |
| days_ago | No | Number of days to look back from today | |
| operator | No | Search operator for date matching | within |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It describes the tool as a read operation and mentions return fields (paths and timestamps), but it does not disclose potential side effects, authentication requirements, rate limits, or whether the search is case-sensitive or limited to certain note types. The disclosure is adequate but not thorough.
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 highly concise with no redundant sentences. It uses bullet points for clarity and front-loads the core purpose in the first sentence. Every section earns its place.
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?
The description covers the basic purpose, usage guidance, and return types, but it lacks details about result sorting, pagination, or limits. Given the tool has no output schema, the description could be more complete by specifying the format or ordering of results.
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 75% schema coverage, three parameters (date_type, days_ago, operator) already have descriptions. The description adds context by explaining when to use specific parameter combinations (e.g., 'recently modified notes' for days_ago, 'specific time period' for date_type). This adds value beyond the schema, though it does not elaborate on every parameter's nuances.
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: searching notes by creation or modification date. It uses a specific verb ('Search') and resource ('notes'), and distinguishes itself from sibling tools like search_notes which handle content-based or tag-based searches.
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 explicitly provides 'When to use' and 'When NOT to use' sections, with concrete examples and clear alternatives (e.g., 'use search_notes' for content-based search). This fully informs the agent when to select this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_tag_fs_toolA
Find all notes containing a specific tag (frontmatter or inline).
Searches entire vault for notes with the specified tag in either frontmatter or inline (#tag) format. Supports nested tags.
When to use:
Finding all notes in a category
Building tag-based navigation
Analyzing tag usage across vault
Finding related notes
Performance:
1,000 notes: < 3 seconds
10,000 notes: < 30 seconds
Returns: List of notes with tag locations (frontmatter/inline)
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag to search for (with or without #) | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description bears full responsibility. It discloses search behavior (frontmatter/inline, nested tags, entire vault), performance benchmarks (e.g., '1,000 notes: < 3 seconds'), and return format (list of notes with tag locations). No side effects are omitted as the tool is read-only.
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 efficiently structured with clear sections (purpose, when to use, performance, returns). Every sentence adds relevant information without redundancy. Front-loaded with the core action.
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?
The description explains the primary parameter (tag) well, mentions optional vault_path, and describes the return output. However, it omits guidance on the ctx parameter and provides no comparison with closely related siblings like list_notes_by_tag_dql_tool. Overall sufficient for a search tool.
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 67% (2 of 3 parameters documented). The description adds value by confirming tag syntax ('with or without #') and supporting nested tags, but does not elaborate on the undocumented 'ctx' parameter. Baseline 3 is appropriate as schema does most of the work.
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: 'Find all notes containing a specific tag (frontmatter or inline)'. It distinguishes itself from sibling tools like list_notes_by_tag_dql_tool by specifying it searches both frontmatter and inline tags, supports nested tags, and includes tag locations in results.
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 includes a 'When to use' section with four specific use cases (e.g., 'Finding all notes in a category'). However, it does not explicitly mention when not to use this tool or directly compare with alternatives like list_notes_by_tag_dql_tool, which slightly reduces guidance completeness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notes_toolA
Search for notes containing specific text or matching search criteria.
When to use:
Finding notes by content keywords
Locating notes with specific tags
Searching within specific folders
When NOT to use:
Searching by date (use search_by_date instead)
Listing all notes (use list_notes for better performance)
Finding a specific known note (use read_note directly)
Returns: Search results with matched notes, relevance scores, and context
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query supporting Obsidian syntax | |
| context_length | No | Number of characters to show around matches | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the return value includes 'Search results with matched notes, relevance scores, and context' but does not disclose other behavioral traits like read-only nature, performance characteristics, or error handling. The description is adequate but 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 concise, front-loading the main purpose, followed by bullet-pointed usage guidelines and a brief note on returns. No unnecessary words; every sentence adds value.
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 many sibling tools and lack of output schema, the description does a good job of differentiating usage. It covers core use cases and alternatives but lacks details on pagination, max results, sorting, and exact return format, which would enhance 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 67% (query and context_length have descriptions). The description does not add meaning beyond what the schema provides; it repeats the search criteria concept. The 'ctx' parameter has no description in schema or description, so the description does not compensate for the gap.
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 explicitly states 'Search for notes containing specific text or matching search criteria,' providing a specific verb and resource. It distinguishes from siblings by listing when NOT to use this tool (search_by_date, list_notes, read_note), making the purpose clear.
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 includes a 'When to use' section with three concrete scenarios (content keywords, tags, folders) and a 'When NOT to use' section naming alternative tools with reasons (e.g., 'use list_notes for better performance'). This is explicit guidance for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tasks_toolA
Search and filter tasks by metadata across the vault (filesystem-native, offline).
Scans all markdown files in the vault and extracts tasks with Tasks plugin metadata (due dates, priorities, recurrence). Supports comprehensive filtering and sorting.
Metadata Format (Tasks Plugin):
Priority: โซ (highest), ๐ผ (high), ๐ฝ (low), โฌ (lowest), none (normal)
Due date: ๐ YYYY-MM-DD
Scheduled: โณ YYYY-MM-DD
Start date: ๐ซ YYYY-MM-DD
Done date: โ YYYY-MM-DD
Recurrence: ๐ every
When to use:
Finding overdue tasks
Viewing high-priority tasks
Planning weekly schedules
Reviewing recurring tasks
Performance:
1,000 notes: < 3 seconds
10,000 notes: < 30 seconds
Returns: Tasks matching filters with full metadata, file locations, and line numbers
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| status | No | Filter by completion status | |
| priority | No | Filter by priority level | |
| due_before | No | Filter tasks due before this date (YYYY-MM-DD) | |
| due_after | No | Filter tasks due after this date (YYYY-MM-DD) | |
| due_within_days | No | Filter tasks due within N days from today | |
| has_recurrence | No | Filter tasks with/without recurrence patterns | |
| tag | No | Filter tasks containing this tag (without #) | |
| limit | No | Maximum number of results | |
| sort_by | No | Field to sort by | due_date |
| sort_order | No | Sort direction | asc |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes full responsibility for behavioral disclosure. It includes performance metrics (1k notes <3s, 10k <30s), details the metadata format, and specifies the return structure (tasks with metadata, file locations, line numbers). It implies read-only behavior but does not explicitly state it, slightly reducing completeness.
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 well-organized into clear sections: purpose, metadata format, use cases, performance, and returns. Each section provides essential information without redundancy, and the structure is front-loaded with the core functionality.
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 12 parameters with high schema coverage and no output schema, the description compensates by detailing return values (tasks with full metadata, file locations, line numbers) and providing performance benchmarks. It covers typical use cases comprehensively, making it self-sufficient for the agent.
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 already describes parameters well (92% coverage). The description adds value by explaining the Tasks plugin metadata format (emoji symbols for priority and dates), which clarifies the meaning of filters like priority and due dates beyond the schema's enum values and date patterns.
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 it searches and filters tasks by metadata across the vault, distinguishing it from sibling tools like search_notes_tool (note content search) and get_task_statistics_tool (statistics). It specifies filesystem-native, offline operation, and Tasks plugin metadata, making the purpose unambiguous.
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 explicit use cases (overdue tasks, high-priority tasks, weekly schedules, recurring reviews) which guide when to use this tool. However, it does not explicitly state when NOT to use it or mention alternative tools, which would have improved the score further.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
table_query_dql_toolB
Execute a DQL TABLE query (requires Obsidian + Dataview plugin).
Creates tabular views of note metadata with custom fields.
When to use:
Creating structured data views
Displaying multiple fields in table format
Building reports and dashboards
Analyzing note collections
Returns: Table results with specified fields and rows
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | List of fields to display | |
| from_clause | No | FROM clause (e.g., '#project', '"folder"') | |
| where_clause | No | Optional WHERE filter | |
| sort_by | No | Optional SORT clause | |
| limit | No | Optional result limit | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It mentions the dependency on Obsidian and Dataview and states returns table results, but does not disclose whether the tool is read-only (likely yes) or any side effects, permissions, or performance considerations.
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 well-organized with a clear first sentence, bullet points for usage, and a return section. It is concise and front-loaded, though the bullet points could be more precise.
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 number of parameters and lack of output schema, the description covers the core purpose and typical use cases. However, it omits practical details like valid field names, query limitations, or how it differs from execute_dataview_query_tool.
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 coverage is 83%, so most parameters have descriptions. The description adds minimal extra meaning beyond the schema, only providing examples of fields. It does not explain how parameters interact or format details.
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?
Description clearly states it executes a DQL TABLE query to create tabular views of note metadata. It lists use cases like creating reports and dashboards, but does not explicitly distinguish from sibling tools like execute_dataview_query_tool that might handle other DQL query types.
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 'When to use' section provides four scenarios, giving some context. However, it lacks explicit guidance on when not to use this tool or how it compares to alternatives like list_notes_by_folder_dql_tool or search_by_dataview_field_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_kanban_card_toolA
Toggle a Kanban card's completion status (filesystem-native, offline).
Toggles the checkbox between - [ ] (incomplete) and - [x] (completed).
Preserves all metadata, subtasks, and formatting.
When to use:
Marking cards complete/incomplete
Batch status updates
Automated workflow transitions
Quick status changes
Performance:
< 500ms for boards with 1,000 cards
Returns: Success status, new status, and card details
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to Kanban board file (relative to vault) | |
| card_text | Yes | Text of the card to toggle (must match exactly) | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description mentions preserving metadata and performance (<500ms for 1000 cards). It lacks details on side effects, idempotency, or permissions, but provides reasonable behavioral context.
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 well-structured with a clear title, usage lists, and return section. It is moderately concise and front-loaded, with no unnecessary verbosity.
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 output schema, the description includes return values. It covers tool purpose, parameters, and performance. Missing explanation of the 'ctx' parameter, but overall it is comprehensive for a simple toggle 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 coverage is 75%; description adds context like exact match requirement and relative path interpretation. However, parameter 'ctx' is unexplained, and the description does not significantly enhance the schema information beyond baseline.
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 it toggles a Kanban card's completion status between incomplete and complete, specifying the exact checkbox format. It distinguishes itself from siblings like add_kanban_card_tool and toggle_task_status_tool.
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 'When to use' section lists clear use cases like marking cards complete and batch updates. However, it does not explicitly mention when not to use this tool or provide comparisons to alternatives like toggle_task_status_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_task_status_toolA
Toggle task completion status between incomplete and completed (filesystem-native).
Toggles the checkbox between - [ ] (incomplete) and - [x] (completed).
Optionally adds a done date (โ
YYYY-MM-DD) when marking tasks as complete.
When to use:
Marking tasks complete
Unchecking accidentally completed tasks
Batch status updates via automation
Returns: Success status, new status, done date (if added), and updated line
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to file containing the task (relative to vault) | |
| line_number | Yes | Line number containing the task | |
| add_done_date | No | Add โ done date when completing task | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the toggle behavior, optional done date, and return values. However, it does not mention side effects like file modification, permissions needed, or error cases when the line is not a task.
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?
Highly concise and well-structured: a brief purpose, detailed explanation, 'When to use' list, and return values. Every sentence adds value, and the main verb is front-loaded.
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?
Covers main behavior, use cases, parameters, and return values. No output schema, but includes return details. Missing explanation of error handling and the ctx parameter, but overall sufficient for a toggle tool.
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 80%, baseline 3. Description adds meaning by explaining the checkbox format and the role of add_done_date. It contextually describes file_path and vault_path beyond schema, but does not explain the ctx parameter.
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 toggles task completion status between incomplete and completed, specifying the checkbox format and optional done date. It distinguishes itself from sibling tools like create_task_tool and update_task_metadata_tool by focusing on toggling state.
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?
Includes a 'When to use' section listing explicit use cases (marking tasks complete, unchecking accidentally completed tasks, batch updates). Does not explicitly mention 'when not to use' or name alternatives, but the described use cases are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_frontmatter_field_fs_toolA
Update or add a field in note's YAML frontmatter.
If the note has no frontmatter, it will be created. If the field already exists, its value will be updated. Otherwise, the field will be added. Supports strings, numbers, booleans, and lists.
When to use:
Updating note status or metadata
Adding creation/modification timestamps
Managing custom frontmatter fields
Programmatic metadata management
Performance:
Any note size: < 200ms
Returns: Success status and descriptive message
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to note (relative to vault or absolute) | |
| field | Yes | Field name to update/add in frontmatter | |
| value | Yes | Value to set (string, number, boolean, or list) | |
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses creation, update, add behavior, supported types, and performance (<200ms). Adds value beyond schema without contradictions.
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?
Well-structured with sections for purpose, when-to-use, performance, and returns. Concise and front-loaded with no unnecessary content.
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?
Covers behavior, types, performance, and return value. Lacks details on error handling or 'ctx' parameter, but overall adequate for a 5-parameter tool without 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?
Schema coverage is 80%, and description reinforces with examples for field and value, and mentions environment variable for vault_path. Context on 'ctx' missing but overall adds meaning beyond schema.
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?
Description clearly states the tool updates or adds a field in note's YAML frontmatter, with specific verb and resource, and distinguishes from siblings that modify notes in other ways.
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?
Includes a 'When to use' section listing specific scenarios like updating note status or adding timestamps, providing clear guidance. Does not explicitly state when not to use or name alternatives, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_note_toolA
Update the content of an existing note.
โ ๏ธ IMPORTANT: By default, this REPLACES the entire note content. Always read the note first if you need to preserve existing content.
When to use:
Updating a note with completely new content (replace)
Adding content to the end of a note (append)
Programmatically modifying notes
When NOT to use:
Making small edits (read first, then update with full content)
Creating new notes (use create_note instead)
Returns: Update status with path, metadata, and operation performed
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note to update | |
| content | Yes | New markdown content (REPLACES existing content unless using append) | |
| create_if_not_exists | No | Create the note if it doesn't exist | |
| merge_strategy | No | How to handle content: 'replace' overwrites, 'append' adds to end | replace |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses default replace behavior, the merge_strategy parameter, and return value. The warning about replacement is prominently highlighted.
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?
Concise with clear sections and bold/emoji for emphasis. Every sentence adds value, with no 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 no output schema, the description adequately describes return value (update status, path, metadata, operation). Covers all key behaviors and edge cases.
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 coverage is high (80%), but the description adds value by emphasizing the replace behavior and merge options beyond schema definitions. The ctx parameter lacks description but is less critical.
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 'Update the content of an existing note' and specifies operations like replace and append. It distinguishes from sibling tool 'create_note' by noting when not to use it.
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?
Explicitly lists when to use (new content, append, programmatic) and when not to use (small edits, creating new notes). Includes important prerequisite: 'Always read the note first if you need to preserve existing content.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_tags_toolA
Update tags on a note - either replace all tags or merge with existing.
When to use:
After analyzing a note's content to suggest relevant tags
Reorganizing tags across your vault
Setting consistent tags based on note types or projects
AI-driven tag suggestions ("What is this note about? Add appropriate tags")
When NOT to use:
Just adding a few tags (use add_tags)
Just removing specific tags (use remove_tags)
Returns: Previous tags, new tags, and operation performed
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note | |
| tags | Yes | New tags to set (without # prefix) | |
| merge | No | If True, adds to existing tags. If False, replaces all tags | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the merge flag behavior and return values (previous/new tags, operation). However, it does not mention that the note file is modified or any potential side effects like overwriting, though the behavior is clear enough for a tag update.
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 highly concise and well-structured with bullet points for usage guidelines. Every sentence adds value, and the formatting aids quick scanning. No redundant information.
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 output schema, the description provides return info (Previous tags, new tags, operation performed). It thoroughly explains the two modes and usage context, making the tool fully understandable without external references.
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 coverage is 75% (ctx parameter lacks description but is optional without default). The description adds value by explaining the merge parameter behavior and clarifying that tags are without # prefix (though schema also says that). It compensates adequately for the missing ctx 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 tool updates tags on a note, specifying two modes (replace all or merge). It explicitly distinguishes itself from sibling tools add_tags and remove_tags, making the purpose unambiguous.
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 explicit when-to-use scenarios (e.g., after analyzing content, reorganizing tags) and when-not-to-use cases (e.g., adding few tags, removing specific tags), directly referencing sibling tools for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_metadata_toolA
Update task metadata without changing the task content (filesystem-native).
Updates priority, dates, or recurrence patterns while preserving the task description. Pass null/None to remove metadata fields.
When to use:
Rescheduling tasks
Changing task priorities
Adding/removing recurrence
Batch metadata updates
Returns: Success status, updated line, and list of changes made
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to file containing the task (relative to vault) | |
| line_number | Yes | Line number containing the task | |
| priority | No | Update priority (null to remove) | |
| due_date | No | Update due date YYYY-MM-DD (null to remove) | |
| scheduled_date | No | Update scheduled date YYYY-MM-DD (null to remove) | |
| start_date | No | Update start date YYYY-MM-DD (null to remove) | |
| recurrence | No | Update recurrence pattern (must start with 'every', null to remove) | |
| vault_path | No | Path to vault (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description states metadata is updated while preserving content, and null removes fields. Lacks details on permissions, idempotency, or side effects for unchanged fields.
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?
Front-loaded with key purpose, then usage and returns. Structure is clear but could slightly reduce verbosity (e.g., remove redundant 'filesystem-native' explanation).
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?
Covers purpose, parameters usage, and return value. Lacks error handling or behavior when task not found. Given 9 params and no output schema, it is mostly complete.
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 coverage is high (89%). Description adds the concept of passing null to remove fields, but otherwise does not add meaning beyond schema 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 tool updates task metadata (priority, dates, recurrence) without changing content, and differentiates from siblings like create_task_tool by specifying it modifies existing tasks. The phrase 'filesystem-native' indicates direct file 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?
Includes a 'When to use' section listing rescheduling, changing priorities, and adding/removing recurrence. Does not explicitly state when not to use or mention alternatives like update_note_tool for content changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_statistics_fs_toolA
Get aggregate statistics for the entire vault.
Walks through the vault directory, analyzes all markdown files (excluding .obsidian), and aggregates statistics. Uses memory-efficient generator-based iteration.
Returns:
Total notes count
Total words across all notes
Total links (wikilinks + markdown links)
Unique tags count and sorted list
Average words per note
When to use:
Understanding vault size and complexity
Content inventory and auditing
Identifying most-used tags
Tracking vault growth
Performance:
1,000 notes: < 30 seconds
10,000 notes: < 5 minutes
Returns: Vault-wide aggregate statistics
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | Path to vault root (optional, uses OBSIDIAN_VAULT_PATH env if not provided) | |
| ctx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description details how it works (walks directory, uses generator-based iteration, excludes .obsidian) and includes performance estimates. This fully compensates for missing annotations.
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?
Well-structured with clear sections, bullet points for returns and use cases. Each sentence adds value; no redundancy. Front-loaded purpose and returns.
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?
Despite no output schema, description lists all return fields. Covers performance, exclusions, and usage intent. Complete for the tool's single-purpose aggregation function.
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 coverage is 50% (vault_path described, ctx not). The description adds meaning by noting vault_path is optional and defaults to env variable, but fails to explain the ctx parameter. Partial compensation.
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 it gets aggregate statistics for the entire vault and lists specific metrics (total notes, words, links, tags, average words). It implicitly distinguishes from sibling note_statistics_fs_tool by focusing on vault-wide aggregation.
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?
Provides explicit when-to-use scenarios like understanding vault size, content inventory, and tracking growth. Does not mention when not to use or alternatives, but the use cases are clear and helpful.
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.
63 tool updates
v2.1.0- First observed
add_canvas_node_tool - First observed
add_dataview_field_tool - First observed
add_kanban_card_tool - First observed
add_tag_fs_tool - First observed
add_tags_tool - First observed
analyze_link_health_tool - First observed
analyze_note_tags_fs_tool - First observed
append_to_note_fs_tool - First observed
create_folder_tool - First observed
create_note_tool - First observed
create_task_tool - First observed
delete_note_tool - First observed
execute_command_tool - First observed
execute_dataview_query_tool - First observed
expand_template_tool - First observed
extract_dataview_fields_tool - First observed
find_broken_links_tool - First observed
find_hub_notes_tool - First observed
find_orphaned_notes_tool - First observed
get_active_file_tool - First observed
get_backlinks_fs_tool - First observed
get_backlinks_tool - First observed
get_broken_links_fs_tool - First observed
get_kanban_statistics_tool - First observed
get_link_graph_tool - First observed
get_note_connections_tool - First observed
get_note_info_tool - First observed
get_outgoing_links_tool - First observed
get_task_statistics_tool - First observed
insert_after_block_fs_tool - First observed
insert_after_heading_fs_tool - First observed
list_commands_tool - First observed
list_folders_tool - First observed
list_notes_by_folder_dql_tool - First observed
list_notes_by_tag_dql_tool - First observed
list_notes_tool - First observed
list_tags_tool - First observed
list_templates_tool - First observed
move_folder_tool - First observed
move_kanban_card_tool - First observed
move_note_tool - First observed
note_statistics_fs_tool - First observed
open_file_tool - First observed
parse_canvas_tool - First observed
parse_kanban_board_tool - First observed
read_note_tool - First observed
remove_dataview_field_tool - First observed
remove_tag_fs_tool - First observed
remove_tags_tool - First observed
render_templater_template_tool - First observed
search_by_dataview_field_tool - First observed
search_by_date_tool - First observed
search_by_tag_fs_tool - First observed
search_notes_tool - First observed
search_tasks_tool - First observed
table_query_dql_tool - First observed
toggle_kanban_card_tool - First observed
toggle_task_status_tool - First observed
update_frontmatter_field_fs_tool - First observed
update_note_tool - First observed
update_tags_tool - First observed
update_task_metadata_tool - First observed
vault_statistics_fs_tool
TDQS
Scored across 63 tools
There is substantial overlap among tools, particularly for tag operations (add_tag_fs_tool vs add_tags_tool, remove_tag_fs_tool vs remove_tags_tool) and link analysis (multiple backlink and broken link tools). This makes it difficult for an agent to select the correct tool.
Naming follows a verb_noun pattern but is inconsistent: some tools include '_fs' suffix, some don't; pluralization varies (add_tag vs add_tags); and verbs like 'get', 'find', 'search', 'list' are used interchangeably. While readable, the pattern is not uniform.
With 63 tools, the server is overly large and includes many redundant variations. This exceeds the typical well-scoped range (3-15) and would benefit from consolidation or splitting into focused sub-servers.
The tool set covers nearly all Obsidian operations: note/folder CRUD, tag management, search, link analysis, tasks, Kanban, Canvas, Dataview, templates, and command execution. Minor gaps exist (e.g., no explicit rename or attachment management), but overall it is very comprehensive.
Maintenance
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Nifty's MCP server โ exposes tasks, projects, messages, and files as tools for AI agents.
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for managing Obsidian-style note vaults, providing tools for full-text search, note creation, and backlink tracking. It enables users to navigate, structure, and update their personal knowledge base through natural language.9MIT
- AlicenseAqualityAmaintenanceThe most feature-complete MCP server for Obsidian vaults. 23 tools and 3 resources for search, read, write, tags, link analysis, graph traversal, and canvas support.4148 npm30MIT
- AlicenseBqualityDmaintenanceLocal-first MCP server for Obsidian vaults with 66 tools for reading, writing, searching, and managing notes, tasks, graphs, and more. Works without Obsidian running and requires no plugins.66MIT
- AlicenseAqualityAmaintenanceStandalone MCP server for Obsidian vaults - hybrid search (FTS5 + vector + cross-encoder reranking), images and PDFs in agent-readable form, Kanban-aware tasks (Tasks-plugin + Dataview formats), structured memory with topic recall, fine-grained read/write tools for optimal token efficiency, and link graph support. Run locally, self-host, or one-click deploy for remote access. OAuth 2.1.433596 npm19MIT