Skip to main content
Glama

Replace a note

update_note
DestructiveIdempotent

Replace a Note's whole content, only when you were asked to change that Note. First get_note; edit its document, keeping every other block exactly as it was; send it as {"document": …} with its content_revision and context_receipt. Edits others made meanwhile to other parts are kept. stale_block: someone changed the same part — get_note again and reapply. reread_required: your read is out of date — read again. lossy_markdown: Markdown or text would lose the Note's formatting — send the document. Never retry with a guessed revision. evidence: other Notes you relied on, with the content_revision you read; one changed since answers reread_required. To add progress, create a new Note instead.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "operation_id": "<operation_id>",
      "note_id": "<note_id>",
      "expected_revision": "<expected_revision>",
      "context_receipt": "<context_receipt>",
      "content": "<content>"
    },
    "name": "update_note"
  }
}

Input Schema

NameRequiredDescriptionDefault
contentYesThe whole new content, normally {"document": …}: the document get_note returned with only the requested change, every other block (images, files, references, tables, styles, tags) kept exactly. A Markdown string or {"text": …} replaces everything; when the Note holds formatting that form cannot (details.formatting names it), update_note answers lossy_markdown and changes nothing: send {"document": …}. Every element: get_guide with topic "formatting".
note_idYesA Note's id, from get_thread, search or get_note.
evidenceNoOther Notes you relied on: [{note_id, content_revision}].
operation_idYesA new UUID for each write. After a lost answer, send the identical call with the same one, or check get_operation before writing again.
context_receiptYesThe context_receipt get_note answered.
expected_revisionYesThe content_revision get_note answered.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructive=true and idempotent=true, but the description adds real substance beyond them: concurrent edits to other blocks are preserved (merge semantics), a failed call changes nothing, and the agent must never retry with a guessed revision. The idempotency claim is also made concrete via operation_id and get_operation, which the annotations alone do not explain.

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

Conciseness4/5

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

The core instruction is front-loaded and every clause carries operational information. The middle section reads as a compressed error glossary, which is dense and slightly hard to scan, but no sentence is filler.

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?

For a destructive whole-content replacement with no output schema, the description covers the parts that matter: how to obtain the inputs, what survives the write, and how to recover from each failure mode. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds meaning the schema does not: expected_revision and context_receipt come from the get_note answer, and evidence entries return reread_required if a referenced Note changed. The content parameter's document-vs-markdown distinction is also spelled out, though the schema already covers most of it.

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?

"Replace a Note's whole content" names a specific verb and resource, and the qualifier "only when you were asked to change that Note" separates it from create_note, update_note_properties, and restore_note_version. An agent can pick it out of the sibling list 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 Guidelines5/5

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

It gives an explicit prerequisite ("First get_note"), an explicit exclusion ("To add progress, create a new Note instead"), and routes to alternatives where relevant. The error-code handling (stale_block, reread_required, lossy_markdown) tells the agent exactly what to do next rather than leaving it to guess.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.