Skip to main content
Glama

Append Markdown to a Zotero note

zotero_append_to_note

Append Markdown to an existing Zotero note while preserving its citations and formatting, and convert bracketed item keys into real Zotero citations.

Instructions

Add Markdown to the end of an existing Zotero note, keeping everything already in it, including its own citations and formatting. Markdown: headings, paragraphs, bullet and numbered lists, bold, italic, strikethrough, code and fenced code blocks, links, > blockquotes, tables, horizontal rules, and $inline$ or $$display$$ math, all stored as the note editor's own HTML. Raw HTML is shown as text, not interpreted. Cite a library item with its key in brackets: [@ABCD2345], [@ABCD2345, p. 12], [see @ABCD2345; @WXYZ6789, pp. 3-5]. Each becomes a real Zotero citation (clickable in Zotero, live when the note is added to a Word document), and a key that names nothing refuses the write. note_key is the note's own key (zotero_get_item with include_children lists an item's notes). To start a new note use zotero_create_note; to rewrite one, zotero_replace_note. If someone edits the note at the same moment, it is re-read and the text appended to the fresh copy. Writes go to the running Zotero desktop app (Zotero 10+) for every library it holds, otherwise to the cloud Web API.

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": {
      "note_key": "<note_key>",
      "markdown": "<markdown>"
    },
    "name": "zotero_append_to_note"
  }
}

Input Schema

NameRequiredDescriptionDefault
citeNoTurn [@ITEMKEY] references into Zotero citations (default true). false leaves them as plain text.
markdownYesWhat to add at the end of the note, in Markdown.
note_keyYesKey of the note to append to.
library_idNoNumeric id of the library to address, e.g. 5234875 for a group (zotero_groups lists the ids you can reach). Omit to use the configured default library; an id given without library_type is read as a group id.
library_typeNoWhich library to address: "user" (a personal library) or "group" (a shared group library). Omit to use the library this server is configured for. "group" on its own is refused: pass library_id with it.

Output Schema

NameRequiredDescriptionDefault
targetNoWhere the write went: "local" (Zotero desktop local API), "desktop" (connector protocol) or "cloud" (Zotero Web API).
retriedNoTrue when a version conflict made it re-read the note and append to the fresh copy.
note_keyYesThe note this call appended to.
citationsYesHow many [@KEY] groups in the appended text became Zotero citations.
newVersionYesThe note's version after the write.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.23.1

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare it a non-read-only, non-idempotent, non-destructive write, and the description adds behavior the annotations cannot convey: concurrent-edit handling (re-read and append to the fresh copy), atomic refusal when a cited key is unresolved, raw HTML rendered as text, storage as the editor's own HTML, and backend selection between desktop Zotero 10+ and the Web API.

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?

Purpose, citations, alternatives and backend are front-loaded and each sentence carries information. The long Markdown dialect enumeration is functional but heavy, slightly diluting the highest-value routing and safety content.

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

Completeness4/5

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

Complete for a mutating append tool: conflict semantics, citation-failure behavior, and backend routing are all stated, and an output schema exists so return values need no explanation. It stops short of describing failure modes when note_key is missing, trashed, or unreadable.

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 baseline is 3; the description still adds value by defining note_key's provenance and the inline citation grammar ([@KEY], [@KEY, p. 12], multi-cite with locators) that governs the markdown parameter. It does not cover library_id/library_type, but the schema already does so thoroughly.

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?

Opens with a specific verb+resource+scope: add Markdown to the END of an EXISTING note while preserving existing content. It explicitly distinguishes itself from zotero_create_note and zotero_replace_note, so an agent can pick it without opening sibling schemas.

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?

Gives explicit routing rules: use zotero_create_note to start a new note, zotero_replace_note to rewrite one, this tool to append. It also tells the agent how to obtain the required note_key (zotero_get_item with include_children). Nothing is left to inference.

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