DashboardsWriteDo not retry automatically

Compose dashboard

compose_dashboard

Create queries + widgets + a dashboard ATOMICALLY in one call, with a real 12-column grid layout (auto-packed unless you pass one: KPI row on top, charts in half-width pairs, tables full-width). Pass ONE of: widgets (create_widget-shaped specs), fromFeed (feedId + dataType), or fromBank (bankId + dataType) — fromBank builds the curated starter directly from a connected bank with NO feed. WITH `widgets`, if the widgets read data you MUST also pass `dataSource` (bankId or feedId + dataType) to bind them, or they render "No data source". PREFER THIS over the create_dashboard → create_widget → attach_widget sequence: one call cannot leave orphaned library widgets or a single-column stack. Returns the dashboard id, slug, path, and created widget ids.

Parameters

ParameterTypeRequiredDescription
operationIdstringoptionalInput for operationId.
namestringrequiredInput for name.
descriptionstringoptionalInput for description.
iconstringoptionalInput for icon.
folderIdstring | nulloptionalInput for folderId.
visibility"private" | "workspace" | "public-link" | "public-indexed"optionalDefault "workspace".
widgetsobject[]optionalWidgets to create + pin. Provide either widgets OR fromFeed.
setupWidgetsobject[]optionalDesign widget placements that stay in setup until a data source is chosen.
fromFeedobjectoptionalAlternative to widgets: build the curated starter dashboard for this feed (KPI row + signature charts + records table).
fromBankobjectoptionalAlternative to widgets/fromFeed: build the curated starter dashboard reading a CONNECTED BANK directly (no feed needed — the render plane reads the bank live). Use this when the user has a bank connected but no feed for the data type.
dataSourceobjectoptionalWith `widgets`: BIND every data-driven widget (chart/table/kpi) to this source, so the dashboard has real data. REQUIRED for a custom `widgets` dashboard whose widgets read data — otherwise they render "No data source". Pass exactly one of bankId (a connected bank — no feed needed) or feedId, plus the dataType. Resolve it from list_buildable_insights (prefer a live bank source). Ignored for fromBank/fromFeed (those bind their own source).
layoutobject[]optionalExplicit 12-col grid cells matched to widgets by index. Omit to auto-pack (KPI row on top, charts in half-width pairs, tables full-width).
filtersunknown[]optionalInitial DashboardFilter[]. A pinned date_range filter is added when absent.
draftbooleanoptionalCreate as a staged DRAFT: hidden from the dashboards list until committed via commit_dashboard_draft (renderable via direct link meanwhile).

Example call

The tool call an MCP client sends (required arguments shown with placeholder values).

{
"tool": "compose_dashboard",
"arguments": {
"name": "value"
}
}

Use this tool in

Related Dashboards tools