Reference · v0.13.1

Tools, settings, and commands

Everything the MCP server and zotero-cli offer. Tools marked with a group name only appear when that group is turned on.

Tool groups

An MCP server sends every tool it offers with every request, so each tool uses up context. Optional tools are grouped, and ZOTERO_MCP_TOOLSETS sets which groups are on. A tool that’s turned off doesn’t exist for that session, so the model can’t call it.

ValueEffect
unsetDefault: core tools plus libraries, search-admin, pdf-geometry
allEvery tool
noneCore tools only
scite,feedsCore plus the named groups
all,-sciteEverything except the named groups
GroupDefaultContents
librariesonList and switch between personal and group libraries
search-adminonBuild and inspect the semantic search index
pdf-geometryonPage layout and PDF outline
sciteoffScite citation counts and retraction checks
duplicatesoffFind and merge duplicate items
discoveryoffCitation graph lookup and PDF coverage
feedsoffZotero RSS feed subscriptions
relationsoffRelated-item links between items
chatgpt-connectorautosearch and fetch for ChatGPT deep research. On over HTTP, off over stdio.
Claude Desktop / Claude Code env
"env": {
  "ZOTERO_LOCAL": "true",
  "ZOTERO_MCP_TOOLSETS": "scite,duplicates"
}

Read

zotero_get_item_metadataAn item’s metadata as markdown, json, or bibtex
zotero_get_item_fulltextExtracted text of the item’s main attachment, and says when the text was cut short
zotero_read_pdf_pagesRead specific pages of a PDF as text, with garbled math, figures and tables flagged, or as page images (format='image')
zotero_get_pdf_outlinepdf-geometryA PDF’s table of contents, with page numbers
zotero_get_item_childrenAttachments and notes for one item or many
zotero_get_attachment_pathWhere an item’s attachment files are on disk (local mode)
zotero_export_bibliographyFormatted bibliography or in-text citations, from Zotero’s citation engine

Annotations & notes

zotero_get_annotationsHighlights and comments on PDF and EPUB attachments, as text or json
zotero_create_annotationHighlight text (text=), draw a box over a figure or table (rect=), or pin a sticky note (note=)
zotero_update_annotationEdit an annotation’s text, comment, color, or tags
zotero_delete_annotationPermanently delete an annotation (Zotero’s reader cannot remove trashed ones)
zotero_get_page_layoutpdf-geometryFind figures, tables and equations on a page, with box coordinates to pass to rect=
zotero_get_notesList notes, or search note and annotation text with query
zotero_manage_noteCreate, update, or trash a note
zotero_synthesize_annotationsGather highlights, comments, and notes into a per-paper summary

Add & edit

zotero_add_itemAdd from a DOI, URL, ISBN, BibTeX, CSL JSON, or a local file. It detects which one it was given, and accepts a list of DOIs, URLs, or ISBNs.
zotero_attach_fileAttach a local file or PDF URL to an existing item
zotero_update_itemUpdate metadata by passing a fields object
zotero_batch_updateAdd or remove tags and Extra fields on many items in one call
zotero_set_item_parentSet, change, or clear an item’s parent
zotero_delete_itemMove an item to the Trash
zotero_write_capabilitiesShow which way writes can go (local, hybrid, web, or none) and what to do if none
zotero_authorize_local_writesAsk Zotero 10+ for local write permission (opens a dialog in Zotero)

The add tools take collections as keys, names, or parent/child paths, and check them before creating anything. if_exists sets what happens when the item is already in your library: "duplicate" always creates a new one, "file" reuses the existing item, and "skip" leaves it alone. zotero-cli add defaults to file.

Collections & libraries

zotero_get_collectionsAll collections as a tree, with their keys
zotero_get_collection_itemsItems in a collection, optionally including subcollections
zotero_search_collectionsFind collections by name
zotero_create_collectionCreate a collection or subcollection
zotero_update_collectionRename a collection or move it under another parent
zotero_delete_collectionDelete a collection. Its items stay in the library.
zotero_set_item_collectionsAdd items to collections, or remove them
zotero_get_tagsAll tags in the active library
zotero_list_librarieslibrariesYour personal library, group libraries, and feeds (local mode)
zotero_switch_librarylibrariesChoose which library later tool calls use

Optional groups

scite_enrich_itemsciteSupporting, contrasting, and mentioning citation counts for one paper, plus editorial notices
scite_enrich_searchsciteLibrary search results with Scite counts and notices
scite_check_retractionssciteList items with retractions, corrections, or expressions of concern
zotero_find_duplicatesduplicatesFind duplicates by title and/or DOI
zotero_merge_duplicatesduplicatesMerge duplicates, with a preview first. auto=True merges all same-DOI groups after confirmation.
zotero_find_related_papersdiscoveryPapers a work cites, or that cite it, from OpenAlex
zotero_library_coveragediscoveryWhich items have a PDF and which don’t
zotero_list_feedsfeedsRSS feed subscriptions in the Zotero app
zotero_get_feed_itemsfeedsRecent items from one feed
zotero_get_item_relatedrelationsRelated items for an item
zotero_add_item_relationrelationsLink two items as related (dc:relation or owl:sameAs)
zotero_remove_item_relationrelationsRemove a related-item link
search, fetchchatgpt-connectorThe two tools ChatGPT deep research requires

Environment variables

Connection

ZOTERO_LOCALtrue to use the Zotero app on this computer
ZOTERO_API_KEYZotero web API key, for web or hybrid mode
ZOTERO_LIBRARY_IDUser or group library ID
ZOTERO_LIBRARY_TYPEuser (default) or group
ZOTERO_LOCAL_API_KEYLocal write key (Zotero 10+). Usually set for you by authorize-local.
ZOTERO_LOCAL_SERVER_IDWhich local Zotero database the key belongs to (found automatically)
ZOTERO_LOCAL_WRITEauto (default), or false to always write through the web API
ZOTERO_WEBDAV_URL, _USERNAME, _PASSWORDDownload attachments from WebDAV in web mode

Reading and tools

ZOTERO_BACKENDapi to read through the Zotero API even in local mode. sqlite forces SQLite.
ZOTERO_DB_PATHPath to zotero.sqlite, if it isn’t found automatically
ZOTERO_MCP_DB_SNAPSHOT_MIN_INTERVALMinimum seconds between database snapshot refreshes (default 5)
ZOTERO_MCP_TOOLSETSWhich optional tool groups are on (see Tool groups)
ZOTERO_MCP_SCHEMA_REFRESH0 turns off the weekly refresh of Zotero’s item type list

Semantic search

ZOTERO_EMBEDDING_MODELdefault, openai, gemini, or ollama
OPENAI_API_KEY, OPENAI_EMBEDDING_MODEL, OPENAI_BASE_URLOpenAI embeddings, or any OpenAI-compatible API
GEMINI_API_KEY, GEMINI_EMBEDDING_MODEL, GEMINI_BASE_URLGemini embeddings
OLLAMA_EMBEDDING_MODEL, OLLAMA_BASE_URLOllama embeddings (default server http://localhost:11434)

zotero-mcp

Runs the server, configures it, and maintains it.

serve [--transport stdio|streamable-http|sse]Run the MCP server. sse is deprecated.
setupInteractive setup, and writes the Claude Desktop config
setup-infoPrint the install path and the config other clients need
authorize-local [--status|--revoke|--print]Get or manage the local write key
install-skill [--target|--list-targets|--force]Install the zotero-cli agent skill
update-db [--fulltext] [--batch] [--force-rebuild]Build or update the semantic index
db-status, db-inspectShow index status, or inspect indexed documents
update [--check-only]Update to the latest release
versionPrint the installed version

zotero-cli

Your library from the terminal, with no AI assistant needed. It uses the same config as the server. Add --json to any command for one machine-readable object per call.

# search and read
$ zotero-cli search "machine learning"
$ zotero-cli search --mode semantic "attention mechanisms"
$ zotero-cli get metadata ABC123 --format bibtex
$ zotero-cli outline ABC123
$ zotero-cli read ABC123 --start-page 42 --end-page 55
$ zotero-cli read ABC123 --start-page 44 --format image

# notes and annotations
$ zotero-cli notes create --item-key ABC123 --text "My note" --tags "idea"
$ zotero-cli ann list --item-key ABC123 --format json

# add, organize, export
$ zotero-cli add doi 10.1038/s41586-021-03819-2 -c "Reading List"
$ zotero-cli add bibtex --file refs.bib
$ zotero-cli batch --query "machine learning" --add-tags survey --limit 100
$ zotero-cli export --collection COLL01 --format bibtex

JSON output

Every result has the same wrapper, and it always goes to stdout. On success it holds data. On failure it holds error.message and a stable error.code. Run zotero-cli --json-schema for the full format.

$ zotero-cli --json search "attention" --limit 5 --detail keys_only
{"ok": true, "command": "search", "schema": 1, "data": {"count": 5, "items": [...]}}

The CLI guide has the full command reference.