OneCite: auditable bibliographic references

OneCite

A Python CLI and library that turn DOIs, PMIDs, arXiv IDs, ISBNs and BibTeX drafts into auditable BibTeX or CSL-JSON

  • 68 ★ on the repository
  • Last commit
  • MIT
CLI

Extended access

Why this level

  • Identifiers and reference text go to external services such as Crossref, arXiv and PubMed
  • An arbitrary URL in the data is fetched from the given host
All reasons and checks

hzacode/onecite

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add cli/onecite

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Identifiers and reference text go to external services such as Crossref, arXiv and PubMed
  • An arbitrary URL in the data is fetched from the given host

This is third-party code. Review the repository files before installing.

What it does

OneCite brings a messy reference list to one shape. The input is DOIs, PMIDs, arXiv IDs, ISBNs, URLs and BibTeX fragments from `.txt` or `.bib`, and the output is BibTeX or CSL-JSON. A four-stage pipeline (parse, identify, enrich, format) shows unresolved entries explicitly and hides nothing. Strong identifiers go to dedicated services: Crossref, arXiv, PubMed, Semantic Scholar, Google Books, DataCite and Zenodo. OneCite fills missing fields (journal, volume, pages, authors, abstract) from the response. The command `onecite process references.txt -o results.bib` emits only entries with a strong identifier. For incomplete references there is `onecite suggest "Attention is all you need, Vaswani et al., NIPS 2017"`, which returns ranked candidates for a human to review. The report raises a `text_metadata_mismatch` warning when the text around a DOI describes a different work: the classic pair of an invented title and a real DOI. Duplicates are emitted once. JSON and NDJSON output, exit codes and offline checks are included, and the repository ships a SKILL.md for agents under `skills/onecite/`.

Who it is for. Paper authors, researchers and agents who prepare a bibliography and want to catch invented or mismatched references before publishing.

Good fit when

  • An AI-assisted paper draft carries references and you must check that DOIs match their titles
  • A list of DOIs, arXiv IDs and ISBNs has to become one BibTeX file for Pandoc
  • An agent runs a literature review and must return a machine-readable report with unresolved entries
  • For an incomplete reference like Attention is all you need, Vaswani you look for matching candidates

Not a fit when

  • You need a library manager with sync and Word plugins: OneCite does not replace one
  • Sources have no strong identifier: `process` does not promote them without manual review
  • Confidential references that cannot be sent to Crossref and other external services

Example request

Run references.txt through OneCite, save results.bib and show the entries that could not be resolved.

Limitations

A normal run makes outbound requests: a DOI goes to Crossref, `suggest` queries go to Crossref, Semantic Scholar and arXiv, theses are searched in OpenAIRE and BASE, and an arbitrary URL is fetched from the given host. Redact confidential records before running.

Source resolution does not prove that a work is authentic, unretracted or correctly described in upstream metadata. The Google Scholar fallback in `suggest` is off by default, is installed as `pip install onecite[scholar]` and may hit a CAPTCHA. The public PyPI release is 0.1.1, while part of what the README describes belongs to the upcoming 0.2.0.

How to disable. Run `pip uninstall onecite`. Generated BibTeX files and reports stay where you wrote them and are deleted by hand.

FAQ

How do I install OneCite?

With `pip install onecite`. For the current repository version use `python -m pip install -e .` from a cloned folder.

How does `process` differ from `suggest`?

`process` emits entries only for strong identifiers, while `suggest` searches for candidates from incomplete text and emits nothing as verified.

Which output formats are supported?

BibTeX and CSL-JSON (`--output-format csl-json`), plus JSON and NDJSON for the report.

What does the text_metadata_mismatch warning mean?

The text around a resolved DOI looks like a description of a different work. The entry stays but is sent for manual review.

Can I embed OneCite in Python code?

Yes, `from onecite import process_references` is callable from scripts and batch jobs.

Discussion

No questions or reviews yet.

CLI tools

BibTeX Verifier checks .bib files against OpenAlex, CrossRef and DataCite and flags references with errors or invented data.

SkillMinimal access144Repository stars

BibTeX verification against Crossref, OpenAlex, PubMed and arXiv: a CLI, Python API and MCP server to flag wrong references

MCP serverExtended access98Repository stars

A skill that searches papers through Semantic Scholar, checks venue rankings and generates BibTeX for a manuscript.

SkillExtended access237Repository stars

Checks every reference of a paper against Crossref, dblp and arXiv before submission, with no language model in the verdicts.

PluginMinimal access182Repository stars

Papis is a CLI for a research library: export references as BibTeX and open collected PDFs in your preferred application.

CLIExtended access1.8KRepository stars

MCP server with 40 tools that checks quotes, numbers, DOIs and PRISMA counts in AI-written literature reviews. No model inside.

MCP serverMinimal access110Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialAuthenticationRepository starsMain difference
OneCite: auditable bibliographic references (this card)no68
CiteProofnonot required110another reference check for an agent; OneCite normalizes identifiers into BibTeX and CSL-JSON
Zotero Research Assistant Skillno98works with a Zotero library; OneCite processes a reference list before any manager

README in short

The README explains the purpose, shows a quick start with a reference file and BibTeX output, describes the `process` and `suggest` commands, the report format, a section on external services and privacy, a Python call and a roadmap.

README badge

Report a problem