io.github.oscardvs/zoteus
NPM · @OSCARDVS/ZOTEUS · 2 COMPONENTS · SCANNED AUG 3
The everything Zotero MCP server — Web API v3 + local API, safe writes, citations, search.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security88
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (109 of 110), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (109 of 110), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to oscardvs/zoteus). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 13 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 5576 tokens (~185/item across 30 items; 28 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage84
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 51% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @oscardvs/zoteus
claude mcp add oscardvs-zoteus -- npx -y @oscardvs/zoteus
codex mcp add oscardvs-zoteus -- npx -y @oscardvs/zoteus
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"oscardvs-zoteus": {
"type": "local",
"command": [
"npx",
"-y",
"@oscardvs/zoteus"
],
"enabled": true
}
}
} openclaw mcp add oscardvs-zoteus --command npx --arg -y --arg @oscardvs/zoteus
mcp_servers:
oscardvs-zoteus:
command: "npx"
args: ["-y", "@oscardvs/zoteus"] {
"mcpServers": {
"oscardvs-zoteus": {
"command": "npx",
"args": [
"-y",
"@oscardvs/zoteus"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +51
- Install scripts: unverified → pass ▲ security
- Provenance: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- The attested source repository moved: oscardvs/zoteus security
- Security disclosure: fail → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → good ▲ functional
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Licence: MIT functional
- 31 Jul 26 +17
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −42
- Malware scan: pass → unverified ▼ security
- Schema quality: 100 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- 27 Jul 26 48
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/@oscardvs/[email protected]
Provenance verified
Ecosystem: npm · Outcome: verified
Reason: verified
- Source repo:
- oscardvs/zoteus
- Certificate issuer:
- https://token.actions.githubusercontent.com
- Certificate SAN:
- https://github.com/oscardvs/zoteus/.github/workflows/deploy.yml@refs/tags/v1.0.0
- Rekor log index:
- 1680881084
- Predicate type:
- https://slsa.dev/provenance/v1
- Subject digest:
- sha512:a047cc012969b4e597e3d40a368afa0049b230b6d2ca52017281b75b73412119483c45d97a3b14edac106c2ea5f80aa24b07b3314d48a29b9518a8173
- Discovery method:
- attestation_endpoint
Dependencies 109 packages
109 packages in the resolved dependency tree · 107 deprecated · 30 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
search_tools Discover Zotero tools ~140
Discover the available Zotero tools by keyword — useful for progressive disclosure when you do not want to load every tool definition up front (the code-execution-with-MCP pattern). Pass an optional `query` (matched against tool names, titles, and descriptions) and `detail` ("names" or "descriptions", default "descriptions"). Returns the matching `zotero_*` tools so you can pick the right one for a task. With no query, returns the full catalog.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | — | How much to return (default "descriptions"). |
| query | string | — | Keyword to match against tool names/titles/descriptions. |
No output schema declared.
No examples provided.
zotero_attachment Zotero attachments (files) ~246
Upload, download, or inspect attachment files. `action`: "upload" stores a local file as a Zotero attachment using the full File Storage protocol (provide `file_path`; optional `parent_item` to attach it under an item, `title`, `content_type`) and returns the new attachment key; "download" fetches an attachment's file to a local path (provide `item_key`; optional `save_path`, default under the Zoteus data dir) and returns the path and byte count; "info" returns an attachment item's metadata. File bytes are written to / read from disk — they are never streamed through the conversation. Upload/download use the cloud Web API and your file-storage quota.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| content_type | string | — | — |
| file_path | string | — | Local file to upload. |
| item_key | string | — | Attachment item key (download/info). |
| library_id | integer | — | — |
| library_type | string | — | — |
| parent_item | string | — | Parent item key to attach under (upload). |
| save_path | string | — | Where to write the downloaded file. |
| title | string | — | — |
No output schema declared.
No examples provided.
zotero_bibliography Server-rendered bibliography (library items) ~179
Produce a formatted bibliography for items already in a Zotero library, rendered server-side by Zotero in a CSL style. Provide `item_keys` and optionally `style` (name or CSL id; Zotero default is chicago-note-bibliography), `locale`, and `linkwrap`. Returns XHTML. Note: this endpoint is item-only and capped at 150 items. For arbitrary CSL-JSON or items not in the library, use zotero_format_bibliography instead.
| Name | Type | Req | Description |
|---|---|---|---|
| item_keys | array | yes | Library item keys (max 150). |
| library_id | integer | — | — |
| library_type | string | — | — |
| linkwrap | boolean | — | Wrap URLs/DOIs in links. |
| locale | string | — | Locale (e.g. en-US). |
| style | string | — | Style name or CSL id. |
No output schema declared.
No examples provided.
zotero_create_items Create or update Zotero items ~225
Create new items or update existing ones in a single batch (the server auto-chunks into groups of 50). Each entry in `items` is a Zotero item-data object: include `itemType` plus its valid fields, `creators` (each `{creatorType, firstName, lastName}` or `{creatorType, name}`), `tags` (`[{tag}]`), and `collections` (array of collection keys). To UPDATE an existing item, also include its `key` and current `version`; to CREATE, omit both. Every item is validated against the Zotero schema before anything is sent — if any item is invalid, nothing is written and the problems are returned. Use zotero_schema to discover valid fields/creator types for an itemType. Writes go to the cloud Web API (requires ZOTERO_API_KEY).
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | Array of Zotero item-data objects (itemType + fields; include key+version to update). |
| library_id | integer | — | — |
| library_type | string | — | — |
No output schema declared.
No examples provided.
zotero_delete_items Permanently delete Zotero items ~143
PERMANENTLY and IRREVERSIBLY delete items by key (this purges them — it is NOT the trash). Prefer zotero_trash_items, which is reversible. This tool is disabled unless the server is started with ZOTEUS_ALLOW_DELETE=true, and additionally requires `confirm: true` on every call. The current library version is used as a precondition; the operation auto-chunks to 50 keys per request.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | — | Must be true to proceed with permanent deletion. |
| item_keys | array | yes | Item keys to permanently delete. |
| library_id | integer | — | — |
| library_type | string | — | — |
No output schema declared.
No examples provided.
zotero_export Export Zotero items ~259
Export items in a bibliographic format and return the raw text. Choose `format` (bibtex, biblatex, better-biblatex, ris, csljson, csv, mods, tei, coins, rdf_*, refer, wikipedia, bookmarks). `biblatex` is Zotero's STOCK translator via the cloud Web API; BBT-specific options (citation-key generation, sentence-case, biblatexExtendedNameFormat, unicode→LaTeX) are NOT available there. `better-biblatex` uses the local desktop Better BibTeX plugin (your configured BBT export options apply) and is only available when desktop Zotero + BBT are running; it degrades to built-in `biblatex` otherwise. Narrow with `item_keys`, `collection_key`, `q`, or `item_type`. A `limit` (default 50) is always applied. For styled human bibliographies use the bibliography tools.
| Name | Type | Req | Description |
|---|---|---|---|
| collection_key | string | — | — |
| format | string | yes | — |
| item_keys | array | — | — |
| item_type | string | — | — |
| library_id | integer | — | — |
| library_type | string | — | — |
| limit | integer | — | — |
| q | string | — | — |
No output schema declared.
No examples provided.
zotero_format_bibliography Format a bibliography (citeproc / any CSL style) ~244
Render a formatted bibliography in any CSL style using citeproc-js — no Zotero library write required. Provide either `items` (an array of CSL-JSON objects, e.g. from zotero_import or external metadata) or `item_keys` (library items, which are exported to CSL-JSON first). Choose `style` (a name like "APA 7th" or a CSL id; default "apa"), `locale` (default "en-US"), and `format` (html/text/rtf; default html). The formatted bibliography text is returned. Use this for arbitrary items or styles; for items already in the library you can also use zotero_bibliography (server-rendered).
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | — | Output format (default html). |
| item_keys | array | — | Library item keys (exported to CSL-JSON). |
| items | array | — | CSL-JSON items to format. |
| library_id | integer | — | — |
| library_type | string | — | — |
| locale | string | — | Locale (default "en-US"). |
| style | string | — | Style name or CSL id (default "apa"). |
No output schema declared.
No examples provided.
zotero_fulltext Attachment full-text ~216
Read, set, or track an attachment's extracted full text. `action`: "get" returns the indexed text content plus indexing stats for an attachment item (only attachment items have full text; returns found:false if none); "set" stores extracted text for an attachment (provide `content` and the indexing counts); "since" returns the map of attachment keys whose full text changed after a given library `version` (useful for incremental indexing). Only attachment items support full text. "set" writes via the cloud Web API.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| content | string | — | Extracted text (set). |
| indexed_chars | integer | — | — |
| indexed_pages | integer | — | — |
| item_key | string | — | Attachment item key (get/set). |
| library_id | integer | — | — |
| library_type | string | — | — |
| since | integer | — | Library version for "since" (default 0). |
| total_chars | integer | — | — |
| total_pages | integer | — | — |
No output schema declared.
No examples provided.
zotero_get_fulltext Get attachment full text / passages (read-only) ~293
Retrieve an item's PDF text for grounding. Pass a parent `item_key` (its best PDF attachment is resolved automatically) or an attachment key. With `query`, returns the top relevant passages with locators (char offsets, nearest section, and a page); with `page_range` (e.g. "3-7"), returns that span; with neither, returns a truncated head. Page numbers are an estimate (pageApprox) unless `precise_pages:true`, which re-extracts the PDF for exact pages when possible (otherwise it degrades to approximate with a notice). Read-only; cloud full text. Use this to cite a claim with a page after finding an item via zotero_search_items / zotero_semantic_search.
| Name | Type | Req | Description |
|---|---|---|---|
| item_key | string | yes | Parent item key or attachment key. |
| library_id | integer | — | — |
| library_type | string | — | — |
| max_chars | integer | — | Best-effort cap on total returned text (default 12000); a single passage is never split, so one passage may slightly exceed it. |
| max_passages | integer | — | Max passages (default 5). |
| page_range | string | — | Page span like "3-7" (1-based, inclusive). |
| precise_pages | boolean | — | Re-extract the PDF for exact page numbers. |
| query | string | — | Return top passages relevant to this query. |
No output schema declared.
No examples provided.
zotero_get_item Get a Zotero item ~243
Fetch one item by its key, returning the full item record (itemType, all bibliographic fields, creators, tags, collections, relations, version). Optionally set `include_children` to also return the item's child notes and attachments. Use `include` to additionally request rendered output: "bib" (formatted bibliography entry), "citation" (inline citation), or "csljson" (CSL-JSON for downstream formatting); combine with `style` (a CSL style id, default chicago-note-bibliography) and `locale`. The returned `version` is required if you later update or delete this item.
| Name | Type | Req | Description |
|---|---|---|---|
| include | string | — | Extra rendered content: "bib", "citation", or "csljson". |
| include_children | boolean | — | Also fetch child notes/attachments. |
| item_key | string | yes | The 8-character Zotero item key. |
| library_id | integer | — | — |
| library_type | string | — | — |
| locale | string | — | Locale for bib/citation, e.g. en-US. |
| style | string | — | CSL style id for bib/citation (default chicago-note-bibliography). |
No output schema declared.
No examples provided.
zotero_groups List Zotero groups ~71
List the group libraries the current API key can access, with each group's id, name, type, item count, and edit permissions. Use a returned group id with the `library_id`/`library_type:"group"` parameters of other tools to operate on that group library. Requires a cloud API key.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
zotero_import Import items by identifier or URL ~235
Resolve bibliographic metadata from an identifier or web page and optionally save it to your library. `action: "by_identifier"` resolves a DOI, ISBN, PMID, arXiv id, or ADS bibcode (set `identifier`); `action: "by_url"` scrapes a web page (set `url`) and may return multiple choices to pick from. Set `save_to_library:true` (and optionally `collection_key`) to persist the resolved items (requires a cloud API key); otherwise the resolved metadata is returned without saving. Requires a reachable Zotero translation-server (configurable via ZOTEUS_TRANSLATION_SERVER_URL); if none is running, this returns setup instructions.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| collection_key | string | — | Collection to add saved items to. |
| identifier | string | — | DOI / ISBN / PMID / arXiv id / ADS bibcode. |
| library_id | integer | — | — |
| library_type | string | — | — |
| save_to_library | boolean | — | Persist the resolved items (needs a cloud key). |
| url | string | — | Web page URL to scrape. |
No output schema declared.
No examples provided.
zotero_index Build the semantic search index ~162
Build, refresh, or report the status of the local hybrid-search index used by zotero_semantic_search. `action: "build"` (or "refresh") fetches the library's top-level items and indexes their text (title, abstract, creators, tags) for BM25 keyword search and — if an embedding provider is configured — vector search; the index is persisted under the Zoteus data dir. `action: "status"` reports the index size and which embedder is active (it falls back to keyword-only when no local model or embedding API is available). Run a build before semantic searching, and refresh after large library changes.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| library_id | integer | — | — |
| library_type | string | — | — |
No output schema declared.
No examples provided.
zotero_list_collections List Zotero collections (read-only) ~103
List collections in a Zotero library (key, name, parent collection key, item count). Read-only — available even in read-only mode (unlike zotero_manage_collections, which also writes). Use the keys to scope zotero_search_items (collectionKey) or zotero_tag_audit (scope.collection_keys).
| Name | Type | Req | Description |
|---|---|---|---|
| library_id | integer | — | — |
| library_type | string | — | — |
| top | boolean | — | Only top-level collections. |
No output schema declared.
No examples provided.
zotero_list_tags List Zotero tags (read-only) ~116
List tags in a Zotero library with their usage count and whether each was auto-applied by Zotero. Optional `q` substring filter and `limit`. Read-only — available even when the connector runs in read-only mode (unlike zotero_manage_tags, which also writes). For taxonomy hygiene use zotero_tag_audit.
| Name | Type | Req | Description |
|---|---|---|---|
| library_id | integer | — | — |
| library_type | string | — | — |
| limit | integer | — | Max tags (default 100). |
| q | string | — | Substring filter. |
No output schema declared.
No examples provided.
zotero_manage_collections Manage Zotero collections ~246
List, create, rename, reparent, or delete collections, and move items into or out of a collection. Set `action` to one of: "list" (all collections with key/name/parent), "create" (needs `name`, optional `parent_collection` key — omit for top-level), "rename" (needs `collection_key` + `name`), "reparent" (needs `collection_key`; `parent_collection` key, or omit to move to top level), "delete" (needs `collection_key`), "add_items" / "remove_items" (need `collection_key` + `item_keys`; collection membership lives on each item). All actions except "list" write to the cloud Web API.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| collection_key | string | — | Target collection key (all actions except list/create). |
| item_keys | array | — | Item keys (add_items/remove_items). |
| library_id | integer | — | — |
| library_type | string | — | — |
| name | string | — | Collection name (create/rename). |
| parent_collection | string | — | Parent collection key; omit for top-level. |
No output schema declared.
No examples provided.
zotero_manage_tags Manage Zotero tags ~168
List tags, or add/remove tags on items. Set `action` to "list" (returns library tags; supports `q` substring filter), "add" (add `tags` to each of `item_keys`), or "remove" (remove `tags` from each of `item_keys`). Tags are stored on the parent item's tag array, so add/remove edits the items (cloud Web API). Tag names are case-sensitive.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| item_keys | array | — | Items to modify (add/remove). |
| library_id | integer | — | — |
| library_type | string | — | — |
| limit | integer | — | — |
| q | string | — | Substring filter for list. |
| tags | array | — | Tag names to add or remove. |
No output schema declared.
No examples provided.
zotero_saved_searches Manage Zotero saved searches ~180
List, create, or delete saved-search DEFINITIONS. NOTE: the Zotero cloud Web API stores saved searches but does NOT execute them — to get the items a saved search matches, run an equivalent zotero_search_items query (or use the desktop local API when available). Set `action` to "list" (all saved searches with their conditions), "create" (needs `name` and `conditions`, each `{condition, operator, value}`), or "delete" (needs `search_key`). Writes go to the cloud Web API.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| conditions | array | — | Search conditions (create). |
| library_id | integer | — | — |
| library_type | string | — | — |
| name | string | — | Saved-search name (create). |
| search_key | string | — | Saved-search key (delete). |
No output schema declared.
No examples provided.
zotero_schema Zotero data model (types & fields) ~118
Return the Zotero data model so you never hardcode item shapes. With no arguments, returns the schema version and the list of all item type names. With `item_type`, returns the valid fields and creator types for that type (the "primary" creator type is listed first). Use this to validate an item before creating or updating it: notes, attachments, and annotations are item types too but bypass the normal field/creator model.
| Name | Type | Req | Description |
|---|---|---|---|
| item_type | string | — | If set, return the fields & creator types for this item type. |
No output schema declared.
No examples provided.
zotero_scholar Scholarly context (references, citations, related) ~212
Explore the scholarly graph around a paper via OpenAlex (open; Crossref fallback) and see what is — or is not yet — in your library. Provide a `doi` and an `action`: "lookup" (metadata + citation count), "references" (works this paper cites), "citations" (works that cite this paper, most-cited first), or "related" (similar works). With `include_in_library` (default true), each result is flagged `inLibrary` by matching DOIs against your library, so you can spot gaps ("cited works I haven't saved"). `limit` caps results (default 20). Read-only; calls external scholarly APIs.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| doi | string | yes | The DOI of the paper (with or without the https://doi.org/ prefix). |
| include_in_library | boolean | — | Flag results already in your library (default true). |
| limit | integer | — | Max results (default 20). |
No output schema declared.
No examples provided.
zotero_search_items Search Zotero items ~437
Search or list items in a Zotero library or collection. Supports full-text/quick search via `q` (`qmode`: titleCreatorYear=default, everything=includes notes & attachment full text), boolean `itemType` filters (use `||` for OR, repeat or `&&` for AND, leading `-` to negate, e.g. "journalArticle || book", "-attachment"), boolean `tag` filters (same syntax; escape a literal leading hyphen as "\-"), `since` (version) for incremental queries, `sort`/`direction`, and `limit`/`start` paging. Set `response_format` to "detailed" to also return technical fields (version, tags, collections, DOI, url) needed before chaining a write; the default "concise" returns high-signal projections (key, itemType, title, creators, date). Reads are served from the fast desktop local API when available, otherwise the cloud Web API. Returns `totalResults` so you can tell when to page rather than assuming you saw everything. For conceptual/"papers about X" queries by meaning rather than exact fields, use zotero_semantic_search instead.
| Name | Type | Req | Description |
|---|---|---|---|
| collectionKey | string | — | Restrict to a collection by key. |
| direction | string | — | — |
| includeTrashed | boolean | — | — |
| itemType | string | — | Boolean itemType filter, e.g. "journalArticle || book". |
| library_id | integer | — | — |
| library_type | string | — | — |
| limit | integer | — | Max items (default 25, max 100). |
| q | string | — | Quick/full-text search string. |
| qmode | string | — | — |
| response_format | string | — | Detail level of returned items. |
| since | integer | — | Return items modified after this library version. |
| sort | string | — | — |
| start | integer | — | — |
| tag | string | — | Boolean tag filter, e.g. "to-read && 2024". |
| top | boolean | — | Only top-level items (exclude child notes/attachments). |
No output schema declared.
No examples provided.
zotero_semantic_search Semantic / hybrid library search ~190
Search the library by meaning, not just keywords. Combines BM25 keyword scoring with vector similarity (when an embedding provider is configured) via reciprocal-rank fusion, and returns the best-matching items with a snippet and score. `mode`: "auto" (hybrid, default), "keyword" (BM25 only), or "semantic" (vector only). Requires the index to be built first with zotero_index (action:"build"); if it is empty, this returns guidance to build it. For exact field/tag/itemType filtering use zotero_search_items instead; use this for conceptual/"papers about X" queries. To read the actual passages of a found item (with page locators) use zotero_get_fulltext.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results (default 10). |
| mode | string | — | — |
| q | string | yes | Natural-language query. |
No output schema declared.
No examples provided.
zotero_styles Resolve CSL citation styles ~181
Resolve a human citation-style name to a valid CSL style id and confirm it is available, or list common style aliases. `action: "resolve"` maps names like "APA 7th", "IEEE", "Vancouver", "Chicago", "MLA", "Nature" to the correct CSL id (e.g. apa, ieee, modern-language-association) and verifies the style can be fetched; pass the returned `styleId` as the `style` argument to zotero_format_bibliography or zotero_bibliography. `action: "list"` returns the built-in common aliases (any id from the CSL styles repository also works). Dependent styles are resolved to their independent parent automatically when formatting.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| name | string | — | Style name to resolve (e.g. "APA 7th"). |
No output schema declared.
No examples provided.
zotero_sync Incremental sync delta ~178
Return what changed in a library since a given version, for efficient incremental sync. Provide `since` (a library version; 0 = everything). Returns, per object type (items/collections/searches/tags), the map of keys→version that changed after `since`, plus the deletion log (keys removed since `since`). This is the version-based delta the Zotero sync algorithm uses — fetch the changed keys, then pull only those with zotero_get_item/zotero_search_items. Reads via the cloud Web API.
| Name | Type | Req | Description |
|---|---|---|---|
| include_deleted | boolean | — | Include the deletion log (default true). |
| library_id | integer | — | — |
| library_type | string | — | — |
| since | integer | — | Library version to diff from (default 0). |
| types | array | — | Which object types to check (default all). |
No output schema declared.
No examples provided.
zotero_tag_audit Audit tags against a controlled vocabulary ~218
Audit a library against a controlled tag vocabulary with priority tiers. Provide the vocabulary inline as `vocabulary` (or a JSON file via `vocabulary_path`): { tags:[{name,tier?}], tiers?:[{name,required?}] }. Reports (1) off-taxonomy tags (library tags not in the vocabulary; Zotero auto-applied tags are bucketed separately unless include_auto), (2) items missing a tag from each required tier, and (3) optional per-collection coverage when `scope.collection_keys` is given. Read-only. Tag/auto-tag enumeration uses the cloud Web API.
| Name | Type | Req | Description |
|---|---|---|---|
| include_auto | boolean | — | Treat Zotero auto-applied tags as off-taxonomy too. |
| library_id | integer | — | — |
| library_type | string | — | — |
| limit | integer | — | Max items listed per report (default 50). |
| scope | object | — | — |
| vocabulary | object | — | — |
| vocabulary_path | string | — | Path to a JSON file with the vocabulary. |
No output schema declared.
No examples provided.
zotero_trash_items Trash or restore Zotero items ~147
Move items to the trash (the safe, REVERSIBLE default) or restore them. This sets the `deleted` flag (1=trash, 0=restore) — it is NOT a permanent delete, so trashed items can be recovered here or in the Zotero app. Use this instead of zotero_delete_items unless you truly need irreversible removal. Provide `item_keys` and optional `action` (default "trash"). Writes go to the cloud Web API.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | — | Default "trash". |
| item_keys | array | yes | Item keys to trash or restore. |
| library_id | integer | — | — |
| library_type | string | — | — |
No output schema declared.
No examples provided.
zotero_update_item Update a Zotero item ~251
Partially update one item (HTTP PATCH — only the fields you supply change; omitted fields are preserved). Provide `item_key` and a `patch` object of the fields to change (e.g. {"title":"New","extra":"note"} or {"tags":[{"tag":"reviewed"}]}). Optimistic concurrency is handled for you: if you pass the item's `version` it is used; otherwise the current version is fetched first. If the item changed on the server in the meantime (412), the update is automatically re-fetched and retried once. Writes go to the cloud Web API. Set `dry_run:true` to preview the field-level before→after diff without writing (arrays like tags/collections are replaced wholesale by PATCH, not merged; a dry_run call performs no write).
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | — | Preview the field-level before→after diff without writing. |
| item_key | string | yes | The 8-character item key. |
| library_id | integer | — | — |
| library_type | string | — | — |
| patch | object | yes | Object of fields to change (PATCH semantics). |
| version | integer | — | Known current version; fetched automatically if omitted. |
No output schema declared.
No examples provided.
zotero_whoami Zotero identity & access ~99
Resolve the current Zotero identity (userID, username, display name) and per-library access scopes from the configured API key, and report which library backends are available (cloud Web API and/or the desktop local API). Call this first to discover the userID — never ask the user to type a numeric ID. If no API key is configured, the server runs in local-only read mode against the desktop library (users/0).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.