zotio¶
The trust-and-automation layer for Zotero. Search, export, analytics, and safe writes for your reference library — from the terminal, from a coding agent, or over MCP.
Zotero's GUI is great for reading and citing. It gets painful the moment you need to operate on a library at scale: find every article missing a PDF, catch duplicate \cite{} keys before a submission, export a week of highlights, keep an Obsidian vault in sync, or hand an AI agent trustworthy context. zotio owns that glue — and the risk that comes with it.
How it works¶
Reads stay on your machine. Writes split by intent: creating a new item (with its attachments/PDFs) prefers the local desktop connector (localhost:23119, no key — the same channel the browser "Save to Zotero" button uses), while everything else — field edits, deletes, enrichment, tag ops, moves, and collections create/update — routes to the Zotero Web API and needs a configured key. Every write is preview-first, the version read happens locally, and the applied change is replayed into your local mirror so a follow-up read sees it.
| Plane | Backend | Needs a key? |
|---|---|---|
| Read | Local Zotero API (localhost:23119) + synced SQLite mirror |
No |
| Write — new item | Local desktop connector when personal + desktop up; else Web API | No (connector path) |
| Write — everything else | Zotero Web API (api.zotero.org) — edits, deletes, enrich, tags, moves |
Yes — configured once |
| External | CrossRef · OpenAlex · Semantic Scholar · Unpaywall · OpenCitations | No (feeds enrich/import) |
| Local-only | Files, desktop launch, vault, introspection | No |
Run zotio doctor any time to see connectivity, cache freshness, and a writes: line telling you whether write-back is available.
Quickstart¶
zotio doctor # verify Zotero is running and reachable
zotio sync # mirror your library to local SQLite
zotio library stats # see the shape of your library
zotio search 'automation trust' --data-source local --json
zotio annotations timeline --since 2026-05-01 --format markdown > this-week.md
No Zotero yet? zotio demo seeds a sandboxed sample library — 34 classic papers, one genuinely retracted — so every command above works with no desktop app and no API key (ZOTIO_DEMO=1 activates it):

New here? Install the CLI, then authenticate if you need writes.
Where to go next¶
- Install — the CLI, the agent skill, and the MCP server.
- Authentication — keyless reads; when you need a Web API key.
- Obsidian / Logseq vault — conflict-safe, two-way note round-trip.
- Command reference — every command, generated from the binary.
- CI for your bibliography — gate a paper or thesis repo on library health, with a live badge.
- Use in a coding agent — drive the CLI from Claude Code or any agent (or via MCP).
- Highlights — the hero features
zotio whichresolves against. - Capabilities & trust model — read/write classification for every command.
- Zotero API behavior — local vs. Web API, GET-only, schema.
- Safe-by-default writes — how the mutation engine protects your library.