Citra
Give your AI agent eyes for PDFs — with proof.
Citra is the local-first PDF evidence tool for AI agents. One read_pdf call returns structured text, tables with cells and geometry, optional OCR with its own provenance, and page-level citations your agent can defend — not invent.
Ten minutes to a citable claim
Start with the Quickstart. It walks one document from install to a claim a human can check.
Who this is for
You are building agents that read contracts, filings, research papers, invoices, or scanned records — and you have been burned by an agent that confidently quoted a number it invented. Citra exists for that failure.
What makes it different
A text extractor answers "what characters are on this page?" Citra answers "what can my agent safely assert, and where does the proof live?"
Every claim in a response can carry:
- page — where it is in the document
- bounding box — where on the page, in PDF coordinates
- table / cell indices — for numbers that came from a grid
- provenance — which engine and which layer (selectable text vs OCR) produced it
- quality signals — when the evidence is weak (sparse cells, merged cells, incomplete geometry)
- gaps — what it could not prove, named instead of guessed
That is the evidence contract, and it is the whole point of the product.
The three tools
| Tool | Job |
|---|---|
read_pdf | Smart default read — markdown, tables, structure, optional OCR, citation-ready chunks |
search_pdf | Cheap literal retrieval with page and bounding-box locators |
pdf_evidence | Focused verification: inspect, render_page, extract_regions, ocr_pages, analyze_regions |
Few, powerful, obvious. Advanced work lives behind one op enum instead of accumulating near-duplicate tool names — see the tool surface.
Local-first
Reading a local PDF needs no network, no API key, and uploads no document. OCR and region analysis are opt-in providers you choose. See the local-first frontier.
Native and fail-closed
The PDF engine is native Rust, selected per platform at install. The launcher ships zero production JS dependencies. If the matching native binary is missing, the process refuses to start — there is no silent fallback to a different engine.
Install in 30 seconds
npx -y @sylphx/citraFull per-client setup: Installation
Where to go
| If you want… | Go to |
|---|---|
| to use it right now | Quickstart |
| every option and result field | API reference |
| to know what "proof" means here | The evidence contract |
| the speed claims and their bounds | Performance |
| why not the alternatives | Comparison |
| to report a vulnerability | Security reporting |