obsidian-pkm
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@obsidian-pkmsearch my vault for notes about distributed systems"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Vault PKM
Give Claude persistent, structured memory across conversations using your Obsidian vault. Read, write, search, and navigate your knowledge base — all from within Claude Code.
Under the hood, this Claude Code plugin provides 20 MCP (Model Context Protocol) tools for note creation, semantic search, graph traversal, metadata queries, and session memory — plus agents, hooks, and skills for seamless workflow integration. Published on npm as obsidian-pkm.
If you find this useful, please star the repo — it helps others discover the plugin.
Why
Claude Code has built-in memory, but it's flat text files scoped to individual projects — no structure, no search beyond exact matches, no connections between notes, and no way to query across projects. As knowledge grows, it doesn't scale. This server replaces that with a proper PKM layer: structured notes with enforced metadata, semantic search, a navigable knowledge graph, and cross-project access through a single Obsidian vault.
Structured session memory — Every tool call is logged with timestamps and session IDs, so Claude can recall exactly what was read, written, and searched in previous conversations — not just what was saved to a text file.
Structured knowledge creation — ADRs, research notes, devlogs, and tasks are created from enforced templates with validated frontmatter — not freeform text dumps. Your vault stays consistent and queryable.
Semantic discovery — "Find my notes about caching strategies" works even if you never used the word "caching." Conceptual search surfaces relevant knowledge that keyword search misses.
Graph-aware connections — Claude explores your knowledge graph by following wikilinks, discovering related notes by proximity rather than just content. Link suggestions help weave new notes into your existing web of knowledge.
Knowledge capture — Decisions, tasks, and research findings are captured by specialized agents in the background without interrupting your coding flow.
Without this, knowledge stays fragmented across per-project memory files and chat logs. With it, your AI assistant maintains a unified knowledge base that compounds over time.
How It Compares
Vault PKM | Claude built-in memory | ||
Knowledge base | Your Obsidian vault (markdown files you own) | Compressed conversation logs ( | CLAUDE.md + auto-memory files |
Scope | Cross-project (one vault for everything) | Per-project | Per-project (git-repo scoped) |
Semantic search | OpenAI embeddings | — | — |
Graph traversal | Wikilink BFS, link health audits | — | — |
Structured notes | 13 templates with validated frontmatter | Plain markdown | Plain markdown |
Metadata queries | Filter by type, status, tags, dates, custom fields | — | — |
Session memory | Activity log (every tool call with timestamps) | Tiered daily summaries (Haiku-compressed) | Manual (user writes CLAUDE.md) |
Setup effort | Medium (vault path + optional OpenAI key) | Low (auto hooks, no config) | None (built-in) |
MCP tools | 20 | 0 (hooks-based) | 0 |
Agents | 3 (explorer, capture, auditor) | 0 | 0 |
remember is great for lightweight session continuity with minimal setup. Vault PKM is for developers who want a structured, searchable, interconnected knowledge base that grows with every project.
Related MCP server: obsidian-ai-curator
Features
Knowledge Creation & Editing
Tool | Description |
| Create notes from templates with enforced frontmatter (ADRs, research, devlogs, tasks, etc.) |
| Add content to notes, with positional insert (after/before heading, end of section) |
| Surgical string replacement for precise edits |
| Atomic YAML frontmatter updates (set, create, remove fields; validates enums by note type) |
Discovery & Search
Tool | Description |
| Full-text keyword search across markdown files |
| Conceptual similarity search via OpenAI embeddings — finds related notes even with different wording |
| Query by YAML frontmatter (type, status, tags, dates, custom fields) with sorting |
| Discover all tags with per-note counts; folder scoping, glob filters, inline tag parsing |
| Suggest relevant notes to link based on content similarity |
Graph & Connections
Tool | Description |
| Wikilink analysis (incoming and outgoing links for a note) |
| Graph exploration via BFS wikilink traversal — discover related notes by proximity |
| Add annotated wikilinks to a note's section with deduplication |
| Audit link quality — find orphans, broken links, weak connections, ambiguous links |
Reading & Navigation
Tool | Description |
| Read note contents (pagination by heading, tail, chunk, line range; auto-redirects large files) |
| Inspect file metadata and structure without reading full content |
| List files and folders |
| Recently modified files |
Organization & Maintenance
Tool | Description |
| Move/rename files with automatic wikilink updating across the vault |
| Soft-delete to |
Session Memory
Tool | Description |
| Cross-conversation memory — logs every tool call with timestamps and session IDs |
Agents, Skills & Commands
Agents (3) run autonomously in foreground or background:
Agent | Purpose |
| Research existing knowledge before creating notes |
| Devlog entries + knowledge capture after commits and work blocks |
| Audit vault link health after bulk note changes |
Skills (6) are guided workflows triggered by slash commands:
Skill | Purpose |
| Duplicate checking, link discovery, and annotations when creating notes |
| Graph + semantic exploration to map existing knowledge on a topic |
| Session wrap-up: devlog, undocumented work capture, link health audit |
| Fast task capture from a title with duplicate detection, priority shorthands, and due date |
| Surface open tasks as a numbered list with git completion hints; batch-update via shorthand (e.g. |
| Work a task end-to-end: read, explore vault context, route to the right workflow tier, close when done |
Commands (2) for setup and configuration:
Command | Purpose |
| Configure vault path, API keys, and permissions |
| Connect a code repository to a vault project folder |
Prerequisites
Node.js >= 20 (Node 18 is EOL; uses native
fetchand ES modules)An MCP-compatible client such as Claude Code
Prebuilt native binaries are included for Node 20/22 on Linux x64, macOS (x64/arm64), and Windows x64. Most users need nothing else. If the prebuilt fails, you'll need C++ build tools — see Troubleshooting.
Quick Start
1. Install the Plugin
claude plugin marketplace add anthropics/claude-plugins-community
claude plugin install vault-pkm@claude-community2. Configure
Run the setup skill in Claude Code:
/vault-pkm:setupThe setup skill walks you through vault path, API keys, tool permissions, and verification. Hooks are registered automatically by the plugin system.
Important: Restart your Claude Code session after setup completes so the MCP server picks up the new configuration.
3. Scaffold Your Vault (optional)
If you need templates and the PARA folder structure, run the vault scaffolding wizard:
npx obsidian-pkm initThis is separate from the plugin install above — it only sets up your vault's directory structure (PARA folders, note templates). Nothing is written until you confirm each step.
Note: The first
npxrun downloads and compiles native dependencies, which may take 30-60 seconds. Subsequent runs are instant.
Step 1 — Vault path. Point to an existing Obsidian vault or create a new one. The wizard resolves ~, $HOME, and relative paths automatically. Safety checks prevent using system directories (/, /home, etc.) as a vault. For existing non-empty directories you can use it as-is, create a subfolder inside it, or wipe it (with triple confirmation). You'll be offered an optional backup before any changes.
Step 2 — Note templates. Copies template files into <vault>/05-Templates/. Three options:
Full set — all 13 templates (
adr,daily-note,devlog,fleeting-note,literature-note,meeting-notes,moc,note,permanent-note,project-index,research-note,task,troubleshooting-log)Minimal — just
note.md(a single generic template)Skip — for users with their own templates
Existing templates are never overwritten.
Step 3 — PARA folder structure. Creates 7 top-level folders with _index.md stubs:
Folder | Purpose |
| Quick captures and unsorted notes |
| Active project folders |
| Ongoing areas of responsibility |
| Reference material and reusable knowledge |
| Completed or inactive items |
| Note templates |
| System configuration and metadata |
Each _index.md has type: moc frontmatter. Existing folders and index files are skipped.
4. Verify It Works
Open Claude Code and try:
List the folders in my vault
Claude should call vault_list and show your vault's directory structure. If it works, the server is connected and ready.
5. Enable Semantic Search (optional)
Add your OpenAI API key to ~/.claude/settings.json under the env block:
{
"env": {
"VAULT_PATH": "/path/to/vault",
"VAULT_PKM_OPENAI_KEY": "sk-your-key-here"
}
}Use VAULT_PKM_OPENAI_KEY (preferred) to avoid conflicts with project-level OpenAI keys. OPENAI_API_KEY is also accepted as a fallback. The previously-documented OBSIDIAN_PKM_OPENAI_KEY still works as a deprecated fallback — plan to rename it in your config. Restart Claude Code after saving.
Optional: VAULT_PKM_VAULT_NAME — overrides the vault name used in obsidian:// links emitted in tool output. Defaults to basename(VAULT_PATH), which is correct for most setups. Set this only if your on-disk folder name differs from the vault name you registered in Obsidian (e.g. VAULT_PATH=/Users/me/Notes but Obsidian shows the vault as My PKM).
This enables vault_semantic_search and vault_suggest_links. Uses text-embedding-3-large with a SQLite + sqlite-vec index stored at .obsidian/semantic-index.db. The index rebuilds automatically — delete the DB file to force a full re-embed.
The server works with any Obsidian vault. The included templates assume this layout:
Vault/
├── 00-Inbox/
├── 01-Projects/
│ └── ProjectName/
│ ├── _index.md
│ ├── planning/
│ ├── research/
│ └── development/decisions/
├── 02-Areas/
├── 03-Resources/
├── 04-Archive/
├── 05-Templates/ # Note templates loaded by vault_write
└── 06-System/Templates
vault_write loads all .md files from 05-Templates/ at startup and enforces frontmatter on every note created. Run npx obsidian-pkm init to install them automatically, or copy the files from templates/ manually.
13 included templates: adr, daily-note, devlog, fleeting-note, literature-note, meeting-notes, moc, note, permanent-note, project-index, research-note, task, troubleshooting-log. Add your own templates to 05-Templates/ and they become available to vault_write automatically.
Task notes enforce status (pending, active, done, cancelled) and priority (low, normal, high, urgent) enums. All other note types accept any string values for these fields.
CLAUDE.md for Your Projects
sample-project/CLAUDE.md is a template you can drop into any code repository to wire up Claude Code with your vault. It defines context loading, documentation rules, and ADR/devlog conventions.
Module dependencies:
graph LR
CC[Claude Code] -->|MCP protocol| IDX[index.js]
IDX --> HND[handlers.js]
IDX --> E[embeddings.js]
IDX --> A[activity.js]
HND --> H[helpers.js]
HND --> G[graph.js]
HND --> U[utils.js]
HND -->|read/write| V[(Obsidian Vault)]
E -->|embeddings API| OAI[OpenAI]
E -->|vector store| DB[(SQLite + sqlite-vec)]
A -->|activity log| DB2[(SQLite)]File layout:
├── index.js # MCP server setup, tool registration, lifecycle
├── handlers.js # Tool handler implementations
├── helpers.js # Pure functions (path security, filtering, templates, frontmatter)
├── graph.js # Wikilink resolution and BFS graph traversal
├── embeddings.js # Semantic index (OpenAI embeddings, SQLite + sqlite-vec)
├── activity.js # Activity log (session tracking, SQLite)
├── utils.js # Shared utilities (frontmatter parsing, file listing)
├── cli.js # CLI entry point (routes `init` subcommand or starts server)
├── init.js # Vault scaffolding wizard (templates, PARA folders)
├── .claude-plugin/ # Plugin packaging
│ └── plugin.json # Plugin manifest (identity, components, permissions)
├── hooks/ # Claude Code hooks (context loading, project resolution, session start)
├── agents/ # Specialized agents (vault-explorer, pkm-capture, link-auditor)
├── skills/ # PKM workflow skills (pkm-write, pkm-explore, pkm-session-end, add-task, triage-tasks, tackle-task)
├── commands/ # Slash commands (setup, init-project)
├── templates/ # Obsidian note templates
├── tests/ # Test suite (Node.js built-in test runner)
├── sample-project/ # Sample CLAUDE.md for your repos
└── docs/ # Supplementary documentationindex.js initializes the semantic index and activity log, then injects them into createHandlers(). All paths passed to tools are relative to vault root. The server includes path security to prevent directory traversal.
How It Works
Knowledge creation is template-based. vault_write loads templates from 05-Templates/, substitutes Templater-compatible variables (<% tp.date.now("YYYY-MM-DD") %>, <% tp.file.title %>), and validates required frontmatter fields (type, created, tags). This ensures every note in your vault has consistent metadata — making it queryable, sortable, and discoverable from day one. Task notes enforce enum validation on status and priority; other types accept project, deciders, due, and source.
Knowledge discovery works at two levels. Keyword search (vault_search) finds exact terms. Semantic search embeds notes using OpenAI and finds conceptually related content — so "managing overwhelm" surfaces notes about "cognitive load" even if those exact words never appear together. The semantic index watches for file changes in real-time and syncs across machines via Obsidian Sync.
Knowledge connections are maintained through Obsidian's [[wikilink]] graph. vault_neighborhood traverses links via BFS to discover related notes by proximity, while vault_suggest_links recommends connections you haven't made yet. vault_move rewrites wikilinks across the vault when you reorganize, and vault_trash warns about links that would break.
Session memory records every tool call with timestamps and session IDs, so Claude can recall what was read, written, or searched in previous conversations. This turns ephemeral chat sessions into a continuous thread of work.
Knowledge capture uses the pkm-capture agent to update the project devlog and persist PKM-worthy content from a session (decisions, research findings, tasks, bug root causes) in one pass. It is triggered automatically after git commits via a PreToolUse hook, or can be dispatched manually after significant work blocks. Runs in the background without interrupting the coding flow.
Fuzzy path resolution lets read-only tools accept short names instead of full vault paths. vault_read({ path: "devlog" }) resolves to 01-Projects/MyApp/development/devlog.md automatically (.md extension optional). Folder-scoped tools like vault_list, vault_search, and vault_query accept partial folder names — folder: "MyApp" resolves to 01-Projects/MyApp. Ambiguous matches return an error listing candidates. Write/destructive tools always require exact paths.
Troubleshooting
better-sqlite3 build fails during install
You need C++ build tools. See Prerequisites for your platform. On Linux, sudo apt install build-essential python3 usually fixes it.
Server starts but all tool calls fail with ENOENT
Your VAULT_PATH is wrong or missing. The server validates this at startup and exits with a clear error. Run /vault-pkm:setup to reconfigure the vault path.
vault_write says "no templates available"
Run npx obsidian-pkm init to install templates, or copy the templates/ files from this repo into your vault's 05-Templates/ directory. The server loads templates from there at startup.
Semantic search not appearing in tool list
Set VAULT_PKM_OPENAI_KEY in ~/.claude/settings.json. See Enable Semantic Search. Without it, vault_semantic_search and vault_suggest_links are hidden entirely.
Server not showing up in Claude Code after install
Run claude mcp list to check. If vault-pkm is missing, reinstall the plugin: claude plugin install vault-pkm@claude-community. Then run /vault-pkm:setup to configure it.
Semantic index not updating after file changes
Check your Node version with node -v. The file watcher uses fs.watch({ recursive: true }) which requires Node.js >= 20.
Not sure if everything is set up correctly?
Run npx obsidian-pkm doctor for a diagnostic checklist that validates your Node version, vault path, templates, API keys, and native dependencies.
Contributing
Contributions are welcome! Please read CONTRIBUTING.md for development setup, code style guidelines, and the pull request process before submitting changes.
See CHANGELOG.md for release history, SECURITY.md to report vulnerabilities, and PRIVACY.md for how the plugin handles your data.
License
MIT
Available Tools
18 toolsvault_activityA
Query or clear the activity log. Shows tool calls made across sessions with timestamps and arguments. Use action 'query' to retrieve entries, 'clear' to delete entries.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Filter by file path substring in arguments | |
| tool | No | Filter by tool name (e.g., 'vault_read', 'vault_write') | |
| limit | No | Max entries to return (query only, default: 50) | |
| since | No | Filter entries on or after this ISO timestamp (e.g., '2026-02-08') | |
| action | No | Action to perform (default: query) | query |
| before | No | Filter entries before this ISO timestamp | |
| session | No | Filter by session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses that 'clear' deletes entries, which is a destructive action, and that it shows tool calls across sessions. However, it does not warn about the irreversibility of clear, whether filters apply to clear, or any authentication or rate-limit concerns. This leaves some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and contains no filler. Every word contributes to understanding the tool's function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a tool with 7 parameters and no output schema, but it leaves important ambiguities. It does not clarify whether 'clear' respects the filter parameters or affects all entries, nor does it describe the output format for 'query' beyond mentioning timestamps and arguments. These gaps mean the description is not fully complete for an agent to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description does not add meaningful semantics beyond the schema; it only restates the 'action' parameter ('query' and 'clear'). The schema already documents all parameters well, so no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries or clears the activity log, with a specific verb and resource. It distinguishes itself from sibling tools by explicitly focusing on activity logs, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to view or clean activity logs) and even explains the two actions ('query' and 'clear'). While it does not explicitly mention alternatives or when not to use it, the context is clear and no exclusions are needed given the unique purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_add_linksA
Add annotated wikilinks to a note's section (default: ## Related). Deduplicates by basename (skips links already present). Creates the section if missing. Requires exact path. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Exact path to the note (vault-relative, e.g., '01-Projects/MyApp/research/caching.md') | |
| links | Yes | Links to add | |
| section | No | Target section heading (default: '## Related') | |
| create_section | No | Create section if missing (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, yet the description discloses several key behaviors: deduplication by basename, automatic section creation, exact path requirement, and the special markdown link format for output. This transparency goes well beyond the bare schema and gives the agent essential operational knowledge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it front-loads the core action, then adds crucial behavioral details and path formatting instructions. Every sentence contributes unique information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters and no output schema, this description covers essential aspects: link addition, deduplication, section creation, and path handling. It slightly lacks explicit error behavior (e.g., nonexistent path), but this is not critical for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for all four parameters (100% coverage). The tool description adds extra meaning by explaining how the path parameter should be represented when relaying to other tools and clarifies dedupe behavior for links, elevating it slightly above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'add', the resource 'annotated wikilinks', and the target context 'a note's section'. This distinguishes it from sibling tools like vault_write or vault_append, which handle different content modifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by detailing behavior (dedupe, section creation, exact path requirement) and provides a specific note about how to pass paths to other vault tools. It does not explicitly name alternatives, but the scope is clear enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_appendA
Append content to an existing file, optionally under a specific heading. When 'position' is specified, heading is required and must exist in the file. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path relative to vault root | |
| content | Yes | Content to append | |
| heading | No | Optional: append under this heading (e.g., '## Notes') | |
| position | No | Where to insert relative to heading. after_heading: right after the heading line. before_heading: right before the heading line. end_of_section: at the end of the section (before the next same-or-higher-level heading, or EOF). Requires heading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses a non-obvious output format ('Paths in this tool's output are formatted as markdown links...') and a precondition ('heading is required and must exist in the file'). This adds significant context beyond a simple append operation. However, it omits error behavior (e.g., file not found) and permission details, though a 4 is justified given the specific behaviors shared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each with a distinct purpose: the first states the core action and its optional heading feature, the second explains the output path formatting, and the third gives a practical instruction for relaying paths. No filler or redundancy; the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, the description covers the core append action, the position/heading dependency, and a key output-format behavior that affects how results should be interpreted. It stops short of describing error handling or the exact return format, but these are not critical for selecting or invoking the tool. The description feels sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all 4 parameters (100% coverage), so the baseline is 3. The description adds meaningful semantic value by clarifying the relationship between heading and position ('When 'position' is specified, heading is required and must exist in the file') and by noting how paths should be handled ('pass only the bracket text... never the full markdown link'). This goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb+resource combination: 'Append content to an existing file', which clearly distinguishes it from sibling tools like vault_write (creation) and vault_edit (modification). It also adds a distinguishing feature: 'optionally under a specific heading', making the tool's unique purpose and scope immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for existing files ('Append content to an existing file') but does not explicitly state when to prefer this over alternatives. It does provide a clear constraint for position usage ('When 'position' is specified, heading is required and must exist in the file'), but this is a parameter rule, not tool-selection guidance. No explicit exclusions or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_editA
Edit a file by replacing an exact string match. The old_string must appear exactly once in the file for safety. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path relative to vault root | |
| new_string | Yes | Replacement string | |
| old_string | Yes | Exact string to find (must match exactly once) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It adds meaningful behavioral details beyond the schema: the 'must appear exactly once' safety check and the markdown-link output format for paths. This gives an agent useful knowledge about safety and how to handle output, though it does not disclose error behavior or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core action, then the safety constraint, and finally the output-format note. Every sentence provides necessary information with no redundancy or filler. It is an model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately simple, but the description omits the full return value or output structure (only path formatting is mentioned). With no output schema and many sibling tools, more detail about what to expect after editing would improve completeness. Still, the core behavior and key constraints are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds extra value by clarifying how the `path` parameter should be used (pass only bracket text) and reinforces the `old_string` uniqueness requirement. This is above the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Edit') and resource ('a file'), with a specific method ('replacing an exact string match'). This distinguishes it from sibling tools like vault_write, vault_append, and vault_update_frontmatter, which imply other edit mechanisms. The exact-once constraint further clarifies the tool's specific behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an exact string replacement is needed, and the uniqueness constraint gives a clear precondition. However, it does not explicitly compare with alternatives like vault_write or vault_append, nor does it state when *not* to use this tool. Usage guidance is left to inference rather than direct instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_link_healthA
Graph health report — finds orphan notes, broken wikilinks, weakly connected notes, and ambiguous links. Scans all markdown files (or a specific folder). Use to audit link quality and find notes that need better connections. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results per category (default: 20) | |
| checks | No | Which checks to run (default: all four). orphans = no links in/out, broken = links to missing files, weak = only 1 total link, ambiguous = basename resolves to multiple files | |
| folder | No | Optional: scope to this folder (supports fuzzy folder resolution, e.g., 'MyApp') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool scans all markdown files or a specific folder and formats paths as markdown links, which is useful behavioral context. However, it doesn't explicitly state that the operation is read-only or that it makes no modifications, though 'finds' and 'audit' imply this. The description could be more explicit about potential performance implications or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: purpose, usage, and a crucial output-handling note. It is front-loaded with the core function, then gives practical guidance, and ends with an important formatting caveat. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description explains the output format (markdown links) and how to relay paths to other tools, which is critical for usability. It covers the scoping (all files or a folder) and the checks. It could be slightly more complete by explicitly stating the tool is read-only, but overall it provides sufficient context for an agent to select and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents the limit, checks, and folder parameters. The description adds a brief example of fuzzy folder resolution ('e.g., 'MyApp'') but doesn't significantly extend parameter semantics beyond the schema. It mentions the default of all four checks but the schema already states that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Graph health report' and explicitly lists the four detection categories (orphan notes, broken wikilinks, weakly connected notes, ambiguous links), providing a specific verb+resource+scope. It distinguishes from siblings like vault_links by focusing on link quality auditing rather than just listing links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'Use to audit link quality and find notes that need better connections,' giving clear context for when to use it. It also adds practical guidance about how to handle the output (preserving markdown links and passing only the bracket text to other vault tools), which further clarifies usage. However, it doesn't explicitly mention when not to use it or directly contrast with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_linksA
Get incoming and outgoing links for a note. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the note (supports short names, e.g. 'devlog') | |
| direction | No | both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a non-obvious behavior: output paths are formatted as markdown links with obsidian:// protocol, and it warns against passing full markdown links to other tools. This adds significant context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the core purpose and followed by a critical output-formatting instruction. Every sentence adds necessary value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description adequately covers purpose, output format, and a usage caveat. It is sufficiently complete for a simple retrieval tool, though it could explicitly mention the response structure (e.g., grouping by direction) for fuller transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; only the path parameter has a description, and direction has none. The description clarifies that path arguments for other vault tools expect plain vault-relative paths, adding some meaning, but it does not explicitly explain the direction parameter or further refine path syntax, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence 'Get incoming and outgoing links for a note' clearly states the tool's purpose with a specific verb and resource. It distinguishes from sibling tools like vault_add_links (which adds links) and vault_link_health (which checks link health) by focusing on retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving links but provides no explicit when-to-use or alternatives among sibling tools. The path-handling instruction about preserving link form and passing bracket text is useful but addresses output handling, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_listA
List files and folders in the vault. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path relative to vault root (supports partial names, e.g. 'MyApp'; default: root) | |
| pattern | No | Glob pattern to filter (e.g., '*.md') | |
| recursive | No | List recursively |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavior burden. It discloses the markdown-link output format and instructs how to extract plain paths for other tools, which is key behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three purposeful sentences, each earning its place: purpose stated first, then output format, then a crucial usage instruction. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's output format and path-handling behavior, which are the main non-obvious aspects. Schema covers parameters. It could mention sorting or hidden files, but these are minor for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents parameters. The description adds only a minor example of a path value, not substantial semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List files and folders in the vault' with a specific verb and resource, distinguishing it from sibling tools like vault_read or vault_write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied as a listing tool, but the description offers no explicit guidance on when to prefer it over alternatives like vault_search or vault_recent, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_moveA
Move or rename a markdown file within the vault. Automatically updates wikilinks in all files that reference the moved file. Both paths must be exact. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| new_path | Yes | Destination path (exact, must not already exist) | |
| old_path | Yes | Current file path (exact path required) | |
| update_links | No | Update wikilinks in other files pointing to this note (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states the automatic wikilink update side effect, the exact-path requirement, and the markdown link output format. It does not detail error conditions or reversibility, but covers the most impactful behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly written, with each sentence serving a distinct purpose: the action, the side effect, the path constraint, and the output format usage. It wastes no words and front-loads the primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description effectively explains the output shape (markdown links) and the side effect of link updating. It does not cover error scenarios (e.g., missing old_path) or the return value for a successful move, but overall it provides sufficient context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters (100% coverage), so the baseline is 3. The description adds value by reinforcing the exactness of both paths and providing crucial guidance on how to interpret and pass path values (using only the bracket text, not the full markdown link) to other tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Move or rename a markdown file within the vault.' It also specifies the key side effect of automatically updating wikilinks, which distinguishes it from sibling tools like vault_write or vault_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operational context: paths must be exact, and it explains how to handle the output path format when passing paths to other vault tools. However, it does not explicitly mention when to use this tool instead of alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_neighborhoodA
Explore the graph neighborhood around a note by traversing wikilinks. Returns notes grouped by hop distance from the starting note, with frontmatter metadata for each node. Useful for understanding clusters, finding related context, and discovering connections. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the starting note (supports short names, e.g. 'devlog') | |
| depth | No | Traversal depth — how many hops to follow (default: 2, max: 5) | |
| direction | No | Link direction to follow (default: both) | both |
| semantic_limit | No | Max semantic results to include (default: 5) | |
| include_semantic | No | Append semantically related but unlinked notes (requires VAULT_PKM_OPENAI_KEY, default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states the output structure (grouped by hop distance, frontmatter metadata) and a significant output formatting quirk (paths as markdown links with obsidian:// URLs). This adds substantial behavioral context beyond the schema, though it doesn't cover failure modes or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-organized paragraph of three sentences, each serving a distinct purpose: stating what the tool does, articulating its value, and providing essential formatting usage. No filler, and the critical markdown-link caveat earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains the return format (grouped by hop distance, with frontmatter metadata) and the special link formatting. It also includes use-case context and integration guidance for other vault tools. Minor gaps include not specifying what happens for missing paths or very large result sets, but that's beyond the essential context for a read-only exploration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already well-documented in the input schema. The description adds no further parameter-specific detail; the only related note (passing bracket text to other tools) concerns output handling rather than input semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Explore the graph neighborhood around a note by traversing wikilinks.' It further differentiates the tool by stating output is 'grouped by hop distance from the starting note' with frontmatter metadata, which distinguishes it from sibling tools like vault_links or vault_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use-case guidance: 'Useful for understanding clusters, finding related context, and discovering connections.' It also includes a critical practical instruction about preserving markdown link formatting when relaying paths to users and passing only bracket text to other tools. However, it doesn't explicitly name when not to use this tool or compare directly with sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_peekA
Inspect a file's metadata and structure without reading full content. Returns file size, frontmatter, heading outline with approximate section sizes, and a brief preview. Use this to plan which sections to read from large files. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path relative to vault root (supports fuzzy resolution: 'devlog' resolves to full path) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and discloses return values (size, frontmatter, headings, preview), the non-reading behavior, and the markdown link format for paths. It omits edge-case behaviors but provides solid transparency for a read-only inspection tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core purpose in the first sentence. It efficiently combines return value details, usage guidance, and path formatting instructions with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema, no annotations, and no output schema, the description fully covers what the tool does, what it returns, when to use it, and how to handle its output paths. This is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the path parameter with fuzzy resolution (100% coverage), so the description adds no direct parameter details. The path formatting instruction is about output handling rather than the input parameter, keeping this at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool inspects a file's metadata and structure without reading full content, and enumerates specific outputs (file size, frontmatter, heading outline, preview). This distinguishes it from vault_read, which reads full content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use this tool to plan which sections to read from large files, and the phrase 'without reading full content' implies an alternative to vault_read. However, it does not explicitly name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_queryA
Query notes by YAML frontmatter metadata (type, status, tags, dates, custom fields, sorting). Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ALL tags must be present (case-insensitive) | |
| type | No | Filter by note type (exact match) | |
| limit | No | Max results to return | |
| folder | No | Limit search to this folder (supports partial names, e.g. 'MyApp') | |
| status | No | Filter by status (exact match) | |
| sort_by | No | Sort results by this frontmatter field. Smart ordering: priority uses rank (urgent>high>normal>low), dates sort chronologically, others alphabetically. Nulls sort last. | |
| tags_any | No | ANY tag must be present (case-insensitive) | |
| sort_order | No | Sort direction (default: asc) | asc |
| created_after | No | Notes created on or after this date (YYYY-MM-DD) | |
| custom_fields | No | Filter by arbitrary frontmatter fields (exact match). Use null to match missing fields. | |
| created_before | No | Notes created on or before this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses a key behavioral trait: output paths are markdown links with instructions on how to handle them. This goes beyond the schema, though it does not explicitly state read-only behavior (implied by 'Query').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: the first states the purpose, the second and third explain a unique output format and usage rule. No wasted words, information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially explains return values by revealing the link format and how to use paths. It lacks an explicit statement of full return structure, but for a query tool, this is sufficient given the detailed input schema and the tool's simple output concept.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add parameter-specific meaning beyond listing categories already in the schema. The link-handling note is about output, not parameters, so no extra semantic value for params is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action and resource: 'Query notes by YAML frontmatter metadata', listing key filter fields. This differentiates it from siblings like vault_search (full-text) by emphasizing metadata-based querying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for metadata-based queries, which provides clear context. It also gives specific handling instructions for output paths (preserve link form, pass bracket text to other tools), but does not explicitly exclude alternatives or mention when to use a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_readA
Read the contents of a markdown file from the vault. Supports pagination: read a single section by heading, last N lines, last N heading-level sections, chunk number, or line range. Files exceeding ~80k characters auto-redirect to peek data (file structure/outline) unless a pagination param or force=true is specified. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path relative to vault root (supports short names, e.g. 'devlog') | |
| tail | No | Return the last N lines of the file. Frontmatter is always prepended. | |
| chunk | No | Read a specific chunk of the file (1-indexed). Each chunk is ~80k characters. Use vault_peek to see total chunks. | |
| force | No | Bypass auto-redirect for large files. WARNING: only use when full content is essential, as large files degrade model performance. Hard-capped at ~400k chars (~100k tokens). | |
| lines | No | Read a range of lines from the file (1-indexed, inclusive). | |
| heading | No | Read only the section under this heading (exact match, case-sensitive). Returns heading line + content until next same-or-higher-level heading. | |
| section_level | No | Heading level for tail_sections (1=`#`, 2=`##`, etc). Default: 2. | |
| tail_sections | No | Return the last N sections at the specified heading level. Frontmatter is always prepended. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and delivers. It discloses auto-redirect behavior for large files, a hard cap of ~400k chars, performance degradation warnings for force, and the markdown-link output format. It also instructs the agent on how to transform paths before passing to other tools, adding operational nuance beyond a simple read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact, front-loaded block of four sentences. Each sentence earns its place: purpose, pagination capabilities, auto-redirect behavior, and path-link handling. No filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains what data is returned (file contents or peek structure on redirect), how paths are formatted, and the performance envelope. The auto-redirect resolution and force cap address edge cases, making the description complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds semantic grouping by summarizing the pagination modes (heading, tail, sections, chunks, line range) and links them to the auto-redirect threshold. The force parameter's warning and the chunk param's reference to vault_peek go beyond the raw schema, enriching parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read the contents of a markdown file from the vault', a specific verb+resource pairing that clearly distinguishes the tool from siblings like vault_peek, vault_search, or vault_write. It further elaborates on pagination modes, reinforcing what the tool does and its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Guidance is explicit: large files auto-redirect to peek data unless a pagination param or force=true, and force is discouraged unless essential. It names vault_peek as an alternative for browsing chunks and outlines when to use pagination params, giving clear when-to-use vs when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_recentA
Get recently modified files. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of files to return | |
| folder | No | Optional: limit to this folder (supports partial names, e.g. 'MyApp') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavior disclosure. It usefully reveals that output paths are markdown links with obsidian:// URIs and instructs how to handle them. However, it does not clarify what 'recent' means or mention ordering, but the disclosed link behavior is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: the first states the purpose, and the next two provide critical output-handling instructions. Every sentence contributes value, though the guidance about markdown links could be more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain return values. It explains the path format but omits what other fields are returned, how files are ordered, or how 'recent' is defined. This is a notable gap for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'limit' and 'folder' clearly. The description adds no extra meaning about these parameters, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Get recently modified files', which clearly states the verb and resource. The 'recently modified' qualifier distinguishes it from sibling tools like vault_list or vault_search, even though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool is for retrieving recently modified files, but it does not explicitly state when to use it over alternatives like vault_activity or vault_list. There are no exclusions or alternate tool references, so usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_searchA
Search for text across all markdown files in the vault. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return | |
| query | Yes | Search query (case-insensitive) | |
| folder | No | Optional: limit search to this folder (supports partial names, e.g. 'MyApp') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the output format (markdown links with obsidian://) and instructs on converting links to vault-relative paths. This is valuable behavioral context beyond the schema, though it doesn't mention read-only nature explicitly (implicit in 'search').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both essential. The first states the core function; the second gives critical usage guidance. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description explains the output format and gives actionable integration guidance. Combined with complete schema coverage, this is fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are already described in the schema (100% coverage). The description adds no new information about query semantics (case-insensitive, folder filtering) beyond what the schema provides, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('markdown files in the vault'). Clearly distinguishes from sibling tools like vault_read (read a single file) and vault_tags (search tags).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on how to use the output (pass bracket text only to other tools) but does not explicitly mention when to prefer this tool over alternatives like vault_query. Still, the use case is obvious and well-scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_tagsA
Discover all tags used across the vault with per-note occurrence counts. Useful for exploring tag conventions, finding hierarchical tag trees, and understanding vault organization.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Optional: limit to this folder (supports partial names, e.g. 'MyApp') | |
| pattern | No | Glob-like filter: 'pkm/*' (hierarchical), '*research*' (substring), 'dev*' (prefix) | |
| include_inline | No | Also parse inline #tags from note bodies (default: false, frontmatter only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It only states 'Discover' which implies a read operation, but it doesn't explicitly confirm the tool is non-mutating, nor does it describe the return format or potential performance implications, leaving gaps for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two-sentence description is compact and front-loaded with the main purpose, followed by usage context. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with all-optional parameters and no output schema, the description gives the core function and use cases. However, without annotations or output schema, it leaves out specifics about the returned structure and safety profile, making it adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with detailed descriptions for all three parameters (folder, pattern, include_inline), so the baseline is 3. The tool description itself adds no extra parameter semantics, staying at that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool discovers all tags used across the vault with per-note occurrence counts, using a specific verb and resource. This distinguishes it from sibling tools like vault_search or vault_list, which address other facets of vault access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'Useful for exploring tag conventions, finding hierarchical tag trees, and understanding vault organization,' which gives clear context for when to use it. However, it does not mention any alternatives or exclusions for when this tool should not be used, so it is slightly below the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_trashA
Soft-delete a file by moving it to .trash/ (Obsidian convention). Reports files with broken incoming links as warnings. Use vault_move to relocate files instead. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file to trash (exact path required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It discloses the key behavior (soft-delete via moving to .trash/), the side effect of reporting broken incoming links as warnings, and the output format (markdown links with obsidian://). It also provides crucial handling instructions for output paths, which goes beyond basic expectation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: what it does, the alternative, and output formatting instructions. It is front-loaded with the main action and contains no fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is quite complete for a simple one-parameter tool with no output schema. It covers the operation, the alternative, the output format, and path handling. A minor gap is the lack of explicit return value details (e.g., success message or structure of warnings), but the 'Reports files with broken incoming links as warnings' partially addresses output. Overall, it provides sufficient context for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the path parameter with a description, so the baseline is 3. The description adds meaningful value by clarifying that paths in output are formatted as markdown links, and instructs to pass only the bracket text (e.g., '01-Projects/Foo/note.md') to other tools' path arguments. This is essential for correct cross-tool usage and thus elevates the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Soft-delete a file by moving it to .trash/ (Obsidian convention).' It uses a specific verb and resource, and also distinguishes itself from the sibling tool vault_move by explicitly recommending it for relocation. The mention of broken incoming link warnings adds further specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use an alternative: 'Use vault_move to relocate files instead.' It also clarifies the output format and how to handle paths when interacting with other tools, providing context for when to use this tool for soft-deletion and how to avoid misusing the returned path format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_update_frontmatterA
Update YAML frontmatter fields in an existing note. Parses existing frontmatter, updates specified fields, preserves everything else. Set a field to null to remove it. Protected fields (type, created, tags) cannot be removed. Field values are validated against the note's type (e.g. task status must be: pending, active, done, cancelled; task priority must be: low, normal, high, urgent). Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path relative to vault root (exact path required) | |
| fields | Yes | Fields to update. Set value to null to remove a field. Arrays (like tags) are replaced wholesale. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It explains null-removal semantics, protected fields, validation rules (with concrete examples), and the markdown link output format, giving the agent comprehensive insight into expected behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place, covering purpose, edge cases, validation, and output formatting. It is well-structured and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema, the description is remarkably complete. It addresses behavioral edge cases, parameter constraints, and cross-tool usage, leaving little ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage for both parameters. The description adds meaningful context for the 'fields' parameter by specifying protected fields and validation against note type, going beyond the schema's basic null-removal and array-replacement notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Update YAML frontmatter fields in an existing note' with a specific verb and resource. It clearly distinguishes from sibling tools like vault_edit or vault_write by focusing solely on frontmatter and detailing its behavior (parses, updates specified fields, preserves everything else).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool's specific use case for updating frontmatter, but it does not explicitly state when to use it over alternatives or provide exclusions. It does include cross-tool guidance on how to pass paths to other vault tools, which offers contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_writeA
Create a new note from a template. Notes must be created from templates to ensure proper frontmatter.
Available templates: (No templates found - add .md files to 05-Templates/)
Built-in variables (auto-substituted):
<% tp.date.now("YYYY-MM-DD") %> - Current date
<% tp.file.title %> - Derived from output path filename
Required: frontmatter.tags - provide at least one tag for the note.
Optional: frontmatter.status, frontmatter.priority, frontmatter.project, frontmatter.deciders, frontmatter.due, frontmatter.source (depending on template type).
Pass custom <%...%> variables via the 'variables' parameter. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Output path relative to vault root | |
| template | Yes | Template name (filename without .md from 05-Templates/) | |
| variables | No | Custom variables for <%...%> patterns in body (key-value string pairs) | |
| createDirs | No | Create parent directories if they don't exist | |
| frontmatter | No | Frontmatter fields to set (e.g., {tags: ['tag1', 'tag2'], status: 'active'}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds useful behavioral context: template requirement, built-in variables, required frontmatter, and the markdown-link path format for output. However, it omits key behavioral traits such as whether it overwrites existing files, error handling, or the exact return value, which are important for a create/mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose and then organized into clear sections (templates, variables, requirements, path formatting). It is relatively long but each section earns its place by conveying necessary usage details. The 'No templates found' note is somewhat environment-specific but does not detract much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description needs to explain what the tool returns and its failure modes. It partially does this by describing the output path format, but it does not mention overwrite behavior, success/failure indicators, or how to interpret the response. This leaves important gaps for a tool with 5 parameters and nested objects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. The description adds some extra meaning by explaining built-in variable substitution and reiterating that frontmatter.tags is required, but it does not significantly expand on the schema's parameter descriptions. The 'variables' parameter description in the schema is already adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a new note from a template.' This clearly distinguishes it from sibling tools like vault_edit and vault_append, which modify or extend existing notes. The template requirement is explicit and ties directly to the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to create new notes and to ensure proper frontmatter via templates. It also explains required tags and variable handling. However, it does not explicitly name alternatives or state when not to use this tool (e.g., for editing existing notes, use vault_edit).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
18 tool updates
v3.10.1- First observed
vault_activity - First observed
vault_add_links - First observed
vault_append - First observed
vault_edit - First observed
vault_link_health - First observed
vault_links - First observed
vault_list - First observed
vault_move - First observed
vault_neighborhood - First observed
vault_peek - First observed
vault_query - First observed
vault_read - First observed
vault_recent - First observed
vault_search - First observed
vault_tags - First observed
vault_trash - First observed
vault_update_frontmatter - First observed
vault_write
TDQS
Each tool has a clearly distinct purpose: read vs. peek vs. search vs. list; write vs. append vs. edit vs. update_frontmatter; links vs. neighborhood vs. link_health. There is no overlapping or confusing tool.
All tools use the 'vault_' prefix with snake_case names. Some are verb-noun (vault_read, vault_write) while others are noun-like (vault_tags, vault_neighborhood), but the pattern is predictable and consistent in style.
18 tools is slightly heavy but reasonable for a PKM server covering reading, writing, editing, linking, searching, querying, and vault maintenance. Each tool earns its place, but the count is at the upper edge of the ideal range.
The tool surface provides complete coverage of note lifecycle (create, read, update, delete), link management, metadata querying, and vault inspection. No obvious dead ends or missing critical operations for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceBuilt on Obsidian Vault, this MCP server integrates with Claude Code to provide personal knowledge management including note saving, full-text search, code graph extraction, and context resumption.1-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives Claude AI direct access to your Obsidian vault, enabling natural language search, note creation, file management, and automated workflows.5,7849MIT
- FlicenseNot gradedqualityBmaintenanceA Python MCP server that gives Claude long-term memory and full context of everything by connecting to an Obsidian vault, enabling context retrieval, note management, and automatic graph linking.-
- FlicenseNot gradedqualityCmaintenanceAn MCP server that provides full read/write access to an Obsidian vault, enabling searching, task management, wiki-link graph analysis, and attachment organization from an MCP client like Claude Code.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AdrianV101/obsidian-pkm-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server