ppaperbrainOpen the app

document → fields → endpoint

Turn your document template into an API endpoint

Create invoices, contracts, and reports from your templates with one API call, or an MCP tool your agents can call.

Authoring · the LLM runs here

find fieldsnatural-language editdocument

Runtime · no model, ever

validatemerge fixedrenderPDF
01

It finds the fields

When you create a generator, paperbrain reads the document: required fields, optional ones, and arrays that repeat per row. You never tag a variable by hand. A verifier then checks the inferred schema against the document’s actual placeholders, so if the model invents a field or misses one, you find out.

02

Fixed vs. variable, per field

Mark a field fixed (your company name, a standard rate) and it drops out of the API input entirely. This works inside array rows too: line_items[].unit_price can be a flat $250 on every line while quantity stays caller-supplied.

03

Draft never breaks Live

Publishing freezes the current version as the live input shape. After that you can keep editing and re-inferring all you want; callers and agents still hit exactly what you published. Every generation is logged with its merged input, so any document re-renders byte for byte later.

Agent-first

One document generator, callable two ways.

Every published generator exposes both a REST endpoint and a generate_<slug> MCP tool. Both accept the same JSON input, run the same validation, and render through the same deterministic pipeline.

{
  "name": "generate_invoice",
  "description": "Render an invoice PDF",
  "inputSchema": {
    "type": "object",
    "required": ["invoice_number", "line_items"],
    "properties": { … the same input fields … }
  }
}