Skip to main content
Glama
bazylhorsey
by bazylhorsey

Obsidian MCP Server

Tests

A comprehensive Model Context Protocol (MCP) server for Obsidian that provides powerful vault access, knowledge graph analysis, and advanced integration features.

šŸ“š Documentation

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

  • 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 BaseConnector interface allows seamless switching between local and remote vaults

  • Service 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 build

Configuration

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 start

Or use the binary:

node dist/index.js

Available MCP Tools

The server exposes the following tools through the MCP protocol:

Note Operations

  • get_note - Retrieve a note by path

  • search_notes - Search notes with filters

  • create_note - Create a new note

  • update_note - Update existing note

  • delete_note - Delete a note

Vault Information

  • get_vault_stats - Get vault statistics

  • list_tags - List all tags

  • list_folders - List all folders

Knowledge Graph

  • get_knowledge_graph - Get complete graph structure

  • get_related_notes - Find related notes

  • analyze_graph - Analyze graph structure

  • suggest_links - Suggest potential links

Canvas Operations

  • get_canvas - Read a canvas file

  • create_canvas - Create a new empty canvas

  • list_canvas_files - List all canvas files in vault

  • add_canvas_node - Add a node (file, text, link, or group)

  • add_canvas_edge - Add an edge/connection between nodes

  • delete_canvas_node - Delete a node from canvas

  • delete_canvas_edge - Delete an edge from canvas

Dataview Queries

  • dataview_query - Execute Dataview-style queries on notes

  • get_note_metadata - Get metadata for a specific note

  • get_unique_values - Get all unique values for a field

Template System

  • list_templates - List all available templates

  • render_template - Render a template with variables

  • create_from_template - Create a new note from a template

Periodic Notes

  • create_daily_note - Create or get daily note

  • create_weekly_note - Create or get weekly note

  • create_monthly_note - Create or get monthly note

  • create_yearly_note - Create or get yearly note

  • get_periodic_note_info - Get info about a periodic note

  • list_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.ts

Build

npm run build

Watch Mode

npm run watch

Integration with Obsidian

For advanced features, install the Obsidian Local REST API plugin:

  1. Install the plugin from Obsidian Community Plugins

  2. Enable the plugin and note the API key

  3. Configure the obsidianApi section 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.md

Example: Create this week's note

await mcp.callTool('create_weekly_note', {
  vault: 'my-vault',
  variables: {
    goals: 'Complete project proposal'
  }
});
// Creates: Weekly Notes/2024-W03.md

Example: 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:: value pattern)

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}} syntax

  • Built-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

  • 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 .md files

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.

Support

For issues and questions:


Built with ā¤ļø for the Obsidian and MCP communities

Available Tools

29 tools
add_canvas_edgeC

Add an edge between nodes in canvas

ParametersJSON Schema
NameRequiredDescriptionDefault
canvasPathYesPath to canvas file
colorNoEdge color (1-6)
fromNodeYesSource node ID
labelNoEdge label
toNodeYesTarget node ID
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
canvasPathYesPath to canvas file
colorNoNode color (1-6)
fileNoFile path (for file nodes)
heightYesNode height
labelNoLabel (for group nodes)
nodeTypeYesType of node
textNoText content (for text nodes)
urlNoURL (for link nodes)
vaultYesVault name
widthYesNode width
xYesX coordinate
yYesY coordinate

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath for new canvas
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate (YYYY-MM-DD), defaults to today
variablesNoAdditional template variables
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
frontmatterNoAdditional frontmatter
targetPathYesPath for new note
templatePathYesPath to template file
variablesNoTemplate variables
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in the month (YYYY-MM-DD), defaults to this month
variablesNoAdditional template variables
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNote content
frontmatterNoFrontmatter metadata
pathYesPath for the new note
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in the week (YYYY-MM-DD), defaults to this week
variablesNoAdditional template variables
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in the year (YYYY-MM-DD), defaults to this year
variablesNoAdditional template variables
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoSource filter (folder path or #tag)
groupByNoField to group by
limitNoMaximum results
selectNoFields to select
sortNoSort order
vaultYesVault name
whereNoFilter conditions

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the note
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to canvas file
vaultYesVault name

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault name

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the note
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesNote path
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate (YYYY-MM-DD), defaults to today
typeYesNote type
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesMetadata field name
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date (YYYY-MM-DD)
startDateNoStart date (YYYY-MM-DD)
typeYesNote type
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
frontmatterNoAdditional frontmatter
targetPathNoTarget note path (for context)
templatePathYesPath to template file
variablesNoTemplate variables
vaultYesVault name

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoFilter by folder
limitNoMaximum number of results
queryYesSearch query
tagsNoFilter by tags
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

update_noteC

Update an existing note

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNew content
frontmatterNoUpdated frontmatter
pathYesPath to the note
vaultYesVault name

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

  1. 29 tool updatesv1.0.0
    • First observedadd_canvas_edge
    • First observedadd_canvas_node
    • First observedanalyze_graph
    • First observedcreate_canvas
    • First observedcreate_daily_note
    • First observedcreate_from_template
    • First observedcreate_monthly_note
    • First observedcreate_note
    • First observedcreate_weekly_note
    • First observedcreate_yearly_note
    • First observeddataview_query
    • First observeddelete_note
    • First observedget_canvas
    • First observedget_knowledge_graph
    • First observedget_note
    • First observedget_note_metadata
    • First observedget_periodic_note_info
    • First observedget_related_notes
    • First observedget_unique_values
    • First observedget_vault_stats
    • First observedlist_canvas_files
    • First observedlist_folders
    • First observedlist_periodic_notes
    • First observedlist_tags
    • First observedlist_templates
    • First observedrender_template
    • First observedsearch_notes
    • First observedsuggest_links
    • First observedupdate_note

TDQS

B3.2/5.0

Scored across 29 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    12
    6,222 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to remotely access and interact with Obsidian vaults via MCP, supporting note operations, tag management, graph queries, and command execution.
    4
    GPL 3.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables MCP-based operations on an Obsidian vault, including reading, editing, and custom script tools.
    BSD Zero Clause