Skip to content
dsh-market Browse plugins GitHub 中文

Vncntvx/dsh-zotero

Zotero as an evidence store for agents: search your library, inspect metadata and notes, retrieve evidence passages, open source PDFs, and generate citations and bibliographies.

Stars ★ 6 Category Tools & Capabilities Listed 2026-08-15 npm dsh-zotero

Install

Inside DeepSeek Harness, with dsh-market

dsh plugin --profile web add dshmarket

Or from the command line

dsh plugin --profile web add dsh-zotero

Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.

Screenshots

README

dsh-zotero

dsh-zotero is a Zotero plugin designed for agent research workflows. Agents can search your library directly, view metadata and notes, extract evidence passages relevant to a question, open source PDFs, and generate citations and bibliographies.

Tools

Tool Purpose
zotero_search Search by title/creator/year; everything mode also searches indexed full text
zotero_get Read one item's metadata, optionally with notes, annotations, and attachments
zotero_retrieve Return the most relevant evidence passages for a query
zotero_attachment Resolve a ref to a verified on-disk path or linked URL
zotero_export Generate citations, bibliographies, BibTeX/BibLaTeX/RIS/CSL JSON

Full tool reference →

Install

dsh plugin --profile <name> add dsh-zotero

From GitHub source:

dsh plugin --profile <name> add github:Vncntvx/dsh-zotero

From a local tarball:

cd dsh-zotero && npm pack
dsh plugin --profile <name> add ./dsh-zotero-*.tgz

After installing, start a new session so the agent picks up the Zotero tools.

The plugin provides a settings card under Settings → Plugins where you can adjust the API address, concurrency limits, full-text retrieval toggle, and more. Changes take effect on save. See Configuration.

Installation details →

Requirements

  • Zotero ≥ 7 with local API enabled: Settings → Advanced → "Allow other applications on this computer to communicate with Zotero"
  • Node.js ≥ 22.19 (or ≥ 24)
  • dsh 0.1.0-rc.7 series host (all @deepseek-ai/dsh-* peer dependencies are ^0.1.0-rc.7)
  • Local API at http://127.0.0.1:23119/api, unauthenticated, read-only

Usage example

The agent calls tools step by step during a conversation. Each result becomes context for the next step.

User: Find papers about Risk
Agent → zotero_search(query: "Risk", itemType: "journalArticle")
       5 matches; user picks the first 3

User: What does the first one's abstract say?
Agent → zotero_get(ref: 1, fields: ["abstractNote"])
       Returns the full abstract

User: Find the methodology discussion in this paper
Agent → zotero_retrieve(query: "methodology", sources: ["fulltext", "notes"])
       Returns relevant passages with page numbers

User: Export all three as BibTeX
Agent → zotero_export(refs: [1,2,3], format: "bibtex")
       Generates BibTeX entries, ready to copy or download

More examples in Features.

Limits

  • Read-only library: all operations are reads; items, notes, tags, and collections are unchanged
  • Loopback only: network requests go only to 127.0.0.1:23119
  • Evidence ranking is term-based: BM25 ranks passages by query-term frequency match
  • Exports are static text: returned as text, ready to copy into your target document
  • Full-text evidence depends on Zotero's index: unindexed PDFs yield no full-text passages
  • Attachment depth depends on the harness: zotero_attachment returns the file location; reading the PDF further needs a matching host capability

Permissions and external side effects

  • Network: HTTP requests go only to http://127.0.0.1:23119/api (redirects are not followed); resolveConfig enforces a loopback address
  • Filesystem: read-only — zotero_attachment verifies attachment paths with existsSync; no file writes
  • Persistence: the only write comes from the settings card under Settings → Plugins, saved to the zotero: user layer of $DSH_HOME/settings.yaml
  • No shell / native / background tasks: the plugin runs no shell commands, loads no native modules, and starts no daemon
  • Restart: after installing or removing the plugin, restart dsh and start a new session; configuration changes hot-reload on save without a restart

Documentation

Doc Covers
Getting Started Installation, prerequisites, first verification
Features Sources panel, chat integration, evidence, exports
Tool Reference Parameters, return values, error codes for all 5 tools
Configuration 20 config fields, defaults, hot-reload
Architecture Data flow, layer responsibilities, design boundaries
Development Build, test, local development
Troubleshooting 11 common issues with symptoms and fixes

Development

npm install --no-workspaces   # this repo lives inside the deepseek-harness workspace
npm test                      # vitest unit tests against the mock Zotero server
npm run typecheck             # tsc --noEmit for node, test, and client projects
npm run build                 # tsc emits node half into lib/; esbuild emits browser half lib/client.js
npm run dev                   # tsc --watch for host half hot reload
npm run dev:client            # esbuild --watch for browser half hot reload

Build output splits into lib/ (Node side) and lib/client.js (browser side — settings card + Zotero tab). For full plugin development with both halves, use the dev-lib.cordis.yml overlay. See Development for details.

License

MIT — free to use, modify, and distribute.

Content from the project README on GitHub ↗