Skip to main content
Glama

zotero-mcp-local-write

License: MIT Python 3.11+

Model Context Protocol (MCP) server for Zotero — based on kujenga/zotero-mcp, extended with a full set of write tools so an AI assistant can actually organize your library, not just read it.

The upstream project covers searching and formatting. This fork keeps all of that and adds writes.py (~1,200 lines): collections, items, notes, annotations, saved searches, file uploads, tags, trash, settings, groups, and bulk/version-aware operations — all over the local Zotero API, so nothing leaves your machine.

  • 33 tools total: 3 read (from upstream) + 30 write (new in this fork)

  • Works with the local API — no API key, no cloud sync required

  • Idempotent writes (each request carries a Zotero-Write-Token)

  • Version-aware write-key authorization flow for the local API

Requirements

  • Zotero 7+ with the local HTTP server enabled (Settings → Advanced → check "Allow other applications on this computer to communicate with Zotero")

  • Python 3.11+ (only if installing from source)

  • An MCP client: Claude Desktop, Claude Code, Cursor, or any MCP-compatible assistant

Related MCP server: zotero-mcp-lite

Installation

uvx --from git+https://github.com/ozbayenes123-ops/zotero-mcp-local-write.git zotero-mcp

Option 2 — Install permanently

pipx install git+https://github.com/ozbayenes123-ops/zotero-mcp-local-write.git

Option 3 — From source (development)

git clone https://github.com/ozbayenes123-ops/zotero-mcp-local-write.git
cd zotero-mcp-local-write
uv run zotero-mcp

Configuration

Set ZOTERO_LOCAL=true to use Zotero's local HTTP server. The server authenticates itself against Zotero's local API and requests a write key on first write.

Generic mcp.json / Claude Code:

{
  "mcpServers": {
    "zotero": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/ozbayenes123-ops/zotero-mcp-local-write.git", "zotero-mcp"],
      "env": { "ZOTERO_LOCAL": "true" }
    }
  }
}

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "zotero": {
      "command": "zotero-mcp",
      "args": [],
      "env": { "ZOTERO_LOCAL": "true" }
    }
  }
}

Web API (optional)

If you prefer the Zotero Web API (writes go to zotero.org), set:

Variable

Required

Description

ZOTERO_LIBRARY_ID

yes (web mode)

Your user or group library ID

ZOTERO_LIBRARY_TYPE

no (default user)

user or group

ZOTERO_API_KEY

yes (web mode)

API key from zotero.org settings

ZOTERO_LOCAL

no

Set true to force local API mode

Tools

Reading (upstream)

Tool

Description

zotero_search_items

Search the library by text query

zotero_item_metadata

Full metadata of one item, grouped and formatted

zotero_item_fulltext

Indexed full text of an item's attachment (e.g. PDF)

Writing (this fork)

Collections

Tool

Description

zotero_list_collections

List all collections as a tree

zotero_list_collection_items

List top-level items in a collection

zotero_create_collection

Create a collection (optionally nested)

zotero_delete_collection

Delete a collection (items stay in the library)

zotero_add_items_to_collection

Add items to a collection

zotero_remove_items_from_collection

Remove items from a collection

Items

Tool

Description

zotero_create_item

Create a new item (journalArticle, book, …)

zotero_change_item_type

Change item type (e.g. journalArticle → bookSection)

zotero_update_item_fields

Update fields of one item

zotero_bulk_update_fields

Field patch across many items in one call

zotero_delete_items

Move items to trash (recoverable)

Notes & annotations

Tool

Description

zotero_create_note

Create a standalone or child note (HTML)

zotero_update_note

Replace a note's content

zotero_create_annotation

Highlight / note / image / ink annotation on a PDF

Saved searches

Tool

Description

zotero_create_saved_search

Create a dynamic saved search

zotero_update_saved_search

Update name and/or conditions

zotero_delete_saved_search

Delete a saved search

zotero_run_saved_search

Execute a saved search

Files

Tool

Description

zotero_upload_file

Attach a local file (stored-file attachment)

zotero_download_file

Download a stored attachment to disk

zotero_write_fulltext

Write indexed full text so zotero_item_fulltext can find it

Tags, trash, settings, groups, sync

Tool

Description

zotero_list_tags

List all tags with item counts

zotero_delete_tag

Delete a tag from every item

zotero_list_trash

List trashed items

zotero_restore_items

Restore items from trash

zotero_empty_trash

Permanently delete everything in trash

zotero_list_settings

List library settings

zotero_set_setting

Set one library setting

zotero_list_groups

List group libraries the user belongs to

zotero_list_changes

Incremental sync — what changed since a library version

Example workflow

"Organize my machine-learning papers":

  1. zotero_search_items — find the papers

  2. zotero_create_collection — create "Machine Learning"

  3. zotero_add_items_to_collection — move them in

  4. zotero_create_note — attach a summary note to each

  5. zotero_create_annotation — highlight the key claim in the PDF

  6. zotero_list_changes — confirm what was modified since your last sync

How local writes work

The Zotero 7 local API requires a write key separate from normal read access. On the first write, the server performs Zotero's local authorization flow, caches the key locally, and re-uses it; every write request additionally carries a Zotero-Write-Token (a UUID) so retried requests cannot duplicate changes.

Deletes are soft by default: zotero_delete_items moves to trash, and zotero_restore_items recovers. Only zotero_empty_trash is permanent.

Troubleshooting

  • "Connection refused" / empty results — make sure Zotero is running and the local API is enabled in Zotero's settings.

  • Permission errors on write — Zotero shows an authorization prompt the first time; accept it, or check the library is not set to read-only.

  • Transport — use --transport stdio (default) for most clients; sse is available for web-based clients: zotero-mcp --transport sse.

Credits & license

Built on kujenga/zotero-mcp by Aaron Taylor (read layer: client.py, cli.py and the formatting/search core in __init__.py), licensed under the MIT License, which is preserved here.

The write layer (writes.py) and all local-API integration were added in this fork.

Available Tools

33 tools
zotero_add_items_to_collectionA

Add one or more items to a collection. An item can live in multiple collections; this never removes it from others. Use zotero_list_collections to get keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keysYesItem keys to add, e.g. ['ABCD1234', 'WXYZ5678'].
collection_keyYesTarget collection key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It usefully explains that the operation is non-destructive regarding other collections, which is important behavioral context beyond a simple 'add' statement. It could mention more about error cases or idempotency, but the key behavioral trait is covered.

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?

Two concise sentences with no filler. The core action is front-loaded, the non-destructive caveat is stated clearly, and the practical hint about getting keys is included without bloating the description.

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?

For a straightforward two-parameter tool, the description provides the essential context: what it does, a key behavioral detail, and how to obtain a required parameter value. It does not describe the return value, but that is not critical for invoking the tool correctly.

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?

The input schema already documents both parameters well, including an example for item_keys. The description adds value by telling the agent where to get collection keys, but it does not add significant meaning beyond the schema for the parameters themselves.

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 clearly states the action ('Add one or more items to a collection') and names the exact resource. It also adds a distinguishing semantic detail: an item can be in multiple collections and this operation never removes it from others.

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?

The description gives concrete usage guidance by pointing the agent to zotero_list_collections for obtaining collection keys. It does not explicitly name alternative tools, but there is no obvious sibling that performs the same operation, so this is sufficient.

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

zotero_bulk_update_fieldsA

Apply a field patch to MANY items in one call (e.g. fixing a hundred titles). Each entry: {'key': 'ABCD1234', 'fields': {...}}. Same semantics as zotero_update_item_fields per item; each request carries its own Zotero-Write-Token for idempotency.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYesEntries of {'key': item key, 'fields': fields to change}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It does so by stating this is a field-patch write operation, noting each entry carries its own Zotero-Write-Token for idempotency, and clarifying that per-item semantics match zotero_update_item_fields. It does not address partial-failure behavior or batch limits, but the core mutation and idempotency traits are made visible.

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 compact and front-loaded: it states the bulk purpose, gives a realistic example, connects to the single-item sibling, and mentions idempotency. Every sentence contributes useful information with no filler.

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?

For a bulk mutation tool with one parameter, the description covers purpose, item format, per-item semantics, and idempotency. An output schema exists, so return-value details need not be in the description. The main missing piece is behavior on partial failures, but the per-item token wording partially mitigates that ambiguity.

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%: the schema already documents updates as 'Entries of {key: item key, fields: fields to change}.' The description adds a concrete key example and the phrase 'fields: {...}' but does not meaningfully go beyond the schema, so the baseline of 3 is appropriate.

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 plus resource: 'Apply a field patch to MANY items in one call,' with a concrete example. It also directly distinguishes itself from the single-item sibling zotero_update_item_fields by emphasizing bulk behavior, so an agent can tell them apart without opening schemas.

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?

The description clearly signals when to use this tool: when updating many items at once, such as 'fixing a hundred titles.' It references zotero_update_item_fields for per-item semantics, which implies the alternative for single-item updates, though it does not explicitly say 'do not use this for one item.'

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

zotero_change_item_typeA

Change an item's type (e.g. journalArticle -> bookSection). Zotero silently drops fields that do not exist on the new type, so pass field_map to move values across, e.g. {'publicationTitle': 'bookTitle'}. The old values stay in the new fields when the names map.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keyYesItem key to change.
field_mapNoOld field name -> new field name, moving values that would otherwise be dropped.
new_item_typeYesTarget item type.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden, and it delivers on the most critical behavior: silent data loss ('Zotero silently drops fields that do not exist on the new type') and its mitigation via field_map. It also clarifies preservation semantics ('The old values stay in the new fields when the names map'). It does not cover side effects on child items or reversibility, but the central destructive trait is disclosed.

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 tight sentences, each earning its place: the action, the risk, and the preservation guarantee. The most consequential warning (silent field dropping) is front-loaded in the second sentence. No filler or redundancy.

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?

Given the moderate complexity of field mapping, the description is nearly complete: it covers the operation, the data-loss risk, the mapping mechanics, and an example. With an output schema present and 100% parameter coverage, very little is missing; only edge behavior (invalid type names, effects on attachments/notes) goes unmentioned.

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 the baseline is 3, but the description adds genuine value beyond the schema: a concrete field_map example ({'publicationTitle': 'bookTitle'}), the old→new direction, and the behavioral reason for the parameter. This meaningfully exceeds what property descriptions alone provide.

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?

States a specific verb and resource: 'Change an item's type', with a concrete example ('journalArticle -> bookSection') that clarifies exactly what operation this performs. This is clearly distinct from siblings like zotero_update_item_fields or zotero_bulk_update_fields, which modify field values rather than the item type itself.

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?

Provides clear contextual guidance for when field_map is needed: 'Zotero silently drops fields that do not exist on the new type, so pass field_map to move values across.' This is prescriptive usage advice. However, it does not explicitly name alternatives or state when not to use this tool (e.g., versus zotero_update_item_fields for simple field edits), so it stops short of a 5.

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

zotero_create_annotationA

Create an annotation on a PDF attachment: a highlight, a note annotation, an image, or ink. annotation_position is the page placement as a JSON object, e.g. {'pageIndex': 0, 'rects': [[x1, y1, x2, y2]]} in PDF coordinates. Attach to the ATTACHMENT key (the PDF), not the parent item. Returns the new annotation's key.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_labelNoPrinted page label to show, e.g. '12'.
sort_indexNoSort position as 'pageIndex_chars', e.g. '00000_00042'.
attachment_keyYesKey of the PDF attachment item.
annotation_textNoHighlighted text (required for highlight).
annotation_typeYesOne of: highlight, note, image, ink.
annotation_colorNoHex color, e.g. '#ffd400'.
annotation_commentNoYour comment on the annotation.
annotation_positionYesPlacement as a JSON object, e.g. {'pageIndex': 0, 'rects': [[0.1, 0.2, 0.8, 0.3]]}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the transparency burden. It discloses the return value ('Returns the new annotation's key'), the required PDF-coordinate placement format, and the critical attachment-key requirement. The mutating nature is obvious from 'Create,' and the description adds meaningful behavioral context beyond that.

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 focused sentences front-load the purpose, then give the position format, attachment-key guidance, and return value. No filler or repetition; every sentence earns its place.

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?

For an 8-parameter tool with a nested position object and an output schema, the description covers the essential call semantics: annotation types, position format, attachment target, and return value. Optional parameter behaviors are already documented in the input schema, so the description is reasonably complete. It could add explicit notes about which parameters apply to each annotation type, but the schema partially covers that.

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 the baseline is 3, but the description adds real value on top: annotation_position gets a concrete JSON example and coordinate-system clarification, and attachment_key is disambiguated with the 'not the parent item' warning. This goes beyond what the schema alone provides.

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?

States a specific verb and resource: 'Create an annotation on a PDF attachment' and enumerates the four supported kinds (highlight, note annotation, image, ink). This clearly distinguishes it from sibling tools like zotero_create_note, which creates a standalone note rather than a PDF annotation.

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?

Gives clear operational context by saying 'Attach to the ATTACHMENT key (the PDF), not the parent item,' which prevents a common misuse. It does not explicitly contrast with alternative sibling tools, but the PDF-attachment framing is enough for an agent to infer when this tool applies.

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

zotero_create_collectionA

Create a new collection (folder) in the Zotero library, optionally nested under a parent collection. Returns the new collection's key.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the new collection.
parent_keyNoParent collection key for nesting; omit for a top-level collection.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It does state the mutation and the return value ('Returns the new collection's key'), but it does not disclose duplicate-name behavior, whether the parent_key must already exist, or permission/error considerations.

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?

A single, front-loaded sentence covers purpose, nesting, and return value with no filler. It is concise and easy to scan.

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?

For a two-parameter creation tool with full schema coverage and an output schema, the description is nearly complete. It could add a prerequisite note that parent_key must reference an existing collection, but that is a minor gap.

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 coverage is 100%, so the baseline is 3. The description reinforces that parent_key is used for optional nesting, but the schema already says 'Parent collection key for nesting; omit for a top-level collection.' No additional meaning is added.

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 ('Create a new collection (folder in the Zotero library'), and also notes the optional nesting and the returned key. This clearly distinguishes it from sibling tools like delete or list collections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives, no when-not-to-use conditions, and no pointer to related workflows such as needing the key before adding items. The only usage hint is implied by the action itself, which is weak among many create_* siblings.

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

zotero_create_itemA

Create a new empty item in the library, e.g. a journalArticle, book, report, or webpage. Pass only the fields you want set (title, date, creators, ...). Use zotero_item_metadata on an existing item to see valid field names for its type. Returns the new item's key.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for the item.
fieldsNoFields to set, e.g. {'title': 'T', 'date': '2024'}. Types use 'creators': [{'creatorType': 'author', 'firstName': 'A', 'lastName': 'B'}].
item_typeYesZotero item type, e.g. 'journalArticle', 'book', 'report'.
collection_keysNoCollections to file the item in.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the key side effect (creating an item), the return value (the new item's key), and the 'empty item' behavior. However, it does not mention validation behavior, error conditions, whether the item is added to the library root by default, or any permission/context requirements.

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 with no filler. The purpose is front-loaded, then parameter usage, then a helpful cross-reference, then the return value. Every sentence contributes actionable information.

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?

Given the moderate complexity (4 params, one nested object, one required field) and the presence of an output schema, the description is quite complete. It explains the creation flow, valid field discovery, and return value. It could be slightly stronger by noting how collection_keys and tags interact with the creation, but the schema already names those parameters clearly.

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?

The input schema already covers all parameters, so the baseline is 3. The description adds meaningful value by clarifying that fields can be partially set, giving common examples of field names, and pointing to zotero_item_metadata for discovering valid fields per type. This goes beyond the schema's generic 'Fields to set' description.

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 states a clear action ('Create a new empty item in the library') with concrete examples of item types ('journalArticle, book, report, or webpage'). It also implies what makes this tool distinct from sibling creation tools like zotero_create_note or zotero_create_annotation, so an agent can select it appropriately.

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?

The description gives practical usage guidance: pass only the fields you want set, and use zotero_item_metadata on an existing item to discover valid field names. It stops short of explicitly stating when to prefer this tool over alternatives or when not to use it, but the create-item purpose is clear enough for most selection scenarios.

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

zotero_create_noteA

Create a note. With parent_item_key it becomes a child note of that item; without it, a standalone note. Content is HTML, e.g. 'text'. Returns the new note's key.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for the note.
note_htmlYesNote content as HTML.
parent_item_keyNoItem key to attach the note to; omit for a standalone note.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It discloses that the tool creates child vs standalone notes, requires HTML content, and returns the new note's key. These are meaningful behavioral details beyond the raw schema fields, though it could mention error behavior or prerequisites for parent_item_key.

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 extremely concise: four short sentences, each with a distinct purpose. It front-loads the core action, then states the parent relationship, the content format, and the return value. There is no redundant or filler language.

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?

For a simple creation tool with rich schema and an output schema present, the description covers the essential information: what is created, how to make it a child or standalone note, the required HTML format, and the return value. It could be more complete by naming alternatives or edge-case behavior, but it is sufficient for an agent to invoke the tool correctly in most cases.

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 the baseline is 3. The description adds value beyond the schema by giving an HTML example and clarifying the parent_item_key behavior: with it, the note becomes a child note; without it, it is standalone. This enriches the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Create a note.' It adds the key semantic that parent_item_key makes it a child note while omitting it creates a standalone note. However, it does not explicitly distinguish itself from sibling tools like zotero_create_annotation, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives conditional usage guidance: include parent_item_key for a child note, omit it for a standalone note. It also explains that content must be HTML. It does not explicitly state when to choose this tool over alternatives such as zotero_create_annotation or zotero_create_item, so the usage context is implied rather than fully explicit.

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

zotero_delete_collectionA

Delete a collection. The collection's items are NOT deleted from the library unless delete_items=true — by default they just lose this folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
delete_itemsNoAlso permanently delete every top-level item inside the collection (their attachments and notes go with them).
collection_keyYesCollection key from zotero_list_collections.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden. It explicitly reveals the key destructive nuance that collection deletion alone preserves items in the library and that the default behavior only removes folder membership. It does not describe reversibility or permission requirements, but the most decision-relevant behavior is transparent.

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 two compact sentences with no filler. It front-loads the action, then gives the critical caveat about item preservation. Every word earns its place.

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 low-complexity tool with only two params, a required collection key, and an output schema, the description is complete enough. It covers the action, the default behavior, and the escalation path for deleting items. Return values are already addressed by the output schema.

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 coverage is 100%, so the schema already documents both parameters well. The description adds a little contextual meaning around delete_items ('by default they just lose this folder'), but does not introduce substantial new parameter semantics beyond what the input schema provides.

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 states a precise action and resource: 'Delete a collection.' It immediately clarifies scope by noting the collection's items are NOT deleted unless delete_items=true, distinguishing this from zotero_delete_items and from collection membership removal tools. The purpose is unambiguous and usefully scoped.

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?

The description provides clear contextual guidance: by default, this tool only removes the folder, not the items, and setting delete_items=true escalates the operation. It stops short of explicitly naming alternatives like zotero_delete_items or zotero_remove_items_from_collection for when those should be used instead, so it is strong but not fully explicit.

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

zotero_delete_itemsA

Move items to Zotero's trash (recoverable via zotero_restore_items). Note: the local API's true DELETE is permanent, so this tool marks the items deleted instead; to purge permanently, list the trash and empty it with zotero_empty_trash. Use for duplicates. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be true to actually trash these items.
item_keysYesItem keys to move to the trash.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/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 of behavioral disclosure. It clearly explains that the tool does not perform a true DELETE but marks items as deleted, that the operation is recoverable, and that permanent purge requires a separate workflow. This is transparent and contradicts nothing.

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 three dense, useful sentences: the main action, the API caveat, and the usage/confirmation requirement. It is front-loaded and contains no filler or repetition of the tool name.

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 output schema and fully documented parameters, the description covers selection, safety semantics, recoverability, the confirmation guard, and the permanent-purge alternative while naming relevant sibling tools. Nothing critical is missing for correct invocation.

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%, with both item_keys and confirm already documented. The description reinforces that confirm must be true but adds little semantic detail beyond the schema, so the baseline score of 3 is appropriate.

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 opening phrase 'Move items to Zotero's trash' states a clear verb, resource, and target state. It also immediately distinguishes this tool from permanent deletion by naming zotero_restore_items as the recovery path, so an agent can tell it apart from zotero_empty_trash and zotero_delete_collection.

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 says 'Use for duplicates' and gives a concrete alternative for permanent removal: 'list the trash and empty it with zotero_empty_trash.' It also flags the invocation requirement confirm=true, leaving little ambiguity about when or how to call this tool.

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

zotero_delete_tagA

Delete a tag from every item that carries it. Implemented by rewriting each affected item's tags (the local API has no direct tag-delete endpoint); a few hundred items is fine, tens of thousands is not.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesExact tag text to delete.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/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, and it excels: it reveals the indirect implementation (rewriting item tags), the absence of a direct API endpoint, and a meaningful scale limitation. This gives the agent realistic expectations beyond the schema.

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?

Two sentences pack purpose, implementation detail, and a practical performance caveat with no filler. The core action is front-loaded and every clause adds value.

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 single-parameter tool with an output schema, the description is complete: it states the effect, explains why the implementation is indirect, and warns about scale problems. No critical behavioral information appears to be missing.

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?

The single parameter `tag` is already fully documented in the schema as 'Exact tag text to delete.' `The description adds no additional detail about matching behavior, formatting, or case sensitivity, so it stays at the baseline for high schema coverage.

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 and resource: 'Delete a tag from every item that carries it.' This unambiguously distinguishes the tool from siblings like zotero_delete_items and zotero_update_item_fields.

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?

The description makes clear the intended use: removing one tag across all items that have it. It provides performance guidance ('a few hundred items is fine, tens of thousands is not') but does not explicitly name alternative tools or conditions for choosing them.

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

zotero_download_fileA

Download an item's stored attachment file from Zotero to a path on disk. Works for imported_file attachments (pass the attachment key, or a parent item to auto-pick its best attachment). Link-mode attachments have no stored file.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keyYesAttachment key, or parent item key to auto-select its best attachment.
save_pathYesAbsolute path to save the file to.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does provide useful non-obvious detail: only imported_file attachments work, link-mode attachments have no file, and a parent item auto-selects its best attachment. The main gap is that 'best' is underspecified and no overwrite/path behavior is disclosed.

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?

Two sentences with no filler. The core action is front-loaded, and the attachment-type constraint and exception are packed efficiently into the second sentence.

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?

For a simple two-parameter download tool, the description covers selection mode, destination, applicable attachment type, and a key limitation. An output schema exists for return details. Minor ambiguities around 'best attachment' and file overwriting prevent a perfect score.

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 coverage is 100% and both item_key and save_path already have meaningful schema descriptions. The description reinforces item_key's parent-item behavior but adds no new semantic or format constraints beyond the 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?

The description uses a specific verb and resource: 'Download an item's stored attachment file from Zotero to a path on disk.' This clearly distinguishes it from sibling tools like zotero_upload_file or zotero_item_metadata, which deal with uploading or non-file data.

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?

It explicitly states when the tool applies: 'Works for imported_file attachments' and when it does not: 'Link-mode attachments have no stored file.' It does not explicitly name alternative sibling tools, but the usage context and exclusion are clear.

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

zotero_empty_trashA

Permanently delete EVERY item in the trash. This cannot be undone. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoMust be true to permanently delete everything in the trash.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

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

Since no annotations are provided, the description carries full responsibility for behavioral disclosure. It explicitly warns that the operation is destructive ('Permanently delete'), irreversible ('cannot be undone'), scoped to every trash item, and guarded by confirm=true. This is excellent transparency for a dangerous mutation tool.

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 short sentences contain no filler, the core action and irreversible consequence are front-loaded, and the safety condition is stated last. The description is appropriately sized and easily parsed by an agent.

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?

For a one-parameter destructive tool with an output schema, the description covers the essential operational facts: scope, irreversibility, and the confirmation guard. It could also point to restoring items as the alternative when destruction is not intended, but nothing needed to invoke the tool correctly is missing.

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%, and the schema already states that confirm 'Must be true to permanently delete everything in the trash.' The description's 'Requires confirm=true' reinforces the requirement but adds no new semantic information beyond what the schema provides.

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 states a specific verb ('permanently delete'), a specific resource ('every item in the trash'), and the all-encompassing scope ('EVERY item'), which clearly distinguishes it from siblings like zotero_list_trash and zotero_restore_items. An agent knows exactly what the tool does even without a title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when the agent needs to permanently clear the entire trash. However, it does not explicitly contrast this with alternatives such as restoring items or reviewing the trash first, so the when-not-to-use guidance is left largely to inference.

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

zotero_item_fulltextA

Get the full text content of a Zotero item, given the item key of a parent item or specific attachment.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. 'Get' clearly signals a read-only retrieval operation and states what is returned, but it does not disclose behavior when fulltext is unavailable, whether authentication is needed, or any additional response context. This is adequate for a simple getter but not rich.

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 a single, well-structured sentence with no filler. It front-loads the action and resource, then clarifies the required input in a natural and compact way.

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?

Given the tool's simplicity—one required parameter, a clear read-only purpose, and an existing output schema—the description is nearly complete. The main gap is the lack of usage exclusions or alternative-routing guidance, but this is minor for a straightforward fulltext retrieval tool.

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?

The input schema only names the parameter 'item_key' with no description, so the description compensates by explaining that the key can refer to either a parent item or a specific attachment. This adds meaningful semantic guidance. It still does not specify the key format, but the extra context is valuable.

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 clearly identifies the action ('Get'), the resource ('full text content of a Zotero item'), and the key input ('given the item key of a parent item or specific attachment'). This distinguishes it from sibling tools like zotero_item_metadata, which retrieves metadata, and zotero_download_file, which downloads files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when an agent has a known Zotero item key and needs the full text content. However, it does not explicitly state when not to use it or mention alternatives such as zotero_item_metadata for metadata or zotero_download_file for binary attachments.

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

zotero_item_metadataA

Get the complete metadata for a specific Zotero item, given the item key. Includes the citation key, publication details, identifiers, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral transparency burden. The operation is clearly a read-only fetch ('Get'), and the description adds what the result contains. It does not address edge-case behavior such as invalid item keys, authentication requirements, or whether the metadata reflects live library state, which would strengthen transparency.

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?

Two focused sentences: the first states the action and target, the second lists the included fields. There is no filler, no repetition of the tool name, and the core verb and object are front-loaded.

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?

For a simple one-parameter read operation with an output schema, the description is mostly complete. It states the input (item key), the purpose (complete metadata), and highlights several return categories. It could add a hint about key format or mention that searching is the way to find a key, but no critical call-blocking detail is missing.

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?

The schema provides only the property name 'Item Key' with no description (coverage 0%). The description says 'given the item key', which connects the single parameter to the purpose but still does not explain what an item key looks like or how to obtain it. For a one-parameter tool this is adequate, but it adds only minimal semantic value beyond the 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?

The description uses a specific verb ('Get'), names the resource ('complete metadata for a specific Zotero item'), and clarifies the scope by requiring an item key. It also lists included content ('citation key, publication details, identifiers, and timestamps'), which distinguishes it clearly from siblings like zotero_item_fulltext or zotero_search_items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'given the item key' implies the intended usage: the caller should already have a key and wants full metadata for that item. However, there is no explicit guidance about when to choose this over related tools like zotero_search_items or zotero_item_fulltext, and no exclusions are stated.

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

zotero_list_changesA

Track what changed since a version: returns key -> version for every item, collection, or search modified since the given library version. Use since=0 (or omit) for everything, and feed the returned highest version back next time.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoLibrary version to diff from (0 = all).
object_typeNoWhat to track: 'items', 'collections', or 'searches'.items

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden and does so well: it reveals the return type (key -> version), the subject scope (item, collection, or search), and the incremental sync behavior. It stops short of describing limits/pagination or deletion semantics, but the output schema covers much of the return contract.

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?

Two sentences, no filler. The core behavior is front-loaded and the secondary usage guidance follows directly. Every clause contributes.

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 a low-complexity tool with two optional parameters, an output schema, and no annotation requirements, the description fully covers how to invoke and use the result. Nothing critical is missing for an agent to call it correctly.

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 the baseline is 3. The description adds value by explaining the since=0 sentinel and the recommended pattern of feeding the returned highest version back next time, which is not in the 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?

The description uses a specific verb ('Track') and a well-defined resource ('changes since a version'), then states the concrete output shape ('returns key -> version for every item, collection, or search modified'). This is distinctive enough to separate it from list/delete/update sibling tools.

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?

It gives an explicit usage pattern: 'Use since=0 (or omit) for everything, and feed the returned highest version back next time.' It does not name alternatives, but no sibling exposes change tracking, so this is clear context rather than a gap.

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

zotero_list_collection_itemsA

List the top-level items (works) in a collection, with key, type, title, and date. Use to review a collection's contents before moving items in or out. Child attachments/notes are not listed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum items to return (default 50).
collection_keyYesCollection key from zotero_list_collections.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that only top-level items are returned and that child attachments/notes are excluded. It also implies a read-only review operation. It stops short of describing sorting or pagination behavior, but for a list operation the disclosed scope is meaningful.

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?

Two concise sentences, front-loaded with the action and resource, followed by a brief usage note and a key exclusion. Every sentence earns its place and there is no redundant 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?

This is a low-complexity list operation with a rich schema and an output schema present. The description covers the essential scope, use case, and important exclusion. Minor gaps like sorting or pagination behavior do not undermine correct invocation for the primary use case.

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%, so the schema already documents both parameters: collection_key and limit. The description adds no new parameter semantics beyond confirming the collection-key origin is known from zotero_list_collections, which appears in the schema anyway.

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 states a specific verb and resource: 'List the top-level items (works) in a collection.' It also specifies the returned fields (key, type, title, date) and explicitly excludes child attachments/notes, which distinguishes it from broader item-list or search tools.

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?

The description gives a clear usage context: 'Use to review a collection's contents before moving items in or out.' It does not explicitly name alternatives or state when not to use it, but the intended scenario is clear enough to guide tool selection.

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

zotero_list_collectionsA

List all collections (folders) in the Zotero library as a tree, with each collection's key, name, parent, and item count. Use these keys with the other write tools to organize your library.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description itself must carry behavioral disclosure. 'List all collections... as a tree' conveys a non-destructive, hierarchical read operation, and 'all collections' scopes the result set without filtering or pagination. It does not mention ordering or trash/group scope, but for a parameterless list the essential behavioral traits are present.

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?

Two concise sentences: the first front-loads the operation, output shape, and fields, while the second adds one practical next step. Every word earns its place, with no repetition of the tool name or filler.

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?

An output schema exists, so return-value details need no elaboration, and the description covers the tool's purpose and output shape well. It also provides the key linkage that returned keys are used by write tools. A brief note on scope exclusions (e.g., trash or group collections) would add even more completeness.

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?

The tool has zero parameters and the schema properties are empty, so there is nothing for the description to explain. The phrase 'all collections' appropriately confirms that no filtering inputs exist, matching the baseline for a zero-parameter tool.

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 'List all collections (folders) in the Zotero library as a tree,' which names a specific verb, resource, and output structure. It also lists the exact returned fields (key, name, parent, item count), clearly distinguishing it from siblings that operate on individual collections or items.

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?

The sentence 'Use these keys with the other write tools to organize your library' explicitly connects this read-only listing to downstream write tools, which is practical usage guidance. It does not enumerate exclusions such as when to use list_collection_items instead, so it stops short of a 5.

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

zotero_list_groupsA

List the Zotero group libraries the logged-in user belongs to (read-only metadata; group CONTENTS are maintained by the server, not locally).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/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 behavioral disclosure. It explicitly states the operation is read-only, exposes that only metadata is returned, and clarifies that group contents are server-managed rather than local, giving an agent a good sense of scope and side effects.

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 a single sentence that is front-loaded with the core action and resource, then adds a concise clarifying parenthetical. Every part of the sentence earns its place.

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 a zero-parameter tool with an output schema available, this description is fully sufficient. It specifies the exact resource, scope, and read-only nature, and there is no missing information an agent would need before invoking it.

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?

The tool has zero parameters, so there is nothing additional to document. The description adds relevant context about scope (logged-in user's groups) and read-only metadata, which is more than the empty schema can convey.

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 and resource: 'List the Zotero group libraries the logged-in user belongs to.' It clearly identifies the tool as returning group library metadata, distinguishing it from sibling listing tools like zotero_list_collections and zotero_list_collection_items.

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?

The description provides clear context about when to use this tool: listing group libraries for the logged-in user. It also implicitly warns that this is metadata-only and not for group contents, which helps an agent avoid using it when item-level data is needed, though it does not explicitly name alternative tools.

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

zotero_list_settingsA

List all library settings stored in Zotero, as JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. It states that output is JSON and the verb 'List' implies a read-only operation, but it does not explicitly confirm zero side effects or clarify what counts as 'settings.' This is minimally adequate but not rich.

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 a single sentence that is front-loaded with the action and resource, with no filler or redundant elaboration. Every word contributes to understanding the tool's function.

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?

With zero parameters and an output schema present, the description plus structured context is sufficient for an agent to invoke the tool correctly. There are no missing inputs, and the output format is already stated as JSON.

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?

The tool has zero parameters and the schema is empty, so there is nothing for the description to add. The baseline of 4 applies because no parameter documentation is needed.

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 the specific verb 'List' and identifies the exact resource: 'all library settings stored in Zotero.' This clearly distinguishes the tool from siblings such as zotero_set_setting and other list tools like zotero_list_collections or zotero_list_tags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied by the verb and subject—this tool retrieves settings—but there is no explicit guidance about when to use it versus alternatives like zotero_set_setting or other listing tools. No exclusions or when-not-to-use conditions are provided.

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

zotero_list_tagsA

List tags used across the library, with how many items carry each. Use 'prefix' to list only tags starting with a string.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum tags to return (default 100).
prefixNoOnly tags starting with this string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the behavioral disclosure. It discloses the scope (across the library), the aggregate count behavior, and implies a read-only operation through 'List'. It does not mention ordering or edge cases, but for this simple list operation that is a minor gap.

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 two concise sentences with no filler. The first sentence states the core function and output; the second provides the practical filtering instruction. Every word earns its place.

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?

For a simple read-only list tool, the description, combined with a fully documented input schema and an output schema, gives an agent sufficient information to invoke the tool correctly. Adding ordering details or an explicit read-only trait would improve it slightly, but nothing essential is missing.

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%, so both 'limit' and 'prefix' are already documented in the schema. The description only restates the prefix filtering behavior without adding new semantic meaning, so it meets the baseline but does not exceed it.

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 clearly states the action (List) and the resource (tags used across the library), and adds a distinguishing behavior: it reports how many items carry each tag. This separates it from sibling tools like zotero_delete_tag, which perform a different 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?

The description gives clear context for when to use this tool: to enumerate tags across the library and see their usage counts. It also instructs on the prefix filter. It does not explicitly name alternatives, but no competing list-tags sibling exists, so the selection is unambiguous.

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

zotero_list_trashA

List items currently in Zotero's trash (deleted but recoverable).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum items to return (default 50).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden of behavioral disclosure. The word 'List' indicates a read-only operation, and the parenthetical 'deleted but recoverable' adds useful semantic context about the items. It does not mention ordering or side effects, but neither is necessary for a simple list 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?

A single, front-loaded sentence states the action, target, and key semantic nuance without any filler. Every word earns its place.

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 simple list operation with one optional parameter and an output schema, the description provides enough information for correct invocation. The parenthetical about recoverability is especially useful and makes the tool's purpose clear in context.

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?

The only parameter, limit, is fully described in the schema with its default value, so schema coverage is 100%. The description adds no additional parameter-level meaning, which is acceptable and matches the baseline of 3.

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 ('List') with a precise resource ('items currently in Zotero's trash') and clarifies that these are 'deleted but recoverable.' This clearly distinguishes it from sibling tools like zotero_search_items or zotero_delete_items.

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?

The description clearly indicates this tool is for viewing trashed, recoverable items. It does not explicitly name alternatives or when not to use it, but the context is unambiguous enough for an agent to select it appropriately.

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

zotero_remove_items_from_collectionA

Remove one or more items from a collection. This only takes them out of that folder; the items stay in the library and in any other collections they belong to.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keysYesItem keys to remove.
collection_keyYesCollection key to remove items from.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the key safety-relevant behavior: this operation does not delete items, only removes them from one collection while preserving them elsewhere. This meaningfully prevents an agent from confusing removal with deletion.

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?

Two short sentences are entirely sufficient. The primary action is front-loaded, and the crucial clarification about non-deletion is placed immediately after.

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?

For a two-parameter operation with an output schema, the description covers the essential behavior and edge case semantics. It could be slightly stronger by naming the deletion alternative, but nothing critical is missing.

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?

The schema already documents both parameters with 100% coverage, so the description adds little parameter-level meaning. It does not elaborate on formats or edge cases, but the baseline of 3 applies because the schema handles the heavy lifting.

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 clearly identifies the action ('Remove one or more items from a collection') and the resource scope (collection, not the library). This distinguishes it from sibling tools like zotero_delete_items and zotero_delete_collection.

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?

The description provides clear context for when to use the tool by explicitly stating the non-destructive nature: items are only removed from the folder, not deleted. It implies the boundary against deletion but does not explicitly name alternative tools such as zotero_delete_items.

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

zotero_restore_itemsA

Restore items from the trash back into the library.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keysYesTrashed item keys to restore.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description bears the responsibility for disclosing behavior. It clearly states the effect (items move from trash to library), but it does not mention edge cases such as behavior for non-trashed keys, partial success, or any side effects. The core behavior is disclosed, but with no annotations there are minor transparency gaps.

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?

A single, front-loaded sentence states the operation and its scope with no wasted words. Every word earns its place.

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?

The tool is simple, has one fully documented parameter, and an output schema exists. The description plus schema fully cover what an agent needs to invoke this tool correctly. No significant contextual information is missing.

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?

The input schema has 100% description coverage: item_keys is described as 'Trashed item keys to restore.' The tool description adds no additional parameter meaning, but the schema alone sufficiently documents the required parameter, so the baseline of 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?

States a specific verb ('Restore') and resource ('items from the trash back into the library'). This clearly distinguishes it from the related delete/empty operations among the siblings, such as zotero_delete_items and zotero_empty_trash.

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?

The phrase 'from the trash back into the library' provides clear context for when to use the tool: for trashed items that should be recovered. It does not explicitly name alternatives or exclusions, but for a simple restore operation the usage context is adequately clear.

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

zotero_search_itemsA

Search for items in your Zotero library. Returns a summary of each match; look up individual results with zotero_item_metadata or zotero_item_fulltext.

Choosing a query mode:

  • 'titleCreatorYear' (the default) searches titles, creator names, and years. Use it for known-item lookup, where you know roughly what the item is called or who wrote it.

  • 'everything' additionally searches abstracts, the Extra field, note text, and the full text of attachments. Use it for topic and full-text search, where the term would not appear in a title.

Words match by prefix, and space-separated words must all be present though not necessarily adjacent, so 'cybor insect' matches 'Cyborg Insect'. A hyphen separates words and switches the match to OR: 'oxygen-deprived' matches anything containing 'oxygen' or 'deprived', which is far broader than intended. Write hyphenated terms with a space to require both halves.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by tag. Use 'foo || bar' to match either tag and '-foo' to exclude one; tag names containing spaces are matched as written. Requiring two tags at once is not expressible here.
limitNoMaximum number of matches to retrieve. This caps matches rather than items, and several attachments or notes belonging to one work can each match separately, so a search can return fewer items than this number while still having more to fetch. The result header reports the total whenever that happens.
qmodeNoWhich fields to search. 'titleCreatorYear' covers titles, creator names, and years; against a local Zotero API it also matches citation keys, which the Zotero Web API does not index. 'everything' adds abstracts, the Extra field, note text, and attachment full text, so use it to find work by what is written inside the PDF rather than in its metadata. A match inside an attachment or note is returned as that child item rather than as its parent, so results routinely contain more entries than distinct works.titleCreatorYear
queryYesText to match. Words match by prefix, and every space-separated word must be present, though not necessarily as a contiguous phrase. A hyphen separates words and ORs them instead, so 'oxygen-deprived' matches items containing either half; write it with a space to require both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/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 behavioral disclosure. It explains prefix matching, AND/OR semantics, hyphen behavior, the difference between capping matches vs. items, and that attachment/note matches return child items rather than parents. This is thorough and genuinely helpful.

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 well-organized and front-loaded with the core purpose, followed by query-mode guidance and matching behavior. It is longer than strictly necessary because it restates some parameter details already present in the schema, but no section feels wasted.

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 search tool with complex matching behavior, the description covers the key operational aspects: query modes, prefix/AND/OR matching, hyphen semantics, tag filtering, limit behavior, and follow-up lookup tools. An output schema exists, so return-value details are not the description's responsibility.

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%, so the schema already documents all parameters thoroughly. The main description repeats some query semantics but does not add substantial meaning beyond the schema, meeting the baseline but not exceeding it.

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: 'Search for items in your Zotero library.' It clarifies that results are summaries and points to sibling tools for deeper retrieval, making the tool's scope and distinct role clear. It is immediately distinguishable from zotero_item_metadata and zotero_item_fulltext.

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 gives explicit guidance on when to use each query mode: titleCreatorYear for known-item lookup and everything for topic/full-text search. It also directs the agent to zotero_item_metadata or zotero_item_fulltext for individual result details, providing clear context and alternatives.

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

zotero_set_settingA

Set one library setting (a key under /settings), e.g. syncing metadata used by plugins. Overwrites the previous value.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesNew value (arbitrary JSON).
settingYesSetting name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/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 does disclose an important behavior: 'Overwrites the previous value.' However, it does not explain what happens if the setting does not exist, whether authorization is required, or whether the change is reversible. The disclosure is partial but meaningful.

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 two short sentences with no filler. It front-loads the operation, clarifies the resource scope, provides a representative use case, and states the overwrite behavior. Every sentence earns its place.

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?

For a simple two-parameter tool with a complete schema and an output schema, this description is largely sufficient. It identifies the resource, the effect, and an example. It could be more complete by mentioning how to discover valid settings or whether overwriting is the only side effect, but no critical information seems missing for basic use.

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% and both parameters have descriptions, so the baseline is 3. The description adds extra meaning by explaining that 'setting' is a key under /settings and by giving a concrete example, which helps the agent understand what kind of value is expected beyond the raw 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?

The description uses a specific verb and resource: 'Set one library setting' and clarifies it is 'a key under /settings'. The example 'syncing metadata used by plugins' makes the purpose concrete, and it is clearly distinguishable from sibling tools like zotero_list_settings and zotero_update_item_fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives some context for when this tool is relevant via the plugin-metadata example, but it does not explicitly state when to use this tool versus alternatives, nor does it mention zotero_list_settings as the way to inspect existing settings. Usage guidance is implied rather than explicit.

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

zotero_update_item_fieldsA

Update fields of an item, e.g. to fix a missing title, date, publication, or abstract, or to set tags (tags: [{'tag': 'x'}]). Pass only the fields to change; everything else is untouched. Use zotero_item_metadata first to see the current values. Collections are NOT edited here — use the dedicated collection tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesFields to change as a JSON object, e.g. {'title': 'New Title', 'date': '2024'}.
item_keyYesItem key to update.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the partial-update behavior ('Pass only the fields to change; everything else is untouched') and the tag format. It does not state reversibility, error handling, or any permission requirements, but the key mutation semantics are covered.

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 concise sentences, each earning its place: purpose with examples, the partial-update behavior, and the prerequisite plus exclusion. No filler or redundancy.

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?

For a simple two-parameter update tool with a detailed schema, the description covers purpose, partial-update semantics, tag format, a prerequisite, and an explicit exclusion of collections. It misses a note about changing item type being handled by a separate tool (zotero_change_item_type), and the tag replacement behavior is not specified, but overall it is adequate.

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?

The schema already documents both parameters reasonably well (fields with a JSON example, item_key as a string). The description adds value beyond the schema by explaining the partial-update rule and providing the exact tag format (tags: [{'tag': 'x'}]).

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 states a specific verb ('Update fields') and resource ('of an item'), with concrete examples (title, date, publication, abstract, tags). It clearly implies a single-item operation, distinguishing it from the bulk-update sibling by name and scope, and explicitly excludes collections.

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?

Provides explicit guidance to first use zotero_item_metadata to see current values, and clearly states collections are NOT edited here, directing to dedicated collection tools. However, it does not explicitly mention when to use this vs. zotero_bulk_update_fields for multiple items.

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

zotero_update_noteA

Replace a note's content with new HTML. The old content is overwritten; fetch it first with zotero_item_metadata if you need to edit rather than replace.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_keyYesNote item key.
note_htmlYesNew note content as HTML.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It explicitly warns that 'the old content is overwritten,' which is the critical side effect of this mutation tool, and adds a practical mitigation by suggesting a fetch-first workflow. It does not cover permission or reversibility details, but the core destructive behavior is disclosed.

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?

Two sentences, front-loaded with the core action, followed by an important caution and alternative. Every sentence earns its place and there is no filler or redundant boilerplate.

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?

The tool is simple with two fully described parameters and an output schema available. The description covers the action, the main destructive consequence, and how to avoid data loss when editing. Nothing essential is missing for an agent to invoke this tool correctly.

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 the baseline is 3. The description adds meaning beyond the schema by clarifying that note_html is the entire replacement content—not a partial update—and that note_key refers to an existing note that will have its content overwritten. This reinforces the replace semantics.

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 and resource: 'Replace a note's content with new HTML.' This clearly identifies the action and target, and distinguishes it from siblings like create_note or update_item_fields by focusing on overwriting a note's HTML content.

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?

The description provides clear context: use this tool to replace, and if you need to edit rather than replace, fetch the existing content first with zotero_item_metadata. It names an alternative workflow explicitly, though it does not enumerate exclusions for all sibling tools.

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

zotero_upload_fileA

Attach a local file to an item: creates a stored-file (imported file) child attachment and uploads the file into it. If you pass an attachment key instead, the file is uploaded to that existing attachment (fails if one is already stored). Supported for imported-file attachments, not linked URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoAttachment title; defaults to the file name.
filenameNoName to store it under; defaults to the file's name.
filepathYesAbsolute path of the file on disk.
item_keyYesParent item key (creates a new child attachment) or existing attachment key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/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 behavioral disclosure. It clearly states that the operation creates a new child attachment, uploads the file, and fails if the attachment already has a stored file. This is meaningful and goes beyond merely saying 'upload file'. It does not discuss permissions or reversibility, but for this tool the core side effects and failure condition are disclosed.

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?

Two sentences deliver the essential behavior, both invocation modes, the failure case, and the scope restriction. The information is front-loaded and every clause earns its place with no redundancy or filler.

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?

Given the 4 parameters, 100% schema coverage, and an output schema, the description is nearly complete. It clarifies the item_key semantics, the failure mode, and the supported vs. unsupported attachment types. It could mention that the filepath must be locally accessible, but this is minor because the schema already calls it an absolute path and the core usage context is well covered.

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 the baseline is 3. The description adds real value by explaining that item_key can be either a parent item key or an existing attachment key, and that the latter triggers a different code path with a failure condition. It also clarifies the supported attachment type, which gives the agent a better mental model than the raw schema alone.

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 and resource: 'Attach a local file to an item' and clarifies the exact behavior of creating a stored-file child attachment and uploading the file. It also distinguishes the two invocation modes (parent item key vs. existing attachment key), which makes the purpose unambiguous and differentiates it from sibling tools like zotero_download_file and zotero_create_item.

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?

The description provides clear context for when the tool applies: it is supported for imported-file attachments and explicitly excludes linked URLs. It also explains how passing an attachment key changes the behavior and warns that it fails if a file is already stored. It does not name a specific alternative tool for linked-URL cases, so it stops short of full 5-level guidance.

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

zotero_write_fulltextA

Write (or replace) an attachment's indexed full-text content so zotero_item_fulltext and full-text search can read it. Use for attachments whose text Zotero could not extract (scans, exotic formats) — pass the text you extracted yourself.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe full text content to index.
item_keyYesAttachment key, or parent item key to auto-select its best attachment.
indexed_pagesNoNumber of pages indexed; estimated from form feeds if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses that the operation is a mutation ('Write (or replace)') and describes the effect ('so zotero_item_fulltext and full-text search can read it'). It does not discuss permissions or reversibility beyond 'replace', but the core behavioral context is present.

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?

Two sentences, front-loaded with the action, and no filler. The second sentence provides necessary situational context without redundancy.

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?

The description, combined with complete parameter schemas and an output schema, gives an agent enough to invoke the tool correctly and understand why it exists. Minor gaps exist—permissions, side effects on existing fulltext, and reversibility—but the core behavior and trigger are well covered.

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%, with each parameter (content, item_key, indexed_pages) already having meaningful descriptions. The tool description adds no parameter-level information, so the baseline of 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?

Description explicitly states 'Write (or replace) an attachment's indexed full-text content', naming the specific verb, resource, and scope. It distinguishes the tool from siblings like zotero_upload_file (file upload) and zotero_item_fulltext (reader/consumer) by targeting the search-index text rather than the source file.

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?

Provides an explicit trigger condition: 'Use for attachments whose text Zotero could not extract (scans, exotic formats)'. It also tells the agent to pass extracted text. It does not mention exclusions or name alternatives, but the stated use case is clear enough for selection.

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

TDQS

A3.9/5.0
Disambiguation4/5

Tools are organized around clear resource types (collections, items, notes, saved searches, tags, trash), and descriptions clarify edge cases like delete vs trash. A few near-homophones—item_fulltext vs write_fulltext, delete_collection vs delete_items—require careful reading but do not genuinely overlap.

Naming Consistency4/5

The zotero_ prefix and verb_noun pattern dominate, with consistent create/update/delete/list pairs across resources. However, zotero_item_metadata and zotero_item_fulltext drop the verb, and write_fulltext reads more like a noun compound, so the pattern is not uniform.

Tool Count3/5

33 tools is on the high side for an MCP server, though the number is justified by the breadth of Zotero's domain—items, collections, notes, annotations, saved searches, files, tags, trash, settings, groups, and change tracking. Still, it feels more like a full SDK than a curated tool surface.

Completeness3/5

Core CRUD/lifecycle coverage is strong, but there are notable gaps: saved searches cannot be listed, collections cannot be updated or renamed, and annotations are create-only with no update/delete path. These create minor dead ends for agents despite workarounds via item deletion and field updates.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/ozbayenes123-ops/zotero-mcp-local-write'

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