
The full power
of LaTeX for
your agents.
With your letterhead and scientific-grade math, in under a second.
Any document
Set your letterhead and forget the rest.
Set your letterhead or brand identity once and generate every document without worrying about anything else, from a prescription to a scientific paper. Puffin compiled all six, with made-up companies and people.

Scientific paperTwo columns, equations, a pgfplots chart, tables and references. 
InvoiceYour logo and colors, line items and totals that always add up. 
Financial reportKPIs, a bar chart and an income statement with aligned figures. 
Medical prescriptionA clinic letterhead, the patient's details and a signed footer. 
Lab reportResults against reference ranges, with out-of-range values flagged. 
CertificateA landscape page with serif type, a seal and two signature lines.
Your brand, no extra work
Letterhead, logo, typography and colors live in the template. Every document comes out equally polished, with no one laying it out.
High-precision math
Equations, units and numbered references at the quality of a scientific publication, hard to reach with engines that convert HTML to PDF.
Charts and diagrams
TikZ and pgfplots draw curves, schematics and diagrams inside the same document, as vectors.
A person can always review it
The document is LaTeX that can be read, reviewed and fixed by hand. The human stays in the loop, even when an agent writes it.
Tell us which documents you send today and how they should look.

Built for agents
When something breaks, the agent knows what to fix.
Puffin is built to work with AI agents. The agent writes LaTeX and Puffin compiles it. When something fails, instead of a log hundreds of lines long, it answers with the file, the line and a hint, so the agent can fix it without guessing.
MCP tools
compile_latexCompiles a LaTeX document and returns the PDF.
check_latexChecks a document without producing the PDF: errors and warnings.
list_templatesLists catalog templates and their options.
preview_templateRenders a template with sample data, as PNG.
test_componentTests a component before using it.
compose_documentBuilds a document from blocks and a template.
The same operations exist over REST. An agent without MCP can do everything an agent with MCP can.
POST /v1/latex (HTTP 422) to an undefined command and an unclosed list:{
"error": "latex_error",
"detail": "the document has LaTeX errors",
"diagnostics": [
{
"severity": "error",
"code": "undefined-command",
"file": "prescription.tex",
"line": 4,
"message": "Undefined control sequence: \\dosis",
"hint": "\\dosis does not exist: check its spelling or load the package that defines it."
},
{
"severity": "error",
"code": "mismatched-environment",
"file": "prescription.tex",
"line": 7,
"message": "LaTeX Error: \\begin{itemize} on input line 5 ended by \\end{document}.",
"hint": "The itemize environment you opened on line 5 was closed with \\end{document}. Close it with \\end{itemize}."
}
]
}API
One call, one PDF.
JSON in, PDF out, stateless. The prescription and pre-printed form templates keep the same contract as BlinkPDF, so you can switch services without touching the client.
POST /v1/latex
content-type: application/json
{
"main": "note.tex",
"files": {
"note.tex": "\\documentclass{article}\\begin{document}Hello\\end{document}"
}
}
→ 200 OK · application/pdfPOST /v1/templates/sandwich-document/renderPrescription, note or visit summary: header, Markdown body and signed footer.
POST /v1/templates/layout-document/renderPre-printed form: text and images in fixed areas of the page.
POST /v1/latexYour own LaTeX, with strict mode and check-only mode.
POST /v1/documents/composeA document built from blocks: sections, Markdown and components.
GET /v1/templates · /v1/componentsCatalog with typed options, examples and previews.
Early access comes with your API key and the server address.

Security
LaTeX is a programming language. We treat it like one.
A LaTeX document can try to read files on the server. Puffin runs it as untrusted code, even when it comes from one of its own templates.
Every document in its own cage
pdfTeX runs under Landlock and a seccomp filter: it reads only TeX and the templates, writes only to its own folder, with no network and no other programs.
Nothing is stored
No database and no storage. Each document's folder is deleted after the response, and images do not stay in memory.
Checked at startup
Before serving, the server tries to escape its own cage. If something that should fail does not, it composes nothing.
No surprises in the PDF
A PDF made from your own LaTeX is rejected if it carries JavaScript, actions that launch programs, or attachments.
Bounded
Time, memory, output size and file count are capped. An infinite loop gets cut off; a traffic spike gets “retry” instead of waiting.
Numbers
- ~0.4 s
- per prescription, on Render's smallest instance (half a CPU)
- ~0.6 s
- for a 7-page medical record
- 47 KB
- for a prescription with logo and signature
- 1
- pdfTeX pass, even with «Page N of M»
Measured on October 25, 2026, server time, with test data.
FAQ
Questions, answered.
What is Puffin?
Puffin is a LaTeX engine that compiles real LaTeX (pdfTeX) into PDF through a REST API and an MCP server. You set your letterhead once in a template and generate every document from it, from a prescription or an invoice to a scientific paper.
How do AI agents use Puffin?
The agent writes LaTeX and Puffin compiles it. Over MCP it can call compile_latex, check_latex, list_templates, preview_template, test_component and compose_document. The same operations exist over REST, so an agent without MCP can do everything an agent with MCP can.
What happens when a LaTeX document fails to compile?
Instead of a log hundreds of lines long, Puffin answers with HTTP 422 and structured diagnostics: the file, the line and a hint, so an agent can fix the document without guessing.
Why LaTeX instead of converting HTML to PDF?
LaTeX typesets equations, units and numbered references at the quality of a scientific publication, and draws charts and diagrams with TikZ and pgfplots as vectors. The source stays readable, so a person can review and fix a document even when an agent wrote it.
Does Puffin store my documents?
No. Puffin is stateless: it has no database and no storage. Each document's folder is deleted after the response, and every document compiles under Landlock and a seccomp filter, with no network and no other programs.
How fast is Puffin?
Measured on October 25, 2026, on the server with test data: about 0.4 s per prescription on Render's smallest instance (half a CPU) and about 0.6 s for a 7-page medical record. A prescription with logo and signature weighs 47 KB.
Can I switch from BlinkPDF to Puffin?
For prescriptions, notes, visit summaries and pre-printed forms, yes: those templates keep the same contract as BlinkPDF, so you can switch services without touching the client. Fillable PDF forms are not part of Puffin.
How do I get early access?
We're opening Puffin to a small group of teams. Press “Request early access” and tell us what documents you want to generate, roughly how many per month, and whether you'll call Puffin from your own code (REST) or from an AI agent (MCP). Early access comes with your API key and the server address.

Serious documents, without fighting LaTeX.
We're opening Puffin to a small group of teams. Tell us what you need, whether it's branded documents, science or your agents, and we'll set you up.


