Skip to main content
Glama
JingYangYuan

zotero-local-mcp

by JingYangYuan

zotero_get_collections

List all collections in the active Zotero library as a hierarchical tree, including nested subcollections and optional trash items.

Instructions

List all collections in the currently active Zotero library as a hierarchical tree (parents and nested subcollections, each with its 8-character key). Use this when the user wants to see the full library structure. If you already know a name and just need the key, prefer zotero_search_collections — it returns only matches. Scope is limited to the active library — switch libraries with zotero_switch_library before listing. Deep hierarchies render inline without truncation, so very deep trees can be long. limit: cap on collections returned; pass None (default) to use 100, or raise to 5000 for libraries with thousands of collections. include_trashed: when True, also show collections in the Zotero Trash (annotated as such). Default False, matching Zotero desktop's default view. Example output:

  • Orals (Key: MT53KB66)

    • Early America (Key: 3249BZKE)

      • I. Historiography & Methodology (Key: XFN79DUT)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of collections to return
include_trashedNoif True, merge collections currently in Zotero's Trash into the listing, annotated with ``[trashed]``. Default False matches the Zotero desktop default and the prior behavior of this tool. Trashed collections are normally invisible to automated clients (#233) — turn this on when you need to know they exist.

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 provided, the description carries the full burden of disclosure. It covers the hierarchical tree structure, the fact that deep hierarchies render inline without truncation (so long output is expected), the meaning of the limit parameter (None default 100, up to 5000), and the include_trashed behavior (default False, matching Zotero desktop, with an annotation for trashed items). It even mentions that trashed collections are normally invisible to automated clients (#233). These are substantive behavioral traits that an agent needs to know.

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 front-loaded with the core purpose, then usage guidance, then behavioral notes, then parameter details, and closes with a concrete example output. Every sentence earns its place—no filler. Despite being longer than average, it is structured to be scannable and information-dense.

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 tool with two optional parameters and an output schema, this description is complete. It covers the return format, scope, parameter behavior, edge cases (deep trees, trash), and provides an example. It also explains the relationship to a sibling tool, making it self-contained for an agent to call correctly.

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?

Even though the schema already describes both parameters (100% coverage), the description adds meaningful operational guidance: for limit it explains the default and how to increase it ('pass None (default) to use 100, or raise to 5000'), and for include_trashed it explains the default and why it exists (matching Zotero desktop and visibility to automated clients). This goes well beyond the schema's terse 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 specific verb and resource: 'List all collections in the currently active Zotero library as a hierarchical tree.' It names the output format (parents and nested subcollections with 8-character keys) and explicitly contrasts itself with the sibling zotero_search_collections, which returns only matches. This makes its purpose unambiguous and distinct from related tools.

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 explicit usage context: 'Use this when the user wants to see the full library structure' and provides a clear alternative for a different need: 'If you already know a name and just need the key, prefer zotero_search_collections.' It also notes the scope limitation and how to switch libraries (zotero_switch_library), leaving no ambiguity about when to invoke it.

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