Skip to main content
Glama
JingYangYuan

zotero-local-mcp

by JingYangYuan

zotero_batch_update

Batch update Zotero items by adding or removing tags and upserting or deleting key-value lines in Extra. Select items by keys, free-text query, or existing tags, then apply changes in one call.

Instructions

Edit metadata across many items in one call: add/remove tags and upsert/remove Key: value lines in Extra (Better BibTeX keys, tex.* fields). Select items by item_keys, and/or a free-text query, and/or an existing tag (query and tag are ANDed; tag may be a list to OR); item_keys wins. At least one selector AND one action are required. add_tags/remove_tags keep the item's other tags — not a replace-all. set_keys upserts Extra lines, matching a line case-insensitively by its key: prefix and replacing it in place, else appending; remove_keys deletes those lines; lines without a colon are preserved. limit: max items for query/tag selection (default 50). Attachments and items needing no change are skipped and counted. Requires a writable library. Example: zotero_batch_update(tag='to-read', add_tags=['reviewed'], remove_tags=['to-read']).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagNo
limitNo
queryNo
add_tagsNo
set_keysNo
item_keysNo
remove_keysNo
remove_tagsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral burden. It discloses that add_tags/remove_tags preserve other tags (not replace-all), describes set_keys upsert semantics (case-insensitive key match, in-place replacement vs append), remove_keys deletion, preservation of non-colon lines, skipping of attachments and unchanged items, and the limit default. These details go beyond generic expectations and prevent misinterpretation.

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?

The description is dense but every sentence adds critical information. It is structured logically: purpose → selection criteria → requirements → action semantics → edge cases → prerequisite → example. The key scoping rules (item_keys wins, AND/OR logic) are front-loaded. There is no fluff or repetition; the length is justified by the tool's complexity.

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?

Given the tool's complexity (8 parameters, multiple actions, selection logic), the description covers all necessary aspects: what it does, how to select items, how each action behaves, constraints (at least one selector/action), limit default, handling of attachments, and the writable library requirement. An output schema exists, so return values are presumably covered there. Nothing essential for correct invocation is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain each parameter. It does so comprehensively: item_keys, query, tag, limit, add_tags, remove_tags, set_keys, remove_keys are all described with their behavior and interactions. The set_keys explanation includes the case-insensitive key prefix matching and append behavior. The example ties the parameters together. This fully compensates for the missing schema descriptions.

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 opens with a precise statement of what the tool does: 'Edit metadata across many items in one call' and enumerates the specific actions (add/remove tags, upsert/remove Key: value lines). It clearly distinguishes itself from single-item tools like zotero_update_item by emphasizing 'batch' and the multi-selector capability. The example further anchors the purpose.

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?

The description explicitly explains when to use it (batch edits across many items) and provides detailed selection logic: item_keys vs query vs tag, ANDing of query and tag, ORing of tag list, item_keys precedence, and the requirement for at least one selector and one action. It also states prerequisites (writable library) and gives a concrete example, leaving no ambiguity about invocation.

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