Skip to the content
Agent Tools

How to verify bibliography references, spot hallucinated DOIs and check retractions in one MCP tool

On 2026-10-20, calling check_references on Citation Checker checked 3 bibliography references in 2,670 ms against Crossref, DataCite and OpenAlex: it confirmed the 2021 AlphaFold paper in Nature (10.1038/s41586-021-03819-2, verdict: "found", retraction.status: "none_recorded"), flagged Wakefield et al. 1998 in The Lancet (10.1016/s0140-6736(97)11096-0) as retracted with both its 2004-03-06 correction DOI and its 2010-02-06 retraction DOI, and returned verdict: "unavailable" (rather than a false verdict) on a fabricated 2019 Nature neutron-star reference when OpenAlex timed out. A 4-reference call completed in 2,581 ms and also caught a 2019 vs 2021 publication-year mismatch (verdict: "mismatch", differences: ["year"]).

Large language models frequently invent plausible-looking bibliography lines by combining real author names, real journal titles such as Nature or The Lancet, and a fabricated DOI string, or by citing a real paper that was later retracted. Raw Crossref search endpoints return ranked candidate lists without telling you whether a citation actually matches or whether it carries a retraction notice. The Citation Checker MCP server (https://citations.openkrill.app/mcp) checks 1 to 20 references in a single call with no API key.

1. Check a 3-reference bibliography for real DOIs, fake papers and retractions

In our saved 2026-10-20 ranking run, we passed three bibliography strings to check_references:

  1. Real paper: Jumper J, Evans R, Pritzel A, et al., "Highly accurate protein structure prediction with AlphaFold", Nature 2021;596:583-589, doi:10.1038/s41586-021-03819-2.
  2. Fabricated citation and DOI: Smith J, Lee K., "Deep learning predicts quantum gravity corrections in neutron stars", Nature 2019;570:112-118, doi:10.1038/s41586-019-1234-9.
  3. Retracted paper: Wakefield AJ, Murch SH, Anthony A, et al., "Ileal-lymphoid-nodular hyperplasia, non-specific colitis, and pervasive developmental disorder in children", Lancet 1998;351:637-641, doi:10.1016/S0140-6736(97)11096-0.

Here is the exact JSON-RPC request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "check_references",
    "arguments": {
      "references": [
        "Jumper J, Evans R, Pritzel A, et al. Highly accurate protein structure prediction with AlphaFold. Nature. 2021;596:583-589. doi:10.1038/s41586-021-03819-2",
        "Smith J, Lee K. Deep learning predicts quantum gravity corrections in neutron stars. Nature. 2019;570:112-118. doi:10.1038/s41586-019-1234-9",
        "Wakefield AJ, Murch SH, Anthony A, et al. Ileal-lymphoid-nodular hyperplasia, non-specific colitis, and pervasive developmental disorder in children. Lancet. 1998;351:637-641. doi:10.1016/S0140-6736(97)11096-0"
      ]
    }
  }
}

In 2,670 ms (as_of: "2026-10-20T06:08:04.422Z"), check_references returned:

{
  "as_of": "2026-10-20T06:08:04.422Z",
  "source": {
    "name": "Crossref, DataCite and OpenAlex",
    "url": "https://api.crossref.org"
  },
  "summary": {
    "found": 2,
    "mismatch": 0,
    "not_found": 0,
    "unavailable": 1,
    "ambiguous": 0,
    "retracted": 1
  },
  "references": [
    {
      "index": 1,
      "verdict": "found",
      "doi": "10.1038/s41586-021-03819-2",
      "title": "Highly accurate protein structure prediction with AlphaFold",
      "authors": ["Jumper", "Evans", "Pritzel", "et al."],
      "year": 2021,
      "venue": "Nature",
      "source": "Crossref",
      "retraction": { "status": "none_recorded" }
    },
    {
      "index": 2,
      "verdict": "unavailable",
      "message": "The DOI does not exist, and no matching paper was found in Crossref, but OpenAlex, which holds most conference papers, could not be searched right now. This is not a verdict; try again in a few minutes."
    },
    {
      "index": 3,
      "verdict": "found",
      "doi": "10.1016/s0140-6736(97)11096-0",
      "title": "RETRACTED: Ileal-lymphoid-nodular hyperplasia, non-specific colitis, and pervasive developmental disorder in children",
      "authors": ["Wakefield", "Murch", "Anthony", "et al."],
      "year": 1998,
      "venue": "The Lancet",
      "source": "Crossref",
      "retraction": {
        "status": "retracted",
        "notices": [
          { "type": "correction", "date": "2004-03-06", "doi": "10.1016/s0140-6736(04)15715-2" },
          { "type": "retraction", "date": "2010-02-06", "doi": "10.1016/s0140-6736(10)60175-4" }
        ]
      }
    }
  ]
}

2. Catch year, author or title mismatches on real DOIs

When a bibliography line cites a real DOI but has the wrong publication year, first author or title, check_references returns verdict: "mismatch" and lists the conflicting fields in differences. In our 4-reference run on 2026-10-20 (2,581 ms), adding a fourth line that cited the 2021 AlphaFold paper as Nature. 2019;596:583-589. doi:10.1038/s41586-021-03819-2 produced:

{
  "index": 4,
  "verdict": "mismatch",
  "doi": "10.1038/s41586-021-03819-2",
  "title": "Highly accurate protein structure prediction with AlphaFold",
  "authors": ["Jumper", "Evans", "Pritzel", "et al."],
  "year": 2021,
  "venue": "Nature",
  "source": "Crossref",
  "retraction": { "status": "none_recorded" },
  "differences": ["year"],
  "message": "Matches a real paper, but the year in the reference differs from the record shown."
}

3. How Citation Checker compares with Crossref Simple Text Query, Crossref REST API and scite

On 2026-10-20 we tested the same 3-reference list across Citation Checker and three alternatives:

Tool Wall time Fake #2 (10.1038/s41586-019-1234-9) Retracted #3 (Wakefield 1998)
OpenKrill Citation Checker (check_references) 2,670 ms (1 call for all 3) Reports DOI does not exist and no match in Crossref (verdict: "unavailable" while OpenAlex is unreachable) Flags retraction.status: "retracted" with 2004 correction DOI and 2010 retraction DOI
Crossref Simple Text Query (apps.crossref.org/SimpleTextQuery) 1,780 ms Leaves reference #2 without a DOI link, with no verdict word Links to 10.1016/s0140-6736(97)11096-0 with no retraction flag
Crossref REST API (api.crossref.org/works?query.bibliographic=) 4,045 ms (3 calls, 1 per reference) Returns an unrelated real neutron-star paper as the top hit with no verdict Returns the Wakefield record as top hit; requires custom code to inspect update-to notices
scite Reference Check (scite.ai/reference-check) Not run Blocked without login Requires a scite account and a paid subscription plan

4. Connect Citation Checker in ChatGPT, Claude, Cursor, VS Code or Pi

Add https://citations.openkrill.app/mcp to your client or follow the step-by-step setup guides for ChatGPT, Claude, Cursor, VS Code and Pi:

{
  "mcpServers": {
    "citations": {
      "type": "streamable-http",
      "url": "https://citations.openkrill.app/mcp"
    }
  }
}

Frequently asked questions

How can I check a list of references in a paper to see which DOIs are real, mismatched or retracted?

Pass 1 to 20 bibliography strings to check_references on https://citations.openkrill.app/mcp. In one call, the server checks each reference against Crossref, DataCite and OpenAlex, returning a per-reference verdict (found, mismatch, not_found, ambiguous or unavailable), the matched DOI, title, authors, year and venue, any field differences, and a retraction status block.

How does Citation Checker report retractions and corrections on a cited paper?

For every matched DOI, check_references inspects Crossref update-to notices and OpenAlex retraction flags. On Wakefield et al. 1998 (10.1016/s0140-6736(97)11096-0), it returns retraction.status: "retracted" along with both dated notices: the 2004-03-06 correction (10.1016/s0140-6736(04)15715-2) and the 2010-02-06 retraction (10.1016/s0140-6736(10)60175-4).

What happens when a citation has a real DOI but the wrong publication year in my bibliography?

When a DOI resolves or a title matches a known work but your citation text disagrees on the year, title or first author (such as citing the 2021 AlphaFold Nature paper as 2019), check_references sets verdict: "mismatch" and lists the conflicting fields in differences (for example ["year"]).

Why did Citation Checker return verdict unavailable instead of not_found on the fake Smith & Lee 2019 Nature reference?

DOI 10.1038/s41586-019-1234-9 did not exist and Crossref had no matching paper, but OpenAlex (which holds many conference papers) could not be searched during that call. Rather than guess not_found from an incomplete search, Citation Checker returns verdict: "unavailable" with an explicit retry message.

Sources