← Discover MCPs and Agents
c
MCPAI & MLGitHub

citation-guard

Catches AI-hallucinated citations - verifies every DOI against live registries (doi.org, OpenAlex, Crossref) and flags fabricated, mismatched, retracted and duplicate references. Free MCP plugin for Claude and ChatGPT, zero extra credits.

Links

README

From the repo.

Citation Guard 🛡️

Catches AI-hallucinated citations. Paste a reference list → every DOI is verified against live public registries. Free, open-source, zero extra credits.

One MCP server for Claude & ChatGPT.

Why this exists

AI models fabricate citations that look perfect — real-sounding authors, real journals, plausible DOIs. People have been sanctioned in court and had papers retracted over them. Citation Guard is the check.

Unlike the rest of this plugin family (which inject reasoning protocols), this one returns facts, not opinions — retrieved from doi.org, OpenAlex and Crossref. You can verify every verdict yourself.

The key insight

"The DOI resolves" is NOT proof the citation is real. A fabricated citation can carry a real DOI that points to a different paper.

So it verifies in two stages:

  1. doi.org/doiRA — does this DOI exist at any registration agency? (catches invented DOIs)
  2. OpenAlex / Crossref — fetch the paper the DOI actually points to, then check whether the cited text matches that paper's real title. This is what catches the sneaky ones.

Verdicts

Meaning
VERIFIEDDOI exists and the cited text matches the real paper
FABRICATEDDOI resolves nowhere — treat as invented
⚠️ MISMATCHDOI is real but belongs to a different paper — the classic hallucination signature
🚫 RETRACTEDThe paper exists but has been retracted
UNRESOLVEDRegistered, but no metadata retrievable — check by hand
NO_DOINothing to verify against — not a pass

Plus duplicate detection (same DOI cited twice).

Real example

1. ✅ VERIFIED — 10.1038/nature14539     → "Deep learning" — Yann LeCun (2015)
2. ❌ FABRICATED — 10.1234/jsi.2023.99999 → does not exist at any registration agency
3. ⚠️ MISMATCH — 10.1038/nature14539     → cited as "Blockchain Approaches to Feline Psychology",
                                            actually "Deep learning" — Yann LeCun (2015)
4. 🚫 RETRACTED — 10.1016/S0140-6736(97)11096-0 → Wakefield et al. 1998

Tools

  • verify_citations — check a whole reference list (up to 15 per call)
  • check_doi — resolve a single DOI: what paper is it really?

Use it

Citation Guard: check these references
[paste your bibliography, one per line]

Limits (honest ones)

  • 15 references per call — Cloudflare's free tier allows 50 subrequests and 6 concurrent connections per request; each reference costs up to 3 lookups. Batch larger lists.
  • No DOI = not checkable. Many valid works (arXiv preprints, books, NeurIPS papers) have no DOI. NO_DOI means "unknown", never "fake".
  • A ✅ means the DOI matches the cited title — it doesn't mean the paper supports the claim it's cited for.

Deploy your own (free)

npm install
npx wrangler deploy      # prints your live URL

Your connector URL is that address + /mcp.

Optional: set a CONTACT_EMAIL var to unlock Crossref's faster "polite pool" (10/s vs 5/s):

npx wrangler secret put CONTACT_EMAIL

It works fine without it. (It's an env var rather than hardcoded so nobody's email ends up in a public repo.)

Connect it

  • Claude (any plan): Settings → Connectors → Add custom connector → paste the /mcp URL
  • ChatGPT (Plus+, desktop web): Settings → Connectors → Advanced → Developer mode → add the /mcp URL, Auth None

Data sources

doi.org (registration agency lookup) · OpenAlex (metadata + retraction flags) · Crossref (metadata fallback). All free, all public.

License

MIT © 2026 Pranay Mahendrakar — free to use, modify, and share.

Collected info

  • 0 stars
  • Language: TypeScript
  • Source updated: 7/15/2026

Config for your environment

Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "{MCP_ENDPOINT_URL}"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.