zotero_add_by_doi
Add a publication to your Zotero library using a DOI, automatically fetching metadata like title, authors, and journal from CrossRef. Supports collections, tags, and optional PDF attachment.
Instructions
Add an item to the active Zotero library by DOI, resolving rich metadata (title, creators, journal, year, abstract) from CrossRef. Use this as the FIRST choice when the user gives you a DOI — cleaner metadata than zotero_add_by_url. For arXiv IDs or raw URLs use zotero_add_by_url; for a local PDF use zotero_add_from_file. doi: the DOI string (with or without the '10.' prefix, with or without a leading 'https://doi.org/'). collections: optional list of collection keys, names, or '/'-separated paths (e.g. '_project/topic') — resolved and validated before the item is created; unknown or ambiguous specs fail the call with suggestions instead of producing an unfiled item. tags: optional list of tag strings to attach. if_exists: 'duplicate' (default) always creates a new item; 'file' makes the call idempotent — when an item with this DOI already exists it is reused, filed into any missing collections and given any missing tags (nothing is ever removed); 'skip' leaves an existing match untouched. create_missing_collections: when True, collection specs that don't resolve are created (including path chains) instead of failing. attach_mode: 'auto' (default) downloads a PDF if CrossRef links one and storage is available; 'none' skips PDF download; 'required' fails if no PDF can be attached. PDF uploads may fail on the Zotero cloud free-tier 300MB quota — metadata still lands even when the upload fails. Requires a writable library (web API key or hybrid mode); fails in local-only mode. Remember to run zotero_update_search_database afterwards to make the new item searchable semantically. Example: zotero_add_by_doi(doi='10.1145/3708319', collections=['9SU943GB'], tags=['MCP']).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | ||
| collections | No | ||
| tags | No | ||
| attach_mode | No | auto | |
| if_exists | No | duplicate | |
| create_missing_collections | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |