render_analysis
Render a prior result — including a SYNTHESIS you composed across several queries — as an inline visual Quattr card. ALWAYS prefer this over generating your own HTML, images, or markdown tables — render_analysis produces native Quattr-styled output with built-in honesty chrome, deep-links, and responsive layout that your ad-hoc HTML cannot match.
component="Report" is the richest: a MetricCards summary strip + a comparison table in one card. component="DataTable" renders ranked/breakdown/comparison rows. component="MetricCards" renders stat cards. component="NoticeBanner" renders a capability-gap / no-data state.
EXPRESSIVENESS — what you can do with columns + sections:
• sections — group rows into labeled, tone-colored buckets (e.g. "Keep" green, "Cut" red) with optional criteria descriptions. Use for any bucketed/segmented analysis.
• type:"status" + toneMap — color-coded badge pills in cells (e.g. decision labels like "Keep — best CPA" in green, "Cut" in red, "Watch" in amber).
• identitySubKey — a muted sub-line under each row's identity cell (e.g. intent category under keyword).
• type:"delta" — ±change badges with automatic green/red coloring.
• type:"bar" — inline horizontal bars for share/proportion columns.
• prevKey — prior-period value as a muted sub-line in metric cells.
Pass the rows/cards you already have — no re-query. The honesty chrome (Observational basis, caveats, freshness) always renders as a footer; pass openInQuattrUrl to deep-link. Do NOT call this after a successful auto-rendered governed verb unless you are adding a valid cross-query synthesis or a materially different presentation the user requested. In a valid synthesis, preserve every measured, non-null source metric for every row; use null/— only when the source returned null or explicitly marked the metric not applicable. Never add decorative KPI cards when the table already answers the question. Market share/rates/ranks are non-additive: do not total them or derive a contribution from their sum.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"component": "<component>",
"title": "<title>"
},
"name": "render_analysis"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| asOf | No | Freshness date for the footer, e.g. "2026-06-15". | |
| rows | No | DataTable / Report: the result rows (required for DataTable). | |
| tone | No | NoticeBanner tone: info (capability gap), error (unsupported), neutral (no data). | |
| basis | No | Set when the data is observational (renders the Observational chip). | |
| cards | No | MetricCards / Report: the summary stat cards. | |
| title | Yes | The card title. | |
| reason | No | NoticeBanner: an optional secondary reason line. | |
| caveats | No | Honesty caveats to surface in the footer. | |
| columns | No | RICH comparison columns — use INSTEAD of metricFields for synthesis tables that need a prior value under a cell, multiple typed delta columns (% and pts), inline bars, or color-coded status badges. | |
| message | No | NoticeBanner: the main message (required for NoticeBanner). | |
| tryVerb | No | NoticeBanner: a suggested alternative verb to try instead. | |
| sections | No | GROUPED TABLE — sections with tone-colored headers, optional subtotals and criteria text. Use INSTEAD of rows for bucketed/segmented analyses (e.g. keep/cut/watch decisions). Each section has its own rows subset. | |
| component | Yes | Which palette component to render. "Report" = a synthesis: a MetricCards summary strip + a comparison table in one card (pass both `cards` and `rows`/`columns`). | |
| rankByField | No | DataTable: the metric the rows are sorted by (shown in the footer). | |
| metricFields | No | DataTable: simple metric columns (the rest if omitted). Include "delta"/"deltaPct" to get the gainers/losers split. Ignored when `columns` is given. | |
| identityField | No | DataTable: the label column (first non-numeric column if omitted). | |
| identitySubKey | No | DataTable: a row key whose value renders as a muted sub-line under the identity cell (e.g. intent category under a keyword name). | |
| openInQuattrUrl | No | Deep-link URL for the "Open in Quattr" footer button. |