Template gallery / summary
summary
One-page executive summary: headline, the bottom line up front, a metric strip, findings in two columns, a recommendation block and dated next steps. Sized to stay on a single Letter page.
chromium default PDF 17 top-level fields 1 unit per page
Fields
The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | required | The headline. Two lines at most on one page. |
| deck | string | optional | A sentence of context under the headline. |
| eyebrow | string | optional | |
| organization | string | optional | |
| issued_on | string (date) | optional | |
| accent | string | optional | |
| bottom_line | string | optional | The conclusion, stated first. |
| recommendation | string | optional | |
| findings_heading | string | optional | |
| findings_split | integer | optional | How many findings go in the left column. Defaults to half. |
| prepared_by | string | optional | |
| reference | string | optional | |
| footer_left | string | optional | Overrides prepared_by in the footer. |
| footer_right | string | optional | Overrides reference in the footer. |
| metrics | array of object { label, value, delta, direction } | optional | |
| findings | array of object { title, body } | optional | |
| next_steps | array of object { action, owner, due } | optional |
Default render options
Applied unless you override them. Options are part of the cache key.
| page_size | "Letter" |
| margin | "0.55in" |
| print_background | true |
Example payload
This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.
{
"title": "Move the us-east render pool before the November peak",
"deck": "Q3 reliability held across 14.2 million renders, but one region is now inside the failover margin and the November invoice peak lands in six weeks.",
"eyebrow": "Decision brief",
"organization": "Galley Render — Reliability",
"issued_on": "2026-09-16",
"accent": "#0f766e",
"bottom_line": "Add eight workers to us-east by November 1 at roughly $340 per month. Everything else on the reliability list can wait for Q1 without risk to the invoice peak.",
"metrics": [
{
"label": "Renders, Q3",
"value": "14.2M",
"delta": "+18% vs Q2",
"direction": "up"
},
{
"label": "p95 latency",
"value": "1.41s",
"delta": "−31% vs Q2",
"direction": "up"
},
{
"label": "Failure rate",
"value": "0.17%",
"delta": "−0.06pp",
"direction": "up"
},
{
"label": "us-east headroom",
"value": "19%",
"delta": "policy floor is 25%",
"direction": "down"
},
{
"label": "Cost of fix",
"value": "$340",
"delta": "per month",
"direction": "up"
}
],
"findings": [
{
"title": "us-east is inside the failover margin",
"body": "Peak concurrency reached 19.4 of 24 workers on August 28. Losing a single instance during the invoice peak would queue renders rather than shed them."
},
{
"title": "The latency tail is multi-page PDFs",
"body": "Statements and report appendices account for 5% of volume and 61% of time above p99. The Satori fast path is effectively flat at 55ms."
},
{
"title": "Failures are template bugs, not platform faults",
"body": "Of 24,681 failures, 19.8% were Liquid parse errors in customer-authored templates pushed straight to the API without validation."
},
{
"title": "Cache hit rate slipped 2.1 points",
"body": "Three large accounts began stamping a timestamp into every payload, which defeats the deterministic cache key. A docs fix and one support email should recover most of it."
},
{
"title": "Frankfurt can wait",
"body": "eu-central sits at 26% headroom and its instance price steps down in January. Building it now costs 40% more for the same capacity."
},
{
"title": "Cloudflare overflow works but is expensive",
"body": "Burst traffic routed to Browser Rendering cost $0.19 per thousand against $0.04 in-house. Keep it as a safety valve, not a capacity plan."
}
],
"recommendation": "Approve the us-east expansion now and defer the eu-central build to January. Ship the cache-key guidance to the three affected accounts this week; it is free and recovers more margin than the new workers cost.",
"next_steps": [
{
"action": "Provision eight us-east workers and re-run the load test",
"owner": "S. Adeyemi",
"due": "2026-11-01"
},
{
"action": "Email the three accounts defeating the cache key",
"owner": "M. Mueller",
"due": "2026-09-19"
},
{
"action": "Split report appendix tables into chunked renders",
"owner": "Platform",
"due": "2026-10-15"
},
{
"action": "Revisit the eu-central build with January pricing",
"owner": "S. Adeyemi",
"due": "2027-01-12"
}
],
"prepared_by": "M. Mueller, Reliability",
"reference": "ENG-RPT-0031 · Confidential"
} Render it
curl -sS https://api.galleyrender.com/v1/render \
-H "Authorization: Bearer $GALLEY_API_KEY" \
-H 'content-type: application/json' \
-d '{
"template": "summary@1",
"format": "pdf",
"data": "… the example payload above …"
}' # No API key. The first call mints a 50-render trial.
curl -sS https://mcp.galleyrender.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "render",
"arguments": {
"template": "summary",
"format": "pdf",
"data": { … see the example payload above … }
}
}
}'
Pin the version — summary@1 — in anything you ship. Publishing a new
version never changes an old one. Render endpoint reference →
Renders the example payload on the production service. No account, no key.
JSON Schema
schema.json (17 top-level properties)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "One-page summary",
"type": "object",
"required": [
"title"
],
"additionalProperties": true,
"properties": {
"title": {
"type": "string",
"description": "The headline. Two lines at most on one page.",
"examples": [
"Move the us-east render pool before the November peak"
]
},
"deck": {
"type": "string",
"description": "A sentence of context under the headline.",
"examples": [
"Q3 reliability held, but one region is now inside the failover margin and the November invoice peak lands in six weeks."
]
},
"eyebrow": {
"type": "string",
"default": "Summary",
"examples": [
"Decision brief"
]
},
"organization": {
"type": "string",
"examples": [
"Galley Render — Reliability"
]
},
"issued_on": {
"type": "string",
"format": "date",
"examples": [
"2026-09-16"
]
},
"accent": {
"type": "string",
"examples": [
"#0f766e"
]
},
"bottom_line": {
"type": "string",
"description": "The conclusion, stated first.",
"examples": [
"Add eight workers to us-east by November 1 at roughly $340 per month. Everything else can wait for Q1."
]
},
"recommendation": {
"type": "string",
"examples": [
"Approve the us-east expansion now and defer the eu-central build to January, when the Frankfurt instance price step lands."
]
},
"findings_heading": {
"type": "string",
"default": "What we found",
"examples": [
"What we found"
]
},
"findings_split": {
"type": "integer",
"minimum": 0,
"description": "How many findings go in the left column. Defaults to half.",
"examples": [
3
]
},
"prepared_by": {
"type": "string",
"examples": [
"M. Mueller, Reliability"
]
},
"reference": {
"type": "string",
"examples": [
"ENG-RPT-0031 · Confidential"
]
},
"footer_left": {
"type": "string",
"description": "Overrides prepared_by in the footer.",
"examples": [
"M. Mueller, Reliability"
]
},
"footer_right": {
"type": "string",
"description": "Overrides reference in the footer.",
"examples": [
"ENG-RPT-0031 · Confidential"
]
},
"metrics": {
"type": "array",
"maxItems": 5,
"items": {
"type": "object",
"required": [
"label",
"value"
],
"properties": {
"label": {
"type": "string",
"examples": [
"p95 latency"
]
},
"value": {
"type": "string",
"examples": [
"1.41s"
]
},
"delta": {
"type": "string",
"examples": [
"−31% vs Q2"
]
},
"direction": {
"type": "string",
"enum": [
"up",
"down"
],
"default": "up",
"examples": [
"up"
]
}
}
}
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"examples": [
"us-east has 19% headroom"
]
},
"body": {
"type": "string",
"examples": [
"Peak concurrency hit 19.4 of 24 workers on Aug 28. Our failover policy needs 25%."
]
}
}
}
},
"next_steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"action"
],
"properties": {
"action": {
"type": "string",
"examples": [
"Provision eight us-east workers"
]
},
"owner": {
"type": "string",
"examples": [
"S. Adeyemi"
]
},
"due": {
"type": "string",
"format": "date",
"examples": [
"2026-11-01"
]
}
}
}
}
}
}