Skip to main content
Glama
54yyyu
by 54yyyu

zotero_update_item

Update metadata on an existing Zotero item by its key, modifying fields, tags, collections, creators, or item type. Only the supplied values are changed.

Instructions

Update metadata on an existing Zotero item by key. Only what you pass is changed. fields: {name: value} of metadata to set (a JSON object string is accepted). Names may be snake_case (title, date, doi, url, abstract, publication_title, access_date, short_title, book_title, citation_key, item_type, place, extra, volume, issue, pages, publisher, issn, isbn, edition, language) or any raw Zotero API field name. An unknown name fails the call and lists the valid ones; a name that is not valid for this item's type is reported as skipped. item_type migrates the item (overlapping fields kept, type-specific ones dropped). TAG SEMANTICS (easy to get wrong): tags REPLACES the whole tag list; add_tags/remove_tags are incremental and preferred. They are mutually exclusive with tags. collections (keys) and collection_names likewise REPLACE membership — pass collections=[] to clear it; for incremental moves use zotero_set_item_collections. creators: full replacement list of {creatorType, firstName, lastName} objects. Requires a writable library (fails in local-only mode). To edit notes use zotero_manage_note. Example: zotero_update_item(item_key='RTKZQI8E', fields={'doi': '10.1145/3708319'}, add_tags=['reviewed']).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagsNo
fieldsNomapping (or JSON object string) of field name -> value. Names may be snake_case aliases (``publication_title``, ``short_title``, ``citation_key``) or raw Zotero API keys (``publicationTitle``). ``place`` is the publication city (e.g. ``"New York"``) and is valid on book, bookSection, thesis, manuscript, report and conferencePaper. ``citation_key`` writes Zotero's native ``data.citationKey`` (the BetterBibTeX citation key); BBT auto-pins from metadata on creation and provides no programmatic refresh path in 9.x, so a direct write here is the only programmatic remediation for malformed pinned keys. ``item_type`` migrates the item across types: overlapping fields are preserved and type-specific fields that do not map are dropped.
add_tagsNo
creatorsNofull replacement creators list (also accepted as ``fields['creators']``).
item_keyYes8-character Zotero item key of the item to update.
collectionsNo
remove_tagsNo
collection_namesNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

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 mutation behavior (update, migration on item_type change with field drop semantics, tag replacement vs incremental), failure modes (unknown names fail the call, invalid names skipped), and mode restrictions (fails in local-only mode). This is rich behavioral detail despite the lack of annotations.

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 description is information-dense with clear section markers (TAG SEMANTICS, example). It is compact relative to the behavioral complexity it covers. Slightly long but every section earns its place given the easy-to-get-wrong tag/collection/creator replacement semantics.

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 complex mutation tool with 8 params and only 38% schema coverage, the description is remarkably complete: covers all parameter semantics, migration behavior, tag semantics, collection replacement, creators replacement, mode restrictions, error behavior, and points to sibling tools where relevant. An output schema exists, so return format need not be explained.

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 description coverage is only 38%, so the description must compensate. The main description lists valid snake_case field names, explains item_type migration, tag semantics, collections/collection_names replacement behavior, and creators as full replacement. The fields param in the schema does add extra detail about place validity and citation_key. The combination provides strong semantic depth beyond the bare schema.

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?

Description states clearly 'Update metadata on an existing Zotero item by key' with a specific verb+resource. It explicitly outlines what is changed ('Only what you pass is changed') and differentiates from siblings by referencing zotero_set_item_collections and zotero_manage_note for adjacent operations.

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?

Provides explicit usage guidance including tag semantics warning ('tags REPLACES the whole tag list; add_tags/remove_tags are incremental and preferred'), alternative tool references (zotero_set_item_collections for incremental collection moves, zotero_manage_note for notes), and prerequisites (requires writable library). Also gives a concrete example invocation.

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

Install Server

Other Tools

Latest Blog Posts

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/54yyyu/zotero-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server