verifyCitation
Cross-checks a claimed citation (title, plus optional authors/year/container and one identifier) against the metadata resolved from that identifier. Catches the dominant fabrication pattern documented by Topaz et al. (Lancet, 2026): a real, resolvable DOI paired with an invented title and authors.
resolveIdentifier alone never catches this — it returns whatever the registry has for the identifier. verifyCitation is the only tool that compares the claim against reality.
When to use
- A user pastes a citation from an LLM transcript and asks "is this real?"
- An agent is auditing references in a manuscript draft for hallucinations.
- A reviewer wants to flag suspected fabricated citations before submission.
Inputs
Wrap the citation fields inside a claimed object (one citation per call):
claimed(object, required):title(string, required) — the title exactly as cited.- one identifier —
doi,pmid,pmcid,isbn,arxiv,issn,ads, orwhoIrisUrl. authors(array, optional) —[{ "family": "...", "given": "..." }]; sharpens the verdict.year(number, optional);container(string, optional — the journal or book title).
options(object, optional) — e.g.{ "bypassCache": true }.
Outputs
{
"ok": true,
"verdict": "matched" | "mismatch" | "not_found" | "ambiguous",
"confidence": "high" | "medium" | "low",
"matched": { "...": "the resolved CSL item, when one was found" }
}
matched— the claim agrees with the record at the identifier.mismatch— the identifier resolves but the title does not (the fabrication pattern; flag it clearly).ambiguous— the identifier resolves to one paper but the claimed title matches a different real paper (a wrong-identifier error, not a fabrication).not_found— neither identifier nor title resolves anywhere.
Every produced verdict returns 200 OK — the verdict is the answer, not a failure. 4xx/5xx are reserved for protocol errors.
Underlying surfaces
- REST:
POST /api/verifywith{ "claimed": { … } }. One citation per call. - Web UI:
/tools/citation-verifier. - MCP tool:
verifyCitationinscholar-sidekick-mcpv0.7.0+.
Example
curl -sS -X POST "https://scholar-sidekick.com/api/verify" \
-H "Content-Type: application/json" \
-d '{"claimed":{"title":"The title exactly as cited","doi":"10.1038/nphys1170","authors":[{"family":"Verlinde"}],"year":2011}}'
See also
checkRetractionfor retraction status (different concern — fake vs. retracted)./citation-integrityfor the broader trust surface.