FullVahti
FullVahti is a free, Apache-2.0 plugin that does three screening-workflow jobs from inside Zotero. I built it for my own systematic review work (I'm a clinician-researcher in Finland), and it is now stable enough to share. (vahti = guardian).
1. Find open-access PDFs. Select or tag references; FullVahti looks each one up on Unpaywall and PubMed Central, attaches the free legal PDF when one exists, and tags every item with what happened. After a run you get one report note listing everything it could not find and why. That list is exactly what you need for interlibrary loan requests or a PRISMA flow diagram. If you set your library's OpenURL resolver, every missing item gets a "find in my library" link. Open access only: it never bypasses a paywall, and PMC downloads stay inside the official OA subset.
2. Flag retractions. Each reference is checked against PubMed and against Crossref, which now carries the Retraction Watch data. Two sources matter because the recent mass retractions (Hindawi/Wiley, Sage, IEEE) often never reached PubMed. FullVahti only reads the recorded status. Retracted items are tagged and called out in the report, and you decide what to do with them.
3. Check citation metadata. Compares each record with Crossref and flags missing fields and mismatches. Read-only by design: a mismatch can mean the wrong DOI is attached to the record, and that call needs a human, so it never edits or auto-fixes anything.
Privacy: everything runs locally. The only network traffic is the DOI/PMID lookups to the services named above. No account, no telemetry. Unpaywall and PMC ask for a contact email once; it is sent only to them.
Install: download the .xpi from the latest GitHub release and use Tools → Plugins → Install Plugin From File (Zotero 7). Updates install themselves.
Repo and full documentation: https://github.com/heidihelena/fullvahti
It is early (v0.1.x) and biomedicine-leaning, since PubMed and PMC are where my own work lives. If you try it in another field, I would especially like to hear what breaks or reports oddly. Bug reports and blunt feedback are welcome, here or on GitHub.
1. Find open-access PDFs. Select or tag references; FullVahti looks each one up on Unpaywall and PubMed Central, attaches the free legal PDF when one exists, and tags every item with what happened. After a run you get one report note listing everything it could not find and why. That list is exactly what you need for interlibrary loan requests or a PRISMA flow diagram. If you set your library's OpenURL resolver, every missing item gets a "find in my library" link. Open access only: it never bypasses a paywall, and PMC downloads stay inside the official OA subset.
2. Flag retractions. Each reference is checked against PubMed and against Crossref, which now carries the Retraction Watch data. Two sources matter because the recent mass retractions (Hindawi/Wiley, Sage, IEEE) often never reached PubMed. FullVahti only reads the recorded status. Retracted items are tagged and called out in the report, and you decide what to do with them.
3. Check citation metadata. Compares each record with Crossref and flags missing fields and mismatches. Read-only by design: a mismatch can mean the wrong DOI is attached to the record, and that call needs a human, so it never edits or auto-fixes anything.
Privacy: everything runs locally. The only network traffic is the DOI/PMID lookups to the services named above. No account, no telemetry. Unpaywall and PMC ask for a contact email once; it is sent only to them.
Install: download the .xpi from the latest GitHub release and use Tools → Plugins → Install Plugin From File (Zotero 7). Updates install themselves.
Repo and full documentation: https://github.com/heidihelena/fullvahti
It is early (v0.1.x) and biomedicine-leaning, since PubMed and PMC are where my own work lives. If you try it in another field, I would especially like to hear what breaks or reports oddly. Bug reports and blunt feedback are welcome, here or on GitHub.
Upgrade Storage
Open-access full text.
Looks each reference up on Unpaywall and PubMed Central and attaches the free legal PDF when one exists. Open access only, never a paywall bypass; PMC downloads are restricted to the OA subset via the official service.
Items are tagged fulltext:pdf-found, pdf-missing or check-needed, and one report note lists what is missing and why, which is the list you take to interlibrary loan or a PRISMA diagram. With your library's OpenURL resolver set, each missing item also gets a "Find in my library" link.
Retractions.
Cross-checks PubMed and Crossref, which now carries the Retraction Watch database, so the 2024 to 2025 mass retractions PubMed does not index still surface. Tags retraction:retracted / none / check-needed, with the source of the flag in the report.
Citation metadata.
Compares each record against Crossref and lists discrepancies side by side. Read-only on purpose: it never edits a field and never auto-fixes a mismatch, because a mismatch often means the wrong DOI is attached.
Write-back door for CiteVahti (off by default).
A token-guarded endpoint on Zotero's local server that accepts allowlisted tag changes only, every write previewed, audited and undoable, with the audit log readable from the Tools menu.
FullVahti 0.1.20 adds a Tools menu entry that opens new tool!
Zotero Citation Checker, a free browser tool for the problems that live in the document rather than the library. Drop a .docx and it reads the Zotero citation fields locally, then reports with paragraph-level locations:
citations in the text with no matching entry in the reference list
the same paper cited through two different Zotero items, so it appears twice under two numbers (the library duplicate detector cannot see this from inside the document)
reference-list entries that nothing cites
citation fields whose stored data no longer parses, so Refresh cannot recover them
citation-shaped plain text: fields flattened by Track Changes or a Google Docs round trip
numbering gaps in numeric styles
The file is processed in the browser and is not uploaded, there is no account and no size limit, and the report downloads as Markdown or CSV. Drop an exported copy of your library (CSL JSON) alongside it and it also flags citations whose item no longer exists in your library.
The checker reads the document's Zotero field data and reports what it finds there.
https://vahtian.com/zotero-citation-checker/
Plugin and releases: https://github.com/heidihelena/fullvahti
Feedback welcome