Skip to main content
Glama

write_note_tool

Create or overwrite notes in an Obsidian vault, previewing changes with dry-run and unified diff before writing and preserving existing frontmatter.

Instructions

Write (create or overwrite) a note. Respects READ_ONLY and WRITE_PATHS. If content has no frontmatter of its own and a note already exists at path, its existing frontmatter is preserved rather than dropped — check the returned frontmatter_preserved flag. The result also carries a diff (unified diff against the current file). dry_run=True previews {preview, diff, frontmatter_preserved} without writing anything — check it, then call again with dry_run=False.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
vaultNo
contentYes
dry_runNo
create_onlyNo
expected_revisionNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.1.0

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly: it discloses that the tool writes (mutates), conditionally preserves frontmatter, returns a diff and frontmatter_preserved flag, and that dry_run previews without writing. This covers the essential behavioral traits an agent needs to know.

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?

Three compact sentences, each adding unique value: purpose, frontmatter behavior, and dry_run workflow. No redundancy, and the most important operational detail (dry_run preview) is saved for last as an actionable instruction.

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

Completeness3/5

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

Despite having an output schema, the description omits three parameters (vault, create_only, expected_revision) and doesn't address error conditions or concurrency. For a tool with 6 parameters and no schema descriptions, this is a meaningful gap that could lead to misuse.

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 coverage is 0%, so the description must compensate. It explains content (frontmatter preservation), path (target), and dry_run (preview). However, it leaves vault, create_only, and expected_revision unexplained — these are critical for correct invocation (selecting vault, enforcing create-only semantics, and optimistic concurrency).

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?

States a specific verb ('Write') and resource ('note'), and clarifies 'create or overwrite'. This clearly distinguishes it from partial-edit siblings like patch_note_tool and append_to_note_tool without needing explicit naming.

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?

Provides concrete usage context: mentions READ_ONLY/WRITE_PATHS constraints, explains dry_run preview flow ('previews... without writing anything — check it, then call again'), and advises checking the returned frontmatter_preserved flag. However, it doesn't explicitly state when to prefer this over patch/append tools, relying on implied full-content replacement.

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