Search⌘KHide sidebarOpen menu
Switch to dark mode
Copy page content as Markdown⌘⌥C
Login
Reports

Reports

PDF documents built from your data, on demand or on a schedule.

A report is a PDF layout bound to SQL over your datasets. Each run reads the current data, fills the layout and stores the result as a document you can view, download and tag. Reports belong to the workspace, so every user in the tenant sees the same reports, templates and documents.

Reports need an object store configured for the tenant. Without one, saving a report fails with OBJECT_STORE_NOT_CONFIGURED.

Create a report

You create and change reports through the assistant. The Reports page in the sidebar lists them on a Reports tab and a Templates tab, but it has no editor.

Ask the assistant

Open AI Chat and describe the document: what it should show, which datasets it reads and how it should look. For example, "a one-page monthly supplier summary with a table of the ten largest open invoices". See Building with the assistant.

Check the preview

The assistant shows the rendered report in the chat's artifact pane. Ask for changes until the layout is right.

Save it

Saving renders one document first, so SQL errors and layout errors are rejected with diagnostics and nothing is stored. The assistant reads the diagnostics and fixes the report.

A report appears as a node on the Home graph, with a Reads edge from each dataset it uses. Click the node to open its details. See Data landscape.

An MCP client with a write key can create and change reports too, using create_report and update_report. Reports write PDFs to your tenant's storage, so give write keys only to people and tools you trust with that. See Tool reference.

Run and schedule

A report runs in three ways:

  • Run now on the report's page.
  • Through the assistant in chat.
  • On a schedule: a cron expression with a time zone. A report cannot run more often than every 15 minutes, and saving fails if the schedule would.

A run shows how many documents were issued and how many failed. A report runs one at a time: if you start a run while one is in progress, you get REPORT_ALREADY_RUNNING. A run cannot be cancelled once it has started.

Per-row reports

A whole report issues one document per run. A per-row report issues one document for each value of a key column that a query returns, such as one statement per customer.

  • Each key value is issued once. Later runs only issue documents for new key values.
  • Keys that already exist when you create the report count as issued, unless you ask for a backfill, which issues documents for them too.
  • A document that failed is tried again by the next run.

Per-row queries return at most 10,000 rows, and a key can be at most 1,024 bytes.

Archive and tags

The report's page lists its documents. Search them by label or tag, open one page by page, or download the PDF. Tag a document to find it later; a document can hold up to 20 tags of up to 64 characters each. Setting tags replaces the previous set.

Documents are kept until the report is deleted. Deleting a report deletes its documents.

Templates and images

A template is a reusable layout that reports import, so a letterhead or table style lives in one place. Templates and images are shared across the tenant. Charts are supported in layouts.

  • A workspace can hold up to 50 templates.
  • Images can be PNG, JPEG, WebP or SVG, up to 2 MiB each, with up to 20 per report or template.
  • Deleting a template stops every report that imports it from running, so check which reports use it first, for example by asking the assistant.

Template names use lowercase letters, digits and hyphens, up to 64 characters.

Automations that render PDFs

An automation can turn its finding into a PDF. Choose a report template in the automation's definition. After a run completes, its page offers the PDF with a per-page view, and a PDF and Summary toggle. If the PDF is missing, choose Render PDF, or Retry render after a failed render.

Only a completed run can be rendered. A run that failed or is still in progress returns AUTOMATION_RUN_NOT_COMPLETED, an automation without a template returns AUTOMATION_HAS_NO_TEMPLATE, and a template name that does not exist is refused when you save, with REPORT_TEMPLATE_NOT_FOUND on the template field.

If a run fails

Open the report's page and read the latest run, which shows how many documents were issued and how many failed. Failed per-row documents are tried again on the next run. A failed scheduled run shows only in the Runs list, so check it there, or poll list_report_documents over MCP.

CodeMeaning and what to do
REPORT_INVALIDThe SQL or the layout does not work. Read the diagnostics, which name the binding that failed.
REPORT_CONFLICTThe report changed while your request was running. Try again.
REPORT_ALREADY_RUNNINGA run is in progress. Wait for it to finish.
REPORT_TEMPLATE_LIMITThe workspace holds 50 templates. Delete one you no longer use.
REPORT_ASSET_TOO_LARGE, REPORT_ASSET_LIMITAn image is over 2 MiB, or the report or template already has 20.
NO_RUNNER_AVAILABLENothing was free to render the report. Try again shortly.
OBJECT_STORE_NOT_CONFIGUREDThe tenant has no object store. Configure one first.

The full list is in Error codes.

Limits

LimitValue
Layout source256 KiB
Bindings per report10
Rows per binding10,000
JSON per binding8 MiB
Per-row query10,000 rows, 8 MiB, key up to 1,024 bytes
Pages per document100
PDF size25 MiB
Time to render a document30 seconds
ScheduleAt most once every 15 minutes
Templates per workspace50
Images2 MiB each, 20 per report or template
Tags per document20, up to 64 characters each
DocumentsKept until the report is deleted

Other limits are listed in Limits.

Last updated on

On this page