Fact-checked research · MCP server

Every citation, checked against the record.

Aurelius is a verification engine for research. It checks every citation and claim against live scholarly databases — OpenAlex and Crossref — retraction-aware, author-matched, DOI-precise. It catches the fake, retracted, and misattributed sources AI research tools miss.

pip install aurelius-mcp View on GitHub

MIT licensed Works with Claude, Cursor, Gemini CLI No API key needed for verification

aurelius · verify_bibliography() Evidence Ledger
[VERIFIED] Knotek, E. S. (2007). How Useful is Okun's Law? Federal Reserve Bank of Kansas City
[UNVERIFIED] Okun, A. M. (1962). Potential GNP… title match 1.00 — but authors don't match (found: Plosser, Schwert)
[RETRACTED] Wakefield, A. J. et al. (1998). Ileal-lymphoid-nodular hyperplasia… is_retracted: true — do not cite
verification_score: 33% · 1/3 verified STATUS: REJECTED
The default threshold is 100%. One bad citation rejects the draft.

From the ledger

Two catches, from real runs.

Not hypotheticals. These are actual verify_citation results against the live indexes.

The retraction a title-match misses

The Wakefield MMR–autism paper still circulates in citation lists 25 years after its retraction. Aurelius checks OpenAlex's live retraction registry on every lookup — and surfaces the result where it can't be missed.

verify_citation("Wakefield, A. J. et al. (1998).
  Ileal-lymphoid-nodular hyperplasia, non-specific
  colitis, and pervasive developmental disorder…")

{
  "verdict":      "retracted",
  "is_retracted": true,
  "confidence":   "high",
  "source":       "openalex",
  "matched_work": {
    "title": "RETRACTED: Ileal-lymphoid-nodular…",
    "doi":   "10.1016/s0140-6736(97)11096-0"
  },
  "notes": "Retracted work — flagged by openalex.
            Do not cite."
}
is_retracted is always a top-level field — impossible for a host model to overlook or rationalize past. When an index returns both a retracted record and a clean-looking duplicate, Aurelius resolves the tie in favor of surfacing the retraction.

The perfect title match that wasn't the paper

A title match alone is not a verification. Aurelius corroborates the cited author and year against the matched record — catching the subtle case a title-only checker waves through.

verify_citation("Okun, A. M. (1962). Potential GNP:
  Its Measurement and Significance.")

{
  "verdict":      "unverified",
  "author_match": false,
  "match_score":  1.0,
  "matched_work": {
    "authors": ["Charles I. Plosser",
                "G. William Schwert"],
    "year": 1979
  },
  "notes": "Found a work with this title but
            different authors (found: Plosser, Schwert;
            cited: Okun) — likely not the paper you cited."
}
The title matched 1.00 — a perfect score — but the only indexed record with that title is a 1979 paper by Plosser & Schwert, not Okun's 1962 original. A title-only checker reports ✓. Aurelius reports the truth, and hands back a corrected_citation for the record it actually found.

We know this failure mode because we shipped it. An early version of Aurelius verified that Okun citation with high confidence on the title match alone. Version 0.3.0 fixed matching to corroborate author and year — the fix is in the changelog, in public, like everything else here.

Papers

arXiv-ready LaTeX, with nothing unverified inside.

Aurelius isn't just a checker — it's a drafting, verification, and LaTeX pipeline working together. Plan a paper, draft it section by section, verify every citation as you go, and end with a submission-ready bundle.

  1. plan_paper_length
  2. draft_outline
  3. verify_bibliography
  4. latex_outline
  5. preprint bundle
  • A bibliography that can't contain junk

    The exported references.bib is built only from citations that verified — DOI-backed, from authoritative metadata. An unverified or retracted source never enters the bibliography.

  • LaTeX that actually compiles

    Article, two-column, and report templates that build with plain pdflatex + bibtex. No exotic packages, no journal-specific surprises.

  • Zero tolerance by default

    The Evidence Ledger's default threshold is 100%: a single unverified citation flips the whole verification report to STATUS: REJECTED until you fix or remove it.

  • Receipts included

    Each run can emit a signed Proof-of-Rigor: a SHA-256 content hash of the evidence ledger and audit trail, signed with ed25519 — tamper-evident and independently checkable.

  • Packaged for arXiv, bioRxiv, medRxiv

    The bundle zips compile-ready LaTeX, the verified draft, references.bib, metadata, and a per-server submission checklist.

  • Long-form without the pain

    Section-by-section word budgets and append-mode saving mean 20–80+ page papers get drafted and verified incrementally, not re-sent wholesale.

Honest by design: submission itself stays manual. arXiv and its peers require human endorsement and moderation, and a project whose brand is research integrity won't route around that. Aurelius does everything up to the final click — the final click is yours.

Pricing

The open-source server is free. The hosted product is coming.

Today, Aurelius is a free, MIT-licensed MCP server with no caps. The plans below describe the hosted product we're building on top of it — join the waitlist and we'll tell you when it opens.

Free

$0

  • Verify ~20 references per run
  • Paste a bibliography, get a scored ledger
  • Retraction and author-match checks included

For trying it out.

Hosted MCP

Coming soon

  • Zero-config managed remote MCP
  • Works with ChatGPT and remote clients
  • We handle the keys and rate limits

API

Usage-based · planned

  • Verification-as-a-service for builders
  • Reference managers & AI writing tools
  • Journal submission systems

Institutional / Journal

Contact us

  • For libraries and publishers
  • Fighting citation fraud and paper mills
  • Batch screening with audit trails

Get started

Verified research in three steps.

Install

One package. Python 3.10+. The only runtime dependencies are mcp and httpx.

pip install aurelius-mcp

Connect it to your app

Add Aurelius to your MCP client's config. Citation verification needs no API key; a free Tavily key is optional, for general web search.

claude mcp add aurelius -- aurelius

Optional: add "env": { "TAVILY_API_KEY": "tvly-…" } to enable general web search. If aurelius isn't on your PATH, use "command": "python", "args": ["-m", "aurelius"] instead.

Ask it to verify

Your app's model does the reasoning and writing; Aurelius supplies the verification. No extra LLM key, no extra token bill.

"Use Aurelius to research the historical correlation between GDP growth and unemployment, and verify every citation."

FAQ

Questions, answered plainly.

Do I need an API key?

Not for citation verification. OpenAlex and Crossref — the databases Aurelius checks against — are free and keyless. A free Tavily key is optional: it enables general web search and acts as a fallback for works not indexed in either scholarly database.

Which apps does it work with?

Today: Claude Desktop, Claude Code, Cursor, and Gemini CLI — all over local MCP (stdio). ChatGPT needs a remote MCP deployment, which is what the Hosted MCP plan is for — it's on the roadmap. Perplexity doesn't support user-added MCP servers yet.

Is it open source?

Yes — MIT licensed, on GitHub and PyPI. The verification logic you'd be trusting is code you can read.

How is this different from asking an AI to check citations?

An AI asked to "check" a citation asserts from memory — the same memory that hallucinated the citation in the first place. Aurelius queries the live scholarly record instead: DOI-direct lookup where an identifier exists, author and year corroboration against the matched work, and a live retraction check. Every verdict comes with the matched record attached.

Does it use my tokens or need its own model?

In the default host-driven mode, the app you connect it to (Claude, Gemini, …) does the reasoning with its own model — covered by your existing subscription — and Aurelius supplies the verification tools. Only the optional autonomous mode, where Aurelius drives its own LLM end-to-end, needs a bring-your-own API key.

Can it check a paper I've already written?

Yes. Paste your References section into verify_bibliography and you get a scored ledger for every entry, plus a cleaned, DOI-backed BibTeX file and corrected citation strings for everything that resolved. Direct PDF upload is part of the planned hosted product.

What happens when a citation fails?

You get the verdict, the reason, and — when Aurelius found a real record — a corrected_citation built from authoritative metadata. A retracted paper is an automatic reject. By default the ledger's threshold is 100%: one failed citation and the whole report reads STATUS: REJECTED until it's fixed.

What if a paper is retracted after I cite it?

Retractions don't respect your publication date — a paper cited last month can be retracted today. The retraction_watch tool re-checks previously verified citations for new retractions or verification drift, either from a list you pass or from every saved proof bundle.

Funding & partnerships

Building the verification layer for research.

Citation fraud, paper mills, and AI-hallucinated references are growing faster than the tools to catch them. If you're interested in funding or partnering on Aurelius, we'd like to talk.