Claude Citations for AI Agent Fact-Checking
Citations transform Claude from a conversational AI into a fact-checkable system—your agents can now point to exact sources, letting end-users verify claims and you build trustworthy products faster.
Why Citations Matter for AI Agents
When you deploy Claude agents into production, users won't trust unsourced answers. Citations let your agent say 'I found this fact in document X, section Y' rather than just stating claims. This becomes critical for customer support bots, research assistants, and compliance-heavy workflows.
Without citations, you're debugging hallucinations blind. With them, you can trace every claim back to its origin, making it trivial to catch when Claude pulls from the wrong knowledge base or misinterprets a document.
How Claude's Citation API Works
Claude accepts citations through the `citations` parameter in your prompt. You pass structured references—URLs, document IDs, page numbers—and Claude returns not just text but metadata pointing back to those sources. The model is trained to cite when it uses external knowledge.
In practice: you send Claude a document chunk with `{source_id: 'doc_123', text: '...'}`, ask a question, and Claude's response includes `citations: [{source_id: 'doc_123', quote: '...relevant text...'}]`. Your agent then validates these citations against your source database before responding to users.
Implementing Citations in Next.js + Supabase
Store your source documents in Supabase with vector embeddings for semantic search. When a user query arrives, retrieve relevant chunks using similarity search, then pass them to Claude with citation metadata.
Here's the core flow:
const response = await claude.messages.create({
model: 'claude-3-5-sonnet-20241022',
max_tokens: 1024,
messages: [{
role: 'user',
content: [
{
type: 'text',
text: `Answer this question using only the provided sources: ${userQuestion}`
},
...sourceChunks.map(chunk => ({
type: 'text',
text: chunk.text,
source_id: chunk.id
}))
]
}]
});
const citations = response.content[0].citations || [];
const verified = citations.map(c => ({
sourceId: c.source_id,
quote: c.quote,
documentUrl: sourceMap[c.source_id]
}));Fact-Checking Your Agent's Responses
After Claude returns a response with citations, validate them. Query Supabase to confirm the cited source actually contains the quoted text. If a citation doesn't match, flag it and retry with stricter instructions.
This two-step validation—citation extraction plus source verification—catches both hallucinations and misattributions. Log failed validations to identify patterns in your knowledge base that confuse the model, then refine your chunks.
Open-Source Implementation: Pantheon
Lewis Allen's Pantheon repo (github.com/lewisallena17/pantheon) provides a production-ready example of Claude citations in a multi-agent system. It demonstrates chunking strategies, embedding pipelines with Supabase pgvector, and citation validation loops.
Fork it, adapt the prompt templates to your domain, and use the citation validation code as a starting point. The repo includes example queries showing how citations surface in real agent responses.
Common Pitfalls and Fixes
**Chunks too large**: Claude citations work best with 200–500 token chunks. Large documents create ambiguous citations. **Stale sources**: If your knowledge base updates but embeddings don't, citations point to outdated info. Rebuild vectors on each update. **Missing source metadata**: Always store document URL, update date, and authority level alongside chunks so users can assess credibility.
Test your citation system against adversarial queries—ask for facts from sources you didn't provide. A robust system should either cite correctly or decline to answer.
Open-source implementation
Everything in this article runs in pantheon — a production-ready Next.js + Supabase + Claude starter. Clone it, deploy to Vercel, run PM2. The dashboard auto-commits every agent edit and reverts itself if TypeScript breaks.
◈ Tools mentioned
- Supabase — open-source Firebase alt
- Vercel — zero-config Next.js hosting
- Claude — AI assistant by Anthropic
- Gumroad — sell digital products
Some links may pay us a referral if you sign up. Never affects the price you pay.
Get the full starter kit
Start with Pantheon, implement citations in your Next.js agent today, and turn user doubt into trust through verifiable sources—get the full starter kit below.