Skip to main content
Glama
markdown-vault-mcp

markdown-vault-mcp

by pvliesdonk

Context Card

show_context
Read-onlyIdempotent

Displays an interactive card with a note's backlinks, outlinks, similar notes, tags, and frontmatter so you can quickly view its connections and metadata.

Instructions

Open an interactive card for the user showing a note's backlinks, outlinks, similar notes, tags and frontmatter.

It shows the note to the user and returns only counts; use get_context for the data.

Input Schema

NameRequiredDescriptionDefault
pathYesPath of the note, such as `"Journal/2024-01-15.md"`.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv6.1.0
    • changedInput schema / properties / path / description
      Previous value: -"Relative note path (e.g. ``\"Journal/2024-01-15.md\"``)."New value: +"Path of the note, such as `\"Journal/2024-01-15.md\"`."
  2. First observedv3.1.0

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds two non-obvious facts beyond that: the tool has a user-facing side effect (it renders a card and "shows the note to the user") and its response is deliberately impoverished ("returns only counts"), which prevents an agent from expecting payload data despite the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The capability statement comes first and the sibling routing plus return-shape caveat follow, so the reader gets action, scope, and destination in the first pass.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one path parameter, output schema present, annotations covering safety), and the description supplies exactly the missing pieces: that the output is a UI card rather than data, and where to go for the underlying data. Nothing needed to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one required parameter whose format and example are documented in the schema. The description says "a note's" and "shows the note," reinforcing that the argument identifies a single note, but it adds no syntax or edge-case meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ("open an interactive card... showing a note's backlinks, outlinks, similar notes, tags and frontmatter") and explicitly names the sibling it is not ("use get_context for the data"). An agent can distinguish it from get_backlinks, get_similar, and get_context without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative (get_context) and states the condition that selects it: this tool displays to the user and returns only counts, so fetch the data through get_context instead. It lacks an explicit when-not (for example, non-interactive or headless use where no human is watching), but the routing logic is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.