Obsidian MCP Server
Supports accessing Obsidian vaults stored in Dropbox through local file system integration
Supports accessing Obsidian vaults stored in iCloud through local file system integration
Provides comprehensive vault access, knowledge graph analysis, note operations, canvas manipulation, dataview queries, template rendering, and periodic notes management for Obsidian knowledge bases
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 Serverfind notes related to project planning from my knowledge graph"
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 Server
A comprehensive Model Context Protocol (MCP) server for Obsidian that provides powerful vault access, knowledge graph analysis, and advanced integration features.
š Documentation
Quick Start Guide - Get up and running in 5 minutes
Claude Desktop Setup - Connect to Claude Desktop
Vault Types Explained - Understanding local/remote/API configurations
Testing Guide - Running tests and contributing
API Documentation - Complete tool reference
Related MCP server: Obsidian MCP Server
Features
šļø Multi-Vault Support
Local Vaults: Direct file system access with real-time file watching
Remote Vaults: HTTP/REST API integration with automatic sync
Seamless switching between multiple vaults
š Knowledge Graph
Build and analyze complete knowledge graphs from your notes
Find related notes based on links, tags, and content similarity
Analyze graph structure (hubs, orphan notes, clusters)
Suggest potential links between related notes
Path finding between notes
š Advanced Search
Full-text search across all notes
Filter by tags, folders, and metadata
Server-side and client-side search strategies
š Note Operations
Read, create, update, and delete notes
Parse Obsidian-flavored markdown with frontmatter
Extract and track internal links, embeds, and tags
Automatic backlink generation
š Analytics
Vault statistics (note count, word count, link count)
Tag usage analysis
Folder structure insights
šÆ Obsidian Integration
Optional integration with community "Local REST API" plugin
Open notes directly in Obsidian app
Execute Obsidian commands
Create daily notes
Access to Obsidian URI protocol
Note: Requires plugin installation and app running locally
šØ Canvas Support
Read and manipulate Obsidian Canvas files
Create and edit canvas nodes (file, text, link, group)
Manage canvas edges and connections
Full graph visualization support
Programmatic canvas generation
š Dataview Queries
SQL-like querying over your notes
Filter by frontmatter metadata and inline fields
Sort and group results
Field selection and aggregation
Support for complex WHERE clauses
Extract metadata from notes (frontmatter + inline fields)
š Template System
Dynamic template rendering with variable substitution
Built-in date/time variables (
{{date}},{{time}},{{weekday}}, etc.)Custom variable support
Default values (
{{variable|default}})Date formatting (
{{date:YYYY-MM-DD}})Frontmatter merging
Create notes from templates programmatically
š Periodic Notes
Daily, weekly, monthly, and yearly notes
Automatic date-based naming and organization
Custom templates for each note type
Date range calculations
List and query periodic notes
Configurable folder structure and formats
Architecture
The server is built with a clean, modular architecture:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā MCP Server Layer ā
ā (Tools, Resources, Protocol Handling) ā
āāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Service Layer ā
ā ⢠Knowledge Graph Service ā
ā ⢠Canvas Service ā
ā ⢠Dataview Service ā
ā ⢠Template Service ā
ā ⢠Periodic Notes Service ā
ā ⢠Configuration Management ā
āāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Connector Layer (Adapters) ā
ā ⢠Local Vault Connector (File System) ā
ā ⢠Remote Vault Connector (HTTP API) ā
āāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Integration Layer ā
ā ⢠Obsidian API Client ā
ā ⢠Markdown Parser ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāKey Design Patterns
Adapter Pattern: Abstract
BaseConnectorinterface allows seamless switching between local and remote vaultsService Layer: Separates business logic (knowledge graph) from data access
Configuration Management: Flexible config from files, environment, or defaults
Real-time Updates: File watchers for local vaults, periodic sync for remote
Installation
npm install
npm run buildConfiguration
Create a obsidian-mcp.json configuration file:
{
"vaults": [
{
"name": "my-local-vault",
"type": "local",
"path": "/path/to/obsidian/vault"
},
{
"name": "my-cloud-vault",
"type": "remote",
"url": "https://your-sync-server.com/api",
"apiKey": "your-api-key",
"syncInterval": 60000
}
],
"obsidianApi": {
"restApiUrl": "http://localhost:27124",
"apiKey": "your-api-key",
"vaultName": "my-local-vault"
},
"server": {
"name": "obsidian-mcp-server",
"version": "1.0.0"
}
}Vault Types Explained
Local Vault (type: "local")
Direct filesystem access to your Obsidian vault folder
Fastest performance, real-time file watching
Use this for vaults stored on your computer or mounted network drives
Remote Vault (type: "remote")
Connects to a self-hosted sync server via HTTP/REST API
For vaults hosted on your own cloud infrastructure (not Obsidian's sync service)
Examples: Custom REST API, CouchDB, WebDAV wrapper, etc.
Requires you to implement or use a compatible sync server
Obsidian API (Optional)
Only needed if you want to control the Obsidian desktop app
Requires the "Local REST API" community plugin in Obsidian
Enables: Opening notes in app, executing commands, accessing app features
NOT used for reading/writing vault content (use local/remote vaults for that)
Configuration via Environment Variables
Alternatively, use environment variables:
# Local vault
export OBSIDIAN_VAULT_PATH="/path/to/vault"
export OBSIDIAN_VAULT_NAME="my-vault"
# Remote vault
export OBSIDIAN_REMOTE_URL="https://your-sync-server.com/api"
export OBSIDIAN_REMOTE_NAME="cloud"
export OBSIDIAN_REMOTE_API_KEY="your-key"
export OBSIDIAN_SYNC_INTERVAL="60000"
# Obsidian API (optional)
export OBSIDIAN_API_URL="http://localhost:27124"
export OBSIDIAN_API_KEY="your-key"Common Configuration Scenarios
Scenario 1: Just a local vault (most common)
{
"vaults": [
{
"name": "personal",
"type": "local",
"path": "/home/user/Documents/ObsidianVault"
}
]
}Scenario 2: Local vault + iCloud/Dropbox (also use local type)
{
"vaults": [
{
"name": "synced",
"type": "local",
"path": "/home/user/iCloud/ObsidianVault"
}
]
}Note: iCloud/Dropbox sync is handled by the cloud service itself - just point to the synced folder.
Scenario 3: Multiple local vaults
{
"vaults": [
{
"name": "personal",
"type": "local",
"path": "/home/user/Documents/PersonalVault"
},
{
"name": "work",
"type": "local",
"path": "/home/user/Documents/WorkVault"
}
]
}Scenario 4: Self-hosted remote server (advanced)
{
"vaults": [
{
"name": "cloud",
"type": "remote",
"url": "https://your-server.com/obsidian-api",
"apiKey": "your-api-key",
"syncInterval": 60000
}
]
}Note: Requires you to implement or deploy a compatible REST API server.
Usage
Start the Server
npm startOr use the binary:
node dist/index.jsAvailable MCP Tools
The server exposes the following tools through the MCP protocol:
Note Operations
get_note- Retrieve a note by pathsearch_notes- Search notes with filterscreate_note- Create a new noteupdate_note- Update existing notedelete_note- Delete a note
Vault Information
get_vault_stats- Get vault statisticslist_tags- List all tagslist_folders- List all folders
Knowledge Graph
get_knowledge_graph- Get complete graph structureget_related_notes- Find related notesanalyze_graph- Analyze graph structuresuggest_links- Suggest potential links
Canvas Operations
get_canvas- Read a canvas filecreate_canvas- Create a new empty canvaslist_canvas_files- List all canvas files in vaultadd_canvas_node- Add a node (file, text, link, or group)add_canvas_edge- Add an edge/connection between nodesdelete_canvas_node- Delete a node from canvasdelete_canvas_edge- Delete an edge from canvas
Dataview Queries
dataview_query- Execute Dataview-style queries on notesget_note_metadata- Get metadata for a specific noteget_unique_values- Get all unique values for a field
Template System
list_templates- List all available templatesrender_template- Render a template with variablescreate_from_template- Create a new note from a template
Periodic Notes
create_daily_note- Create or get daily notecreate_weekly_note- Create or get weekly notecreate_monthly_note- Create or get monthly notecreate_yearly_note- Create or get yearly noteget_periodic_note_info- Get info about a periodic notelist_periodic_notes- List periodic notes in a date range
MCP Resources
All notes are exposed as resources with URIs:
obsidian://{vault-name}/{note-path}Development
Project Structure
src/
āāā index.ts # Main MCP server
āāā types/ # TypeScript type definitions
ā āāā index.ts # Core types
ā āāā canvas.ts # Canvas types
ā āāā dataview.ts # Dataview types
ā āāā template.ts # Template types
ā āāā periodic.ts # Periodic notes types
āāā connectors/ # Vault connectors (adapters)
ā āāā BaseConnector.ts
ā āāā LocalConnector.ts
ā āāā RemoteConnector.ts
āāā services/ # Business logic services
ā āāā KnowledgeGraph.ts # Knowledge graph analysis
ā āāā CanvasService.ts # Canvas file operations
ā āāā DataviewService.ts # Dataview query processing
ā āāā TemplateService.ts # Template rendering
ā āāā PeriodicNotesService.ts # Periodic notes management
āāā api/ # External API integrations
ā āāā ObsidianAPI.ts
āāā utils/ # Utilities
āāā config.ts
āāā markdown.tsBuild
npm run buildWatch Mode
npm run watchIntegration with Obsidian
For advanced features, install the Obsidian Local REST API plugin:
Install the plugin from Obsidian Community Plugins
Enable the plugin and note the API key
Configure the
obsidianApisection in your config
Use Cases
For AI Assistants
Access and navigate your Obsidian knowledge base
Create and update notes based on conversations
Find related information across notes
Suggest connections between ideas
For Automation
Automated note creation and organization
Batch processing of notes
Knowledge graph analysis and visualization
Link maintenance and suggestions
For Integrations
Connect Obsidian with other tools via MCP
Build custom workflows
Create dashboards and reports
Sync with external systems
Advanced Features
Canvas Support
Obsidian Canvas is a powerful visual workspace. This server provides full programmatic access to create and manipulate canvas files:
Example: Create a visual mind map
// Create a new canvas
await mcp.callTool('create_canvas', { canvasPath: 'diagrams/mindmap.canvas' });
// Add nodes
await mcp.callTool('add_canvas_node', {
canvasPath: 'diagrams/mindmap.canvas',
nodeType: 'file',
file: 'notes/central-idea.md',
x: 0, y: 0, width: 400, height: 200
});
await mcp.callTool('add_canvas_node', {
canvasPath: 'diagrams/mindmap.canvas',
nodeType: 'text',
text: '# Key Concept',
x: 500, y: 0, width: 300, height: 150,
color: '1' // Red
});
// Connect nodes with edges
await mcp.callTool('add_canvas_edge', {
canvasPath: 'diagrams/mindmap.canvas',
fromNode: 'node-id-1',
toNode: 'node-id-2',
label: 'relates to'
});Dataview Queries
Query your notes like a database with SQL-like syntax:
Example: Find recent project notes
await mcp.callTool('dataview_query', {
query: {
from: '#project',
where: [
{ field: 'status', operator: 'eq', value: 'active' },
{ field: 'modified', operator: 'gte', value: '2024-01-01' }
],
sort: [{ field: 'modified', direction: 'desc' }],
limit: 10
}
});Example: Group notes by tag
await mcp.callTool('dataview_query', {
query: {
from: 'projects/',
groupBy: 'status',
select: ['title', 'modified', 'tags']
}
});Example: Get metadata from inline fields
// Note content: "Status:: In Progress\nPriority:: High"
const metadata = await mcp.callTool('get_note_metadata', {
notePath: 'projects/my-project.md'
});
// Returns: { status: 'In Progress', priority: 'High', ... }Template System
Create reusable templates with variable substitution and automatic date handling:
Example: Create a meeting note template
---
tags: [meeting]
templateVariables:
- name: attendees
type: string
description: Meeting attendees
---
# Meeting: {{title}}
**Date:** {{date}}
**Time:** {{time}}
**Attendees:** {{attendees|TBD}}
## Agenda
-
## Notes
## Action Items
- [ ]Example: Use the template
await mcp.callTool('create_from_template', {
templatePath: 'Templates/meeting.md',
targetPath: 'Meetings/2024-01-15-team-sync.md',
variables: {
attendees: 'Alice, Bob, Charlie'
},
frontmatter: {
project: 'Q1 Planning'
}
});Built-in Variables:
{{date}}- Current date (YYYY-MM-DD){{time}}- Current time (HH:mm){{datetime}}- Current datetime{{year}},{{month}},{{day}}- Date components{{weekday}}- Day of week (Monday, Tuesday, etc.){{week}}- Week number (01-53){{title}},{{filename}},{{folder}}- File context
Periodic Notes
Automatically create and organize daily, weekly, monthly, and yearly notes:
Example: Create today's daily note
await mcp.callTool('create_daily_note', {
vault: 'my-vault'
});
// Creates: Daily Notes/2024-01-15.mdExample: Create this week's note
await mcp.callTool('create_weekly_note', {
vault: 'my-vault',
variables: {
goals: 'Complete project proposal'
}
});
// Creates: Weekly Notes/2024-W03.mdExample: List all monthly notes
await mcp.callTool('list_periodic_notes', {
vault: 'my-vault',
type: 'monthly',
startDate: '2024-01-01',
endDate: '2024-12-31'
});Configuration: Periodic notes can be configured with custom folders, formats, and templates:
{
"periodicNotes": {
"daily": {
"folder": "Journal/Daily",
"format": "YYYY-MM-DD",
"template": "Templates/daily-note.md"
},
"weekly": {
"folder": "Journal/Weekly",
"format": "YYYY-[W]WW"
}
}
}Technical Highlights
Markdown Parsing
Full support for Obsidian-flavored markdown
Frontmatter extraction (YAML)
Internal link parsing (
[[link]],[[link|alias]])Embed detection (
![[embed]])Tag extraction (
#tag,#nested/tag)Inline field parsing (
key:: valuepattern)
Canvas Operations
Complete Canvas file format support (JSON-based)
All node types: file, text, link, group
Edge/connection management with customization
Color and styling support
Programmatic canvas generation
Dataview Integration
SQL-like query language for notes
Multiple filter operators (eq, neq, gt, gte, lt, lte, contains, startsWith, endsWith, exists)
Sorting and grouping capabilities
Field selection and projection
Support for frontmatter and inline fields
Nested field access with dot notation
Template System
Variable substitution with
{{variable}}syntaxBuilt-in date/time variables with formatting
Default values:
{{variable|default}}Date formatting:
{{date:YYYY-MM-DD}}Frontmatter merging and manipulation
Template discovery and listing
Periodic Notes
Automatic date-based note generation
Configurable folder structure and naming
Template integration for custom layouts
Date range calculations (daily, weekly, monthly, yearly)
ISO week number support
Flexible date format patterns
Link Resolution
Smart link resolution (title-based and path-based)
Automatic backlink generation
Bidirectional link tracking
Performance
Efficient caching strategies
File watching for instant updates
Lazy loading and pagination support
Security Considerations
Local vaults: Requires file system access to vault directory
Remote vaults: Use HTTPS and secure API keys
API keys: Never commit to version control
File watching: Only monitors
.mdfiles
Requirements
Node.js 18 or higher
TypeScript 5.x
Access to Obsidian vault(s)
License
MIT
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
Related Projects
Obsidian - The knowledge base application
Obsidian Local REST API - REST API plugin
Model Context Protocol - MCP specification
Support
For issues and questions:
GitHub Issues: Create an issue
Documentation: See this README
Built with ā¤ļø for the Obsidian and MCP communities
Available Tools
29 toolsadd_canvas_edgeC
Add an edge between nodes in canvas
| Name | Required | Description | Default |
|---|---|---|---|
| canvasPath | Yes | Path to canvas file | |
| color | No | Edge color (1-6) | |
| fromNode | Yes | Source node ID | |
| label | No | Edge label | |
| toNode | Yes | Target node ID | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this is a mutation (implied by 'Add'), what permissions are needed, if edges are reversible, or any side effectsācritical gaps for a tool that modifies data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasteāfront-loaded and perfectly sized for its purpose. Every word earns its place without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after adding an edge (e.g., success response, error cases), behavioral constraints, or how it fits with siblings like 'add_canvas_node', leaving significant gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond implying 'canvas' context, which is already clear from parameter names like 'canvasPath'. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and resource ('edge between nodes in canvas'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'add_canvas_node' beyond the resource type, missing explicit comparison that would warrant a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'add_canvas_node' or 'analyze_graph'. It lacks context about prerequisites (e.g., needing existing nodes or canvas) or exclusions, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_canvas_nodeC
Add a node to canvas (file, text, link, or group)
| Name | Required | Description | Default |
|---|---|---|---|
| canvasPath | Yes | Path to canvas file | |
| color | No | Node color (1-6) | |
| file | No | File path (for file nodes) | |
| height | Yes | Node height | |
| label | No | Label (for group nodes) | |
| nodeType | Yes | Type of node | |
| text | No | Text content (for text nodes) | |
| url | No | URL (for link nodes) | |
| vault | Yes | Vault name | |
| width | Yes | Node width | |
| x | Yes | X coordinate | |
| y | Yes | Y coordinate |
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 states the tool adds nodes but doesn't disclose behavioral traits: whether this is a write operation (implied but not confirmed), what happens on failure, if nodes can be overwritten, or any side effects. The description is minimal and lacks critical context 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?
Extremely concise and front-loaded: a single sentence that states the core purpose with no wasted words. Every part of the description earns its place by specifying the action, resource, and node types.
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 (12 parameters, mutation operation) and lack of annotations or output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral constraints. For a tool that modifies data with many parameters, more context is needed to guide effective 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 description coverage is 100%, so the schema already documents all 12 parameters with descriptions. The description adds minimal value by listing node types ('file, text, link, or group'), which partially explains the 'nodeType' enum, but doesn't provide additional semantics beyond what's in the schema. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and resource ('node to canvas') with specific node types enumerated. It distinguishes from siblings like 'add_canvas_edge' (edges vs nodes) and 'create_canvas' (creating canvas vs adding nodes), though not explicitly. Purpose is specific but sibling differentiation is implicit rather than explicit.
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 doesn't mention prerequisites (e.g., canvas must exist), when to choose different node types, or relationships with sibling tools like 'create_canvas' (for creating the canvas first) or 'get_canvas' (for checking existing nodes). Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_graphC
Analyze the knowledge graph structure
| Name | Required | Description | Default |
|---|---|---|---|
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Analyze' suggests a read-only operation, but the description doesn't specify if it's safe, what the output looks like (e.g., statistics, errors), or any side effects like performance impact. For a tool with no annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded and directly states the tool's function, making it highly concise and well-structured for quick understanding.
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 annotations and output schema, the description is incomplete. It doesn't explain what 'analyze' means in practice, what results to expect, or how it differs from similar tools. For a tool with no structured behavioral or output information, this leaves 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 input schema has 100% description coverage, with the single parameter 'vault' documented as 'Vault name'. The description doesn't add any meaning beyond this, such as explaining what a vault represents or how it affects the analysis. Given the high schema coverage, a baseline score 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 'Analyze the knowledge graph structure' states a general purpose but lacks specificity. It mentions the resource ('knowledge graph structure') and a verb ('analyze'), but doesn't clarify what analysis entails (e.g., metrics, visualization, validation) or how it differs from sibling tools like 'get_knowledge_graph' or 'get_vault_stats'. This makes the purpose somewhat vague.
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. With siblings like 'get_knowledge_graph' and 'get_vault_stats' that might overlap in functionality, there's no indication of context, prerequisites, or exclusions. This leaves the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_canvasC
Create a new canvas file
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path for new canvas | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Create a new canvas file,' implying a write operation, but lacks details on permissions, side effects (e.g., file overwriting), error handling, or response format. This is a significant gap for a mutation tool without annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Create a new canvas file') that is front-loaded and wastes no words. Every part of the sentence directly contributes to understanding the tool's purpose, making it appropriately concise.
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 as a mutation operation with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like what happens on success/failure, the format of the created file, or how it differs from other creation tools, leaving gaps for the agent to navigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('path' and 'vault') with their types and requirements. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('a new canvas file'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'get_canvas' or 'list_canvas_files' by specifying creation rather than retrieval. However, it doesn't explicitly differentiate from other creation tools like 'create_note' or 'create_from_template', which slightly limits its specificity.
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 doesn't mention prerequisites (e.g., needing a vault), exclusions, or comparisons to sibling tools such as 'create_note' or 'create_from_template', leaving the agent to infer usage based on context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_daily_noteC
Create a daily note for a specific date
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date (YYYY-MM-DD), defaults to today | |
| variables | No | Additional template variables | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action ('Create') without disclosing behavioral traits. It doesn't mention permissions needed, whether it overwrites existing notes, what happens on invalid dates, or what the output looks like. For a creation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded with the 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?
For a creation tool with 3 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what a 'daily note' entails, how it differs from regular notes, what template variables are used for, or what happens after creation. The context signals show complexity (nested objects, required parameters) that warrants more explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any parameter semantics beyond what's in the schema - it mentions 'specific date' which aligns with the 'date' parameter but provides no additional context about the 'variables' or 'vault' parameters. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('daily note') with a specific scope ('for a specific date'), which distinguishes it from generic note creation tools. However, it doesn't explicitly differentiate from sibling periodic note tools like create_monthly_note or create_weekly_note beyond the 'daily' qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like create_note, create_from_template, or other periodic note tools. It mentions 'for a specific date' but doesn't explain when daily notes are preferred over regular notes or templated notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_from_templateC
Create a new note from a template
| Name | Required | Description | Default |
|---|---|---|---|
| frontmatter | No | Additional frontmatter | |
| targetPath | Yes | Path for new note | |
| templatePath | Yes | Path to template file | |
| variables | No | Template variables | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Create' implies a write operation, but it doesn't disclose behavioral traits like whether this requires specific permissions, what happens if the template or target path doesn't exist, or if the operation is idempotent. The description lacks context on error handling 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 a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters including nested objects, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like error conditions, return values, or how it differs from other note-creation tools. For a mutation tool with rich parameters, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters with descriptions. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain how template variables interact with frontmatter or path conventions). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create') and resource ('new note from a template'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'create_note' or 'create_daily_note', which also create notes but with different approaches or constraints.
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. With sibling tools like 'create_note' (general note creation) and 'create_daily_note' (periodic note creation), there's no indication of when template-based creation is preferred or what prerequisites might be needed (e.g., existing templates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_monthly_noteC
Create a monthly note for a specific date
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in the month (YYYY-MM-DD), defaults to this month | |
| variables | No | Additional template variables | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as what happens if a note already exists for that month, whether it requires specific permissions, how template variables are used, or any side effects. This is inadequate for a creation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with zero wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (creation operation with 3 parameters including nested objects), lack of annotations, and no output schema, the description is insufficient. It doesn't explain the creation process, how variables interact with templates, what the output looks like, or error conditions, leaving significant gaps for an agent to 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?
Schema description coverage is 100%, so the schema fully documents all three parameters (date, variables, vault). The description adds no additional parameter semantics beyond what's in the schema, such as format details for date or examples for variables. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('create') and resource ('monthly note') with specific temporal scope ('for a specific date'). It distinguishes from siblings like create_daily_note and create_weekly_note by specifying monthly periodicity, though it doesn't explicitly contrast with create_note (generic) or create_from_template (template-based).
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 like create_daily_note, create_weekly_note, create_yearly_note, or create_note. The description implies usage for monthly notes but doesn't specify prerequisites, exclusions, or comparative contexts with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_noteC
Create a new note
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Note content | |
| frontmatter | No | Frontmatter metadata | |
| path | Yes | Path for the new note | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create a new note' implies a write operation, but it doesn't specify permissions needed, whether it overwrites existing notes, error conditions, or what happens on success. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words, with no wasted language. It's front-loaded with the core action, making it easy to parse quickly. Every word earns its place by conveying the essential 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?
Given the complexity of a note creation tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavior, error handling, or output format, which are crucial for an agent to use this tool effectively in a system with many sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond what's in the schema. With 100% schema description coverage, the baseline is 3, as the schema adequately documents the four parameters (content, frontmatter, path, vault) and their types. No additional meaning is provided in the 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?
The description 'Create a new note' clearly states the action (create) and resource (note), which is adequate. However, it doesn't differentiate this from sibling tools like create_daily_note, create_from_template, or create_monthly_note, leaving ambiguity about when to use this general note creation versus more specialized 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?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for creating notes (e.g., create_daily_note, create_from_template), the lack of context about prerequisites, typical use cases, or distinctions makes it difficult for an agent to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_weekly_noteC
Create a weekly note for a specific date
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in the week (YYYY-MM-DD), defaults to this week | |
| variables | No | Additional template variables | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'create' which implies a write/mutation operation, but doesn't disclose any behavioral traits: no information about permissions required, whether it overwrites existing notes, what happens on failure, rate limits, or what the created note contains (e.g., template-based structure). For a creation tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste: 'Create a weekly note for a specific date'. It's front-loaded with the core action and resource, and every word earns its place. No redundant or verbose phrasing.
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 (a creation tool with 3 parameters, no annotations, and no output schema), the description is incomplete. It doesn't explain what a 'weekly note' entails (e.g., based on templates, includes sections), behavioral aspects like idempotency or error handling, or how it differs from other note-creation tools. With no annotations to cover safety or mutability, and no output schema to describe results, the description should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (date, variables, vault) with their descriptions. The description adds no additional parameter semantics beyond what's in the schemaāit doesn't explain how 'date' relates to 'weekly' (e.g., picks the week containing that date), what 'variables' are used for, or why 'vault' is required. Baseline 3 is appropriate since the schema does the heavy lifting, but the description doesn't compensate with extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'create' and the resource 'weekly note', with the specific scope 'for a specific date'. It distinguishes from siblings like create_daily_note, create_monthly_note, and create_yearly_note by specifying the weekly period, but doesn't explicitly differentiate from create_note or create_from_template which might also create notes. The purpose is clear but could be more specific about what makes this tool unique among note-creation 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 provides no guidance on when to use this tool versus alternatives like create_daily_note, create_monthly_note, create_yearly_note, create_note, or create_from_template. It mentions 'for a specific date' but doesn't explain why you'd choose weekly over other periodic notes or general note creation. There's no mention of prerequisites, exclusions, or contextual triggers for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_yearly_noteC
Create a yearly note for a specific year
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in the year (YYYY-MM-DD), defaults to this year | |
| variables | No | Additional template variables | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states 'create' which implies a write operation, but doesn't disclose permissions needed, whether it overwrites existing notes, what happens on invalid inputs, or the format/location of created notes. The description adds no context about side effects, error handling, or system behavior beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple creation tool and front-loads the core action. Every word earns its place with zero 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 creation tool with 3 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what a 'yearly note' is, how it differs from regular notes, what template might be used, or what the tool returns. Given the sibling tools include multiple note-creation variants and template-related tools, more context is needed to guide proper 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 100%, so all parameters are documented in the schema. The description adds no additional parameter semantics beyond what's in the schemaāit doesn't explain how 'date' determines the year, what 'variables' are used for, or why 'vault' is required. With comprehensive schema coverage, the baseline 3 is appropriate as the description doesn't compensate but doesn't detract either.
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 'create' and resource 'yearly note' with the qualifier 'for a specific year', making the purpose unambiguous. It distinguishes from generic 'create_note' but doesn't explicitly differentiate from other periodic note siblings like create_daily_note, create_weekly_note, and create_monthly_note beyond the 'yearly' timeframe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like create_note, create_from_template, or other periodic note tools (daily, weekly, monthly). It doesn't mention prerequisites, typical use cases, or exclusions, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataview_queryC
Execute a Dataview-style query on notes
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Source filter (folder path or #tag) | |
| groupBy | No | Field to group by | |
| limit | No | Maximum results | |
| select | No | Fields to select | |
| sort | No | Sort order | |
| vault | Yes | Vault name | |
| where | No | Filter conditions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but only states the action without disclosing behavioral traits. It doesn't mention whether this is read-only, if it requires specific permissions, potential rate limits, or what the output looks like, which is insufficient for a query 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 a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to grasp quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 7 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavior, output format, and usage context, which are crucial for a query tool in a note-taking environment with many 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 description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no additional meaning beyond the schema, such as query syntax examples or Dataview-specific nuances, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Execute') and target ('Dataview-style query on notes'), making the purpose understandable. It doesn't distinguish from siblings like 'search_notes' or 'get_related_notes', which might have overlapping functionality, so it misses full differentiation.
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 like 'search_notes' or 'get_related_notes'. The description implies a query-based approach but doesn't specify contexts, prerequisites, or exclusions, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_noteC
Delete a note
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Delete' implies a destructive mutation, but it doesn't specify if the deletion is permanent, reversible, requires specific permissions, or has side effects (e.g., affecting related data). This is a significant gap for a tool that performs a critical 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 extremely concise with just three words, front-loading the core action. There is no wasted language or redundancy, making it efficient for quick understanding, though it may be overly terse for completeness.
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 destructive tool with no annotations and no output schema, the description is inadequate. It doesn't cover behavioral aspects like safety, permissions, or return values, and with 2 required parameters, more context is needed to ensure correct usage. The high schema coverage doesn't compensate for the lack of operational guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear definitions for 'path' and 'vault'. The description adds no additional meaning beyond the schema, such as explaining path formats or vault constraints. Given the high schema coverage, a baseline score of 3 is appropriate as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a note' clearly states the verb (delete) and resource (note), which is better than a tautology. However, it lacks specificity about what constitutes a 'note' in this context (e.g., a file in a vault) and doesn't differentiate it from sibling tools like 'update_note' or 'get_note', making it somewhat vague.
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. For example, it doesn't mention prerequisites (e.g., the note must exist), exclusions (e.g., cannot delete system notes), or related tools like 'update_note' for modifications instead of deletion. This leaves the agent without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_canvasC
Get canvas file contents
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to canvas file | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), implying it's likely non-destructive and read-only, but doesn't confirm this or add context such as authentication needs, rate limits, or what happens if the file doesn't exist. It lacks details on return format or error handling, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Get canvas file contents') that is front-loaded and wastes no words. However, it could be slightly more informative without losing conciseness, such as by hinting at the output type. It earns a high score for being direct and to the point.
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 no annotations, no output schema, and 2 required parameters, the description is incomplete. It doesn't explain what 'contents' includes (e.g., file data, structure), potential errors, or how it differs from similar tools like 'get_note'. For a read operation with no structured support, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with parameters 'path' and 'vault' clearly documented in the schema. The description adds no additional meaning beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get canvas file contents' clearly states the action (get) and resource (canvas file contents), but it's vague about what 'contents' entails (e.g., raw data, metadata, structure) and doesn't distinguish from siblings like 'get_note' or 'list_canvas_files'. It avoids tautology by not restating the name/title, but lacks specificity.
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. For example, it doesn't clarify if this is for retrieving raw canvas data versus using 'get_note' for notes or 'list_canvas_files' for listings, nor does it mention prerequisites like vault access. The description implies usage but offers no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_graphB
Get the complete knowledge graph for a vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Get the complete knowledge graph' but doesn't explain what 'complete' entails (e.g., size limits, format, or performance implications), leaving gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's front-loaded and appropriately sized for its simple function.
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 one parameter with full schema coverage and no output schema, the description is minimally adequate. However, it lacks details on what a 'knowledge graph' entails (e.g., structure, content) and behavioral traits, making it incomplete for full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'vault' parameter clearly documented. The description adds no additional meaning beyond the schema, such as clarifying 'vault' semantics or usage examples, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('complete knowledge graph for a vault'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'analyze_graph' or 'get_related_notes', which might have overlapping functionality, so it misses full distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'analyze_graph' or 'get_ote_metadata'. The description implies usage for retrieving knowledge graphs but offers no context on prerequisites, exclusions, or specific scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_noteC
Get a note by its path
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read operation ('Get') but doesn't disclose error handling (e.g., if note doesn't exist), authentication needs, rate limits, or return format. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action ('Get a note'), making it immediately clear. Every word earns its place, and there's no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool with 2 required parameters. It doesn't explain what 'Get' returns (e.g., note content, metadata, or both), error conditions, or how 'path' and 'vault' interact. For a read operation in a system with many sibling tools, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters ('path' and 'vault'). The description adds no additional meaning beyond implying 'path' is the primary identifier. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, though the description doesn't compensate or enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a note by its path' clearly states the verb ('Get') and resource ('note'), and specifies the primary lookup mechanism ('by its path'). It distinguishes from siblings like 'get_note_metadata' (metadata only) and 'search_notes' (multiple notes via search), though it doesn't explicitly name these alternatives. The purpose is specific but could be more differentiated.
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 doesn't mention when to choose 'get_note' over 'get_note_metadata' (for full content vs. metadata), 'search_notes' (for finding notes without knowing exact path), or 'get_related_notes' (for contextual notes). No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_note_metadataC
Get metadata for a specific note
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Note path | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it's a 'get' operation, implying read-only and non-destructive, but doesn't confirm safety aspects like permissions, rate limits, or error handling. For a tool with zero annotation coverage, this is a significant gapāit lacks details on what 'metadata' includes (e.g., creation date, tags, links) or how it behaves with invalid inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasteā'Get metadata for a specific note' is front-loaded and directly conveys the core purpose. It's appropriately sized for a simple tool, avoiding unnecessary elaboration. Every word earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 required parameters, no output schema, and no annotations), the description is incomplete. It doesn't explain what 'metadata' entails (e.g., fields returned), how errors are handled, or how it differs from similar tools. With no output schema to clarify returns, the description should provide more context to help the agent understand the tool's full behavior and use 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 description coverage is 100%, with both parameters ('path' and 'vault') well-documented in the schema as 'Note path' and 'Vault name'. The description adds no additional meaning beyond this, such as format examples or constraints. Since the schema does the heavy lifting, the baseline score of 3 is appropriateāthe description doesn't compensate but doesn't need to given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get metadata for a specific note' clearly states the action (get) and resource (note metadata), which is adequate. However, it doesn't differentiate from sibling tools like 'get_note' (which likely retrieves full content) or 'get_periodic_note_info' (which might provide structured metadata for periodic notes), leaving the scope vague. It's not tautological but lacks specificity about what 'metadata' entails compared to 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?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_note' (for full content), 'get_periodic_note_info' (for periodic note details), and 'get_related_notes' (for connections), there's no indication of context, prerequisites, or exclusions. It implies usage for metadata retrieval but offers no comparative advice, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_periodic_note_infoC
Get info about a periodic note
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date (YYYY-MM-DD), defaults to today | |
| type | Yes | Note type | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states a read operation ('Get info'), which implies it's non-destructive, but doesn't mention any behavioral traits like error handling, rate limits, authentication needs, or what 'info' specifically entails (e.g., metadata, content, or structure). This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Get info about a periodic note') that is front-loaded and wastes no words. It directly conveys the core purpose without unnecessary elaboration, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of retrieving note information with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'info' includes (e.g., file content, metadata, or links), potential errors, or how results are formatted, making it inadequate for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting all three parameters (date, type, vault) with details like defaults and enums. The description adds no parameter semantics beyond what's in the schema, so it meets the baseline score of 3 for high schema coverage without compensating value.
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 'Get info about a periodic note' clearly states the verb ('Get') and resource ('periodic note'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_note' or 'get_note_metadata' that might retrieve similar information, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'get_note' or 'list_periodic_notes'. It lacks context about prerequisites or exclusions, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unique_valuesC
Get all unique values for a metadata field
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Metadata field name | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states a read operation ('Get') but lacks details on permissions, rate limits, return format, or any behavioral traits like pagination or error handling. This is inadequate for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded and directly states the tool's function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It fails to explain what the return values look like (e.g., list of strings, JSON structure) or any operational context, which is crucial for a tool that retrieves data. This leaves significant gaps for an AI 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 100%, so the schema already documents both parameters ('field' and 'vault') adequately. The description adds no additional meaning beyond implying the tool operates on metadata fields, which aligns with the schema but doesn't provide extra context like examples 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 verb 'Get' and the resource 'unique values for a metadata field', making the purpose understandable. However, it does not differentiate from sibling tools like 'get_note_metadata' or 'list_tags', which might also retrieve metadata-related information, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_note_metadata' and 'list_tags' that might overlap in metadata retrieval, there is no explicit or implied context for selection, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vault_statsC
Get statistics about a vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get statistics') but doesn't clarify what types of statistics are returned, whether this is a read-only operation, if it requires specific permissions, or any rate limits. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is incomplete. It doesn't explain what statistics are returned (e.g., file counts, sizes, or metadata), leaving the agent uncertain about the output. Given the complexity of potentially varied statistics and the lack of structured data, more detail is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'vault' documented as 'Vault name'. The description adds no additional semantic context beyond this, such as examples or constraints on vault names. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema handles the parameter documentation 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 the verb ('Get') and resource ('statistics about a vault'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_note_metadata' or 'get_knowledge_graph' that also retrieve information, leaving room for ambiguity about when to use this specific 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 alternatives. With siblings like 'get_note_metadata' and 'get_knowledge_graph' that might overlap in retrieving vault-related data, the description lacks context about specific use cases or exclusions, leaving the agent to guess based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_canvas_filesC
List all canvas files in vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'List' implies a read-only operation, the description doesn't address important behavioral aspects like whether this returns all files at once or uses pagination, what format the results are in, whether there are rate limits, or what happens if the vault doesn't exist. For a tool with zero annotation coverage, this is insufficient 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 extremely concise at just 5 words, front-loading the essential information with zero wasted words. Every word earns its place: 'List' (action), 'all' (scope), 'canvas files' (resource), 'in vault' (context). There's no unnecessary elaboration or 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 that there's no output schema and no annotations, the description should provide more complete context for a listing operation. It doesn't indicate what information is returned about each canvas file, whether there are any filters or sorting options, or what happens with empty results. For a tool that presumably returns multiple items, the description is too minimal to be considered 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?
The input schema has 100% description coverage, with the single parameter 'vault' clearly documented as 'Vault name'. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
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 ('canvas files in vault'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_folders', 'list_templates', or 'list_tags', which all perform similar listing operations on different resources. The description is specific about what's being listed but lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'search_notes', 'dataview_query', and 'get_canvas' available, there's no indication of when listing all canvas files is preferable to searching or retrieving specific ones. The description simply states what the tool does without any contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_foldersC
List all folders in a vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'List all folders' implies a read-only operation, it doesn't specify whether this returns all folders recursively, pagination behavior, permission requirements, rate limits, or what format the output takes. The description lacks essential behavioral context for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple listing tool and front-loads the essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'all folders' means (recursive? flat?), what format the output takes, whether there are permission constraints, or how results are structured. Given the lack of structured metadata, the description should provide more contextual information.
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 100% description coverage, with the single 'vault' parameter clearly documented in the schema. The description doesn't add any additional semantic meaning beyond what the schema already provides about the vault parameter. With high schema coverage, the baseline score 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 action ('List all folders') and resource ('in a vault'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'list_canvas_files', 'list_periodic_notes', 'list_tags', or 'list_templates' that also list different types of resources in the same vault system.
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 doesn't mention when this tool is appropriate versus other listing tools (like list_canvas_files or list_templates) or search tools (like search_notes), nor does it specify any prerequisites or exclusions for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_periodic_notesC
List periodic notes of a specific type
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date (YYYY-MM-DD) | |
| startDate | No | Start date (YYYY-MM-DD) | |
| type | Yes | Note type | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It doesn't disclose if this is a read-only operation, how results are returned (e.g., pagination, format), or any constraints like rate limits. 'List' implies a safe read, but details are missing for effective agent use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for the tool's purpose, making it easy to parse without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain return values, behavioral traits, or usage context, leaving gaps for a tool with 4 parameters and siblings like 'search_notes'. More detail is needed for adequate agent guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters like 'startDate', 'endDate', 'type' with enum, and 'vault'. The description adds no extra meaning beyond implying filtering by 'type', aligning with the baseline score for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List periodic notes of a specific type' clearly states the verb ('list') and resource ('periodic notes'), but it's vague about scope and lacks differentiation from sibling tools like 'get_periodic_note_info' or 'search_notes'. It doesn't specify if this lists all notes or filters by date range, which the schema implies.
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 like 'search_notes' or 'get_periodic_note_info'. The description doesn't mention prerequisites, exclusions, or context for selecting this tool over siblings, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsC
List all tags in a vault
| Name | Required | Description | Default |
|---|---|---|---|
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't mention potential side effects, permissions required, rate limits, or what the output format looks like (e.g., list of strings, pagination). This is inadequate for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, clearly front-loading the core purpose. It efficiently communicates the essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'tags' are in this context (e.g., metadata labels), how results are returned, or any limitations, making it insufficient for an agent to fully understand the tool's behavior and 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?
The schema description coverage is 100%, so the input schema already fully documents the single parameter 'vault' as a required string. The description adds no additional meaning beyond implying the vault context, meeting the baseline for high schema coverage without extra value.
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 all tags') and resource ('in a vault'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'get_unique_values' or 'search_notes' which might also retrieve tag-related information, so it doesn't reach the highest score.
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. For example, it doesn't mention if this is the primary way to retrieve tags or if other tools like 'get_unique_values' might serve similar purposes, leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesC
List all available templates
| Name | Required | Description | Default |
|---|---|---|---|
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't cover aspects like pagination, rate limits, authentication needs, or what 'available' means (e.g., filtered by permissions). This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple list operation, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'templates' refers to in this context, what the output format might be, or any behavioral constraints. For a tool with one required parameter and multiple sibling tools, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'vault' parameter clearly documented. The description adds no additional meaning beyond the schema, such as explaining why a vault is required or how it affects the listing. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all available templates' clearly states the verb ('List') and resource ('templates'), but it's vague about scope and context. It doesn't specify what kind of templates (e.g., note templates, canvas templates) or differentiate from sibling tools like 'create_from_template' or 'render_template', leaving the purpose somewhat ambiguous.
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 doesn't mention prerequisites (e.g., needing a vault), exclusions, or how it relates to sibling tools such as 'create_from_template' or 'list_canvas_files', leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_templateC
Render a template with variables
| Name | Required | Description | Default |
|---|---|---|---|
| frontmatter | No | Additional frontmatter | |
| targetPath | No | Target note path (for context) | |
| templatePath | Yes | Path to template file | |
| variables | No | Template variables | |
| vault | Yes | Vault name |
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 rendering but doesn't disclose behavioral traits like whether this is a read-only operation, if it modifies files, what the output format is, or any permissions needed. This leaves significant gaps for a tool with 5 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, making it easy to understand at a glance without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what rendering entails (e.g., output format, file changes), behavioral context, or usage scenarios, leaving the agent with insufficient information for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters. The description adds no additional meaning beyond implying variables are used in rendering, which is already clear from the parameter names. Baseline 3 is appropriate as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Render a template with variables' clearly states the action (render) and resource (template), specifying the use of variables. It distinguishes from siblings like 'create_from_template' by focusing on rendering rather than creation, though it doesn't explicitly contrast with all template-related 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?
No guidance is provided on when to use this tool versus alternatives like 'create_from_template' or other template-related siblings. The description lacks context about prerequisites, such as needing an existing template file, or exclusions for 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.
search_notesC
Search for notes in a vault
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Filter by folder | |
| limit | No | Maximum number of results | |
| query | Yes | Search query | |
| tags | No | Filter by tags | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't cover aspects like pagination, rate limits, authentication needs, return format, or whether it's read-only (implied but not explicit).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain return values, error conditions, or behavioral nuances, leaving significant gaps for an agent to understand how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional meaning beyond the schema, such as explaining how 'query' interacts with 'tags' or 'folder'. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search for notes in a vault' clearly states the verb ('search') and resource ('notes'), but it's vague about scope and doesn't differentiate from siblings like 'dataview_query' or 'get_related_notes'. It lacks specificity about what 'search' entails (e.g., full-text, metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'dataview_query' or 'get_related_notes'. The description doesn't mention prerequisites, exclusions, or contextual cues for selection among the many note-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_linksC
Suggest related notes for linking
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum suggestions (default: 5) | |
| path | Yes | Path to the note | |
| vault | Yes | Vault name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'suggest' but doesn't clarify whether this is a read-only operation, what permissions are needed, how suggestions are generated, or what the output format might be. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loaded with the core purpose, though it lacks depth due to its brevity.
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 of suggesting related notes (which could involve algorithms or heuristics), no annotations, and no output schema, the description is incomplete. It doesn't explain how suggestions are generated, what the output looks like, or any behavioral nuances, making it inadequate for informed tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the three parameters (limit, path, vault). The description adds no additional meaning about parameters beyond what's in the schema, such as explaining how 'path' and 'vault' interact or what 'suggestions' entail. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Suggest related notes for linking' states the basic purpose (suggest notes for linking) but is vague about scope and mechanism. It doesn't specify whether suggestions are based on content similarity, graph connections, tags, or other criteria, nor does it distinguish this tool from sibling tools like 'get_related_notes' or 'search_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?
No guidance is provided on when to use this tool versus alternatives. With sibling tools like 'get_related_notes' and 'search_notes' available, the description offers no context on use cases, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_noteC
Update an existing note
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | New content | |
| frontmatter | No | Updated frontmatter | |
| path | Yes | Path to the note | |
| vault | Yes | Vault name |
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. 'Update' implies a mutation, but the description doesn't disclose behavioral traits such as permissions required, whether changes are reversible, error handling (e.g., if the note doesn't exist), or rate limits. It lacks context on what happens to existing content or frontmatter not mentioned in the 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 a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary 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 the complexity (a mutation tool with 4 parameters, nested objects, and no output schema), the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral aspects like idempotency. With no annotations and no output schema, more context is needed for effective 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 description coverage is 100%, so the schema already documents all parameters (content, frontmatter, path, vault) with descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining relationships between parameters or usage examples. Baseline is 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing note' clearly states the verb (update) and resource (note), but it's vague about what aspects are updated. It doesn't distinguish from sibling tools like 'create_note' or 'delete_note' beyond the basic verb difference, and doesn't specify if it updates content, metadata, or both.
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. It doesn't mention prerequisites (e.g., the note must exist), when not to use it (e.g., for creating new notes), or refer to sibling tools like 'create_note' or 'delete_note' for different operations.
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.
29 tool updates
v1.0.0- First observed
add_canvas_edge - First observed
add_canvas_node - First observed
analyze_graph - First observed
create_canvas - First observed
create_daily_note - First observed
create_from_template - First observed
create_monthly_note - First observed
create_note - First observed
create_weekly_note - First observed
create_yearly_note - First observed
dataview_query - First observed
delete_note - First observed
get_canvas - First observed
get_knowledge_graph - First observed
get_note - First observed
get_note_metadata - First observed
get_periodic_note_info - First observed
get_related_notes - First observed
get_unique_values - First observed
get_vault_stats - First observed
list_canvas_files - First observed
list_folders - First observed
list_periodic_notes - First observed
list_tags - First observed
list_templates - First observed
render_template - First observed
search_notes - First observed
suggest_links - First observed
update_note
TDQS
Scored across 29 tools
Most tools have distinct purposes, but there is some overlap between 'get_related_notes' and 'suggest_links' (both involve finding related notes), and 'analyze_graph' and 'get_knowledge_graph' both deal with graph analysis. Descriptions help clarify differences, but agents might occasionally confuse these pairs.
Tool names follow a consistent verb_noun pattern throughout, such as 'create_note', 'get_note', 'list_tags', and 'update_note'. There are no deviations in naming conventions, making the set predictable and readable.
With 29 tools, the count is borderline high for a note-taking and knowledge management server. While it covers many features, it feels heavy and could overwhelm agents, suggesting some tools might be redundant or overly specialized.
The tool set provides comprehensive coverage for Obsidian's domain, including CRUD operations for notes and canvases, periodic notes, templates, queries, graph analysis, and vault management. There are no obvious gaps, and agents can handle full workflows without dead ends.
Maintenance
Related MCP Connectors
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analyā¦
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables interaction with Obsidian vaults through MCP, supporting note creation from templates, link management, backlink analysis, tag operations, and automatic Map of Contents generation.116,222 npm1MIT
- AlicenseAqualityDmaintenanceEnables MCP clients to interact with Obsidian vaults via filesystem operations and optional REST API integration for advanced UI commands. It features multi-vault auto-discovery, concurrent-safe file handling, and comprehensive tools for searching, reading, and managing vault content.126,222 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to remotely access and interact with Obsidian vaults via MCP, supporting note operations, tag management, graph queries, and command execution.4GPL 3.0
- AlicenseNot gradedqualityFmaintenanceEnables MCP-based operations on an Obsidian vault, including reading, editing, and custom script tools.BSD Zero Clause