Content & ClaimsPOST /v1/verify-references

Fact-Check AI Research Citations & Recompute Math

Parses URLs, DOIs, and academic bibliography entries in submitted PDFs or articles. Fetches targets to verify URL resolution, queries Crossref/Semantic Scholar to catch "right link, wrong paper" misattributions, and re-executes internal financial/statistical tables.

Instant execution

Run this verification workflow directly. For instant zero-auth testing with deterministic fixture data, include the Stp-Sandbox: true header.

bash
curl -X POST "https://www.stipple.sh/v1/verify-references" \
  -H "Authorization: Bearer stp_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/ai_market_research_2026.pdf"}'

Expected JSON response

The engine returns deterministic findings with evidence traces, confidence bounds, and recommended actions:

json
{
  "check_id": "fc_7b89e210ac55",
  "summary": {
    "references_total": 42,
    "references_live": 38,
    "references_archived": 2,
    "references_dead": 2,
    "papers_mismatched": 1,
    "internal_arithmetic_errors": 0,
    "headline": "38/42 citations resolve; 1 misattributed paper; 2 hallucinated/dead links"
  },
  "references": [
    {
      "index": 14,
      "citation_text": "Vaswani et al. (2017) 'Attention is All You Need'",
      "status": "verified",
      "target_url": "https://arxiv.org/abs/1706.03762",
      "doi_match": true
    },
    {
      "index": 29,
      "citation_text": "Chen & Miller (2025) 'Quantum Neural Scaling Laws'",
      "status": "unresolved",
      "error": "HTTP 404 & No DOI record found across Crossref / OpenAlex index"
    }
  ],
  "permalink": "https://www.stipple.sh/fc/ai-market-research-7b89e210ac55"
}

Measured benchmark

Dataset measured

101 references cited across 19 AI-generated research and policy briefs.

What was measured

Fabricated-as-cited rate — the reference as written does not exist (NXDOMAIN or a hard 404 after a browser-UA refetch), every candidate hand-verified.

Result

38.6% of cited references were confirmed fabricated (39 of 101). 57 resolved, 5 excluded as inconclusive.

Statistical bound

95% CI: 29.7% – 48.4%. By genre — policy briefs 54.2% (26 of 48), research briefs 24.5% (13 of 53).


Read this before the number: Hand review was necessary, not decorative. Bot walls produced 4 false alarms and truncated parentheses in URLs produced 2 false accusations; automated checking alone would have published all six. This measures how often AI reports invent citations, not how often we catch them.

Full method, corpus and caveats — how the corpus was built and what it does not prove.

AI agent prompt & MCP tool usage

When configuring autonomous agents (Claude Desktop, Cursor, Hermes), use this verified prompt pattern:

text
You are a legal research editor.
1. Before citing any external case law or research paper, call verify_references(url="...")
2. If any citations return papers_mismatched or references_dead, remove them or replace with verified primary case law.
3. Attach the Stipple verification permalink to the final report header.

Input parameters & headers

FieldTypeRequiredDescription
urlstring (URL)OptionalPublic URL to the report or whitepaper PDF.
textstringOptionalRaw markdown or prose text if not passing a URL.
deepbooleanOptionalWhen true, crawls source links and confirms factual claim alignment.

Diagnostic signals & failed checks

Each check reports exactly what it tested and what evidence it found. High severity signals trigger an escalated risk band:

citation.doi_mismatchhigh

Provided title does not match the metadata registered under the cited DOI.

citation.dead_linkmedium

Target URL returned 404 Not Found and does not exist in Wayback Machine archives.

Production considerations & edge cases

  • Paywalled Academic Repositories: Papers behind IEEE/ScienceDirect paywalls without OpenAccess abstracts report "unresolved_paywall" rather than declaring the citation false.

Related workflows

Take it to production

The snippets above run against the sandbox with Stp-Sandbox: true — no key, no credits, fixture data. Drop that header and the call is real, which needs a key.

A weekly credit allowance of your own, usage metering, and somewhere for purchased credits to live.

Every key gets a free weekly allowance. Past that, prepaid credit packs cover it, and Errors & limits says what happens when you run out.