zoterolisted
Install: claude install-skill alex-roc/zotero-agent
# Zotero control (via the `zot` CLI)
You control a running Zotero instance through **`zot`**, a stdlib-only Python CLI.
- **Reads** go through Zotero's local HTTP API (fast, GET-only).
- **Writes** go through the `zotero-agent` bridge plugin: `zot exec` runs arbitrary
privileged Zotero JS in-process. This is the only complete local write path
(Zotero's HTTP API is read-only by design; see `references/setup.md`).
`zot` is on `PATH` after install (`uv tool install zotero-agent`,
`brew install alex-roc/tap/zotero-agent`, or the repo's `install.sh`). If the bridge endpoint is not answering, the user must install the
plugin XPI in Zotero — it is published only here (permanent link):
`https://github.com/alex-roc/zotero-agent/releases/latest/download/zotero-agent-bridge.xpi`
→ *Tools → Plugins → gear → "Install Plugin From File…"*. Do not try to build it.
## First: confirm the setup is live
Run `zot ping`. It must show the local API up, the bridge endpoint answering
`1+1 == 2`, a known userID, and the `zot` version. If anything fails, point the
user to `references/setup.md` — do **not** try to work around a missing plugin.
If Zotero is simply not running, or the plugin needs the restart Zotero keeps
asking for, `zot restart` handles it without the user touching the app — it waits
for the bridge to answer again. It is disruptive, so ask first and then pass
`--yes`: `zot restart --plugin --yes` reloads only the bridge (Zotero stays
open), `zot restart --yes` restarts Zotero,