Skip to main content
Glama

Add items to a collection

zotero_add_items_to_collection
Idempotent

Add existing Zotero items to a target collection without removing them from other collections. Already-included items are skipped, preventing duplicate writes.

Instructions

File existing items into a collection, keeping every collection they already belong to. An item in Zotero can sit in any number of collections, so this adds rather than moves. Items already in the collection are reported as unchanged and cost no write.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
groupIdNoGroup library ID. Omit for the personal library ("My Library"), which is what almost every request wants. Group IDs come from zotero_list_libraries.
itemKeysYesKeys of the items to file.
collectionKeyYesTarget collection key.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
addedYes
collectionKeyYes
alreadyPresentYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv1.0.1

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already carry idempotentHint=true and destructiveHint=false; the description goes beyond them by explaining the underlying domain rule (an item can belong to any number of collections), the add-not-move behavior, and the rate-limit-relevant detail that items already in the collection 'cost no write.' Nothing contradicts the annotations — readOnlyHint=false is consistent with a filing operation.

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 sentences, each earning its place: sentence one states the action and its non-destructive scope, sentence two gives the domain rationale, sentence three discloses idempotency and cost behavior. The core purpose is front-loaded, with zero 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?

Given the annotations, a fully described schema, and an existing output schema, nothing needed to invoke this correctly is missing. The description covers purpose, side-effect semantics (preserves other memberships), and repeated-call behavior (unchanged, no write), which is complete for a tool of this complexity.

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 description coverage is 100%: groupId has a detailed explanation including the personal-library default and a pointer to zotero_list_libraries, while itemKeys and collectionKey have pattern and purpose descriptions. With the schema carrying the parameter burden, the description need not add more; the baseline 3 applies.

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 uses a specific verb-resource pair — 'File existing items into a collection' — which immediately distinguishes it from zotero_create_items (creating new items) and zotero_remove_items_from_collection (removing items). The phrase 'adds rather than moves' crisply nails the core semantic so an agent cannot mistake this for a move or replace operation.

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?

Clear context is provided: use this to file items that already exist into a target collection while preserving their existing memberships, which implies the alternative use-cases (creating items, removing them, renaming the collection). However, no alternative tool is explicitly named and no when-not-to-use condition is stated, so the agent must infer the contrast with zotero_remove_items_from_collection.

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

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/dvdsosa/zotero-native-mcp'

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