zotero_search_items
Search Zotero by author, title, or year to retrieve matching items with metadata and abstracts as markdown.
Instructions
Search Zotero items by substring match against metadata (title, creators, year, and — in 'everything' mode — abstract). Returns metadata + abstracts as markdown. IMPORTANT: keep queries SHORT and SIMPLE — 'Author Year' (e.g. 'Brewer 2011') or just an author name ('Cladder-Micus'). This is substring matching, not web search: each extra word NARROWS the match, so adding topic words usually returns fewer results, not more. For topic discovery, use zotero_semantic_search instead; for tag filtering use zotero_search_by_tag. If a query finds nothing, this tool automatically falls back to simplified queries and then semantic search. query: required substring. qmode: 'titleCreatorYear' (default) matches only title/authors/year; 'everything' also searches abstract. item_type: '-attachment' (default) excludes attachments; pass 'journalArticle', 'book', etc. to filter. tag: optional list of tag conditions (ANDed). limit: max results (default 10). collection_key: 8-char key to restrict to a collection (bypasses the fallback cascade). include_subcollections: also search collections nested beneath it (default False). search_all_libraries: search personal + all group libraries at once, labelling each result with its library — use it when you don't know which library holds the item. Needs ZOTERO_SEARCH_BACKEND=sqlite; excludes collection_key. Example: zotero_search_items(query='Cladder-Micus') or zotero_search_items(query='Brewer 2011', search_all_libraries=True).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Tag filter. Accepts ["tagA", "tagB"] (preferred), a bare string "tagA", a JSON-string list '["tagA", "tagB"]', or the dict-shape [{"tag": "tagA"}] sometimes emitted by clients that confuse the filter form with Zotero's stored-tag form. All are normalized internally to the list[str] form pyzotero expects. | |
| limit | No | Maximum number of results to return | |
| qmode | No | Query mode (titleCreatorYear or everything) | titleCreatorYear |
| query | Yes | Search query string | |
| item_type | No | Type of items to search for. Use "-attachment" to exclude attachments. | -attachment |
| collection_key | No | Optional collection key to scope the search to a specific collection. When provided, bypasses the fallback cascade and searches the collection directly. | |
| search_all_libraries | No | Search every accessible library at once instead of the active one (#163). Requires the SQLite backend; each result is labelled with the library it came from. Cannot be combined with collection_key, which names a collection inside one library. | |
| include_subcollections | No | Also search collections nested beneath collection_key. Ignored when collection_key is not given. Defaults to False, matching Zotero's own "Search subcollections" checkbox. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |