Citation Verification
Verify that citations in a document actually resolve and support the claims they're attached to. Uses the Stipple API (free anonymous tier, no signup) for citation resolution, arithmetic recomputation, and unsupported-claim detection.
When to use
- Before submitting or publishing a research report, tender response, or whitepaper
- Reviewing an LLM-generated document (LLM citations are plausibly-formatted and frequently wrong)
- Due diligence on third-party reports
- Academic reference checking
Instructions
Get the document. Ask the user for a URL to the report, or a local file path (PDF, DOCX, Markdown). If the user pastes text directly, skip to step 3 with text input.
Run verification. POST the document to Stipple's citation verification endpoint:
curl -X POST https://www.stipple.sh/v1/verify-references \
-F "file=@report.pdf" \
-H "Authorization: Bearer $STIPPLE_API_KEY"
The anonymous free tier works without the Authorization header. Deep mode (?deep=true) costs more credits but cross-checks citations against live web sources.
Interpret the response. The result includes:
verification_coverage — percentage of claims verified (e.g. "78%")
citations[] — per-citation status: resolved and matching, resolved but mismatched, or unresolvable, with the issue explained
arithmetic[] — recomputed figures vs stated figures (flags decimal shifts, wrong sums)
unsupported_claims[] — claims with no citation at all
Report honestly. Present results as verification coverage, not a truth verdict:
- "21/27 citations resolve and match"
- "[x] FY24+FY25 revenue stated $4.2m, actual $3.7m"
- "[!] 'industry-leading accuracy' — no source in document"
- Unverified ≠ false. The goal is telling the user which claims are backed and which aren't.
Offer remediation. For failed citations, suggest: fixing the decimal shift, finding the correct source, or removing the unsupported claim.
Output format
Verification coverage: 78%
Citations: 21/27 resolve and match
[+] "ABS unemployment 4.1% April 2026" — matches abs.gov.au
[-] "AI adoption grew 340% in 2025" — source states 34%, decimal shifted
Arithmetic: 12/13 recompute correctly
[x] FY24 + FY25 revenue — stated $4.2m, actual $3.7m
Unsupported claims: 2
[!] "industry-leading accuracy" — no source in document
Notes
- Works on PDF, DOCX, MD, TXT. For pasted text, POST JSON:
{"text": "..."}
- Deep verification (
deep=true) is slower and costs more credits but resolves citations against live sources
- Pairs well with
verify-document (is the source doc itself authentic?) run first
- Anonymous free tier: shared weekly allowance. Get a free key at https://www.stipple.sh for your own metering
1---2name: verify-citations-23description: Verify citations and references in a document, report, or article against real sources. Use when the user asks to fact-check, verify references, check citations, or validate evidence in research reports, tender responses, whitepapers, or academic writing.4---56# Citation Verification78Verify that citations in a document actually resolve and support the claims they're attached to. Uses the Stipple API (free anonymous tier, no signup) for citation resolution, arithmetic recomputation, and unsupported-claim detection.910## When to use1112- Before submitting or publishing a research report, tender response, or whitepaper13- Reviewing an LLM-generated document (LLM citations are plausibly-formatted and frequently wrong)14- Due diligence on third-party reports15- Academic reference checking1617## Instructions18191. **Get the document.** Ask the user for a URL to the report, or a local file path (PDF, DOCX, Markdown). If the user pastes text directly, skip to step 3 with `text` input.20212. **Run verification.** POST the document to Stipple's citation verification endpoint:2223 ```bash24 curl -X POST https://www.stipple.sh/v1/verify-references \25 -F "file=@report.pdf" \26 -H "Authorization: Bearer $STIPPLE_API_KEY"27 ```2829 The anonymous free tier works without the Authorization header. Deep mode (`?deep=true`) costs more credits but cross-checks citations against live web sources.30313. **Interpret the response.** The result includes:32 - `verification_coverage` — percentage of claims verified (e.g. "78%")33 - `citations[]` — per-citation status: resolved and matching, resolved but mismatched, or unresolvable, with the issue explained34 - `arithmetic[]` — recomputed figures vs stated figures (flags decimal shifts, wrong sums)35 - `unsupported_claims[]` — claims with no citation at all36374. **Report honestly.** Present results as *verification coverage*, not a truth verdict:38 - "21/27 citations resolve and match"39 - "[x] FY24+FY25 revenue stated $4.2m, actual $3.7m"40 - "[!] 'industry-leading accuracy' — no source in document"41 - Unverified ≠ false. The goal is telling the user *which* claims are backed and which aren't.42435. **Offer remediation.** For failed citations, suggest: fixing the decimal shift, finding the correct source, or removing the unsupported claim.4445## Output format4647```48Verification coverage: 78%4950Citations: 21/27 resolve and match51 [+] "ABS unemployment 4.1% April 2026" — matches abs.gov.au52 [-] "AI adoption grew 340% in 2025" — source states 34%, decimal shifted5354Arithmetic: 12/13 recompute correctly55 [x] FY24 + FY25 revenue — stated $4.2m, actual $3.7m5657Unsupported claims: 258 [!] "industry-leading accuracy" — no source in document59```6061## Notes6263- Works on PDF, DOCX, MD, TXT. For pasted text, POST JSON: `{"text": "..."}`64- Deep verification (`deep=true`) is slower and costs more credits but resolves citations against live sources65- Pairs well with `verify-document` (is the source doc itself authentic?) run first66- Anonymous free tier: shared weekly allowance. Get a free key at https://www.stipple.sh for your own metering