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:
doi.org/doiRA— does this DOI exist at any registration agency? (catches invented DOIs)- 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 | |
|---|---|
| ✅ VERIFIED | DOI exists and the cited text matches the real paper |
| ❌ FABRICATED | DOI resolves nowhere — treat as invented |
| ⚠️ MISMATCH | DOI is real but belongs to a different paper — the classic hallucination signature |
| 🚫 RETRACTED | The paper exists but has been retracted |
| ❔ UNRESOLVED | Registered, but no metadata retrievable — check by hand |
| ➖ NO_DOI | Nothing 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_DOImeans "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
/mcpURL - ChatGPT (Plus+, desktop web): Settings → Connectors → Advanced → Developer mode → add the
/mcpURL, 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.