Canvases
A canvas is a dashboard your agent builds for you out of live queries against the workspace database. You describe what you want to see in the conversation; the agent introspects the schema, writes the queries, lays out the widgets, and the numbers keep updating after it walks away.
What a canvas is
Canvases come in two shapes. A workspace canvas stands on its own and a workspace can have as many as it needs. An agent canvas is attached to one specific agent and appears as a split beside that agent's conversation, so the chat sits on one side and the agent's own readout on the other. An agent has at most one.
There is no drag-and-drop builder. Canvases are authored by agents, through tools, which is what makes them cheap enough to ask for casually and easy to change by saying what is wrong with them.
How an agent builds one
- 01
Learn the data
agnt_canvas_introspect_schemareturns the shape of the workspace database, so the agent writes queries against real columns instead of guessing them. - 02
Check the query
agnt_canvas_preview_queryruns a candidate query and shows what comes back. A widget bound to a query nobody ran is how a dashboard ends up empty. - 03
Place the widgets
agnt_canvas_put_widget,agnt_canvas_update_widget,agnt_canvas_remove_widgetandagnt_canvas_set_layoutbuild and arrange the grid.
| Tool | What it does |
|---|---|
agnt_canvas_introspect_schema | Learn the shape of the workspace database before writing a query. |
agnt_canvas_preview_query | Run a candidate query and see what it returns, before binding it to a widget. |
agnt_canvas_put_widget | Add or replace a widget. |
agnt_canvas_update_widget | Change an existing widget in place. |
agnt_canvas_remove_widget | Remove a widget. |
agnt_canvas_set_layout | Position and size the widgets on the grid. |
agnt_canvas_get | Read the current canvas spec back. |
agnt_canvas_snapshot | Render a PNG of the canvas, or one widget on it, and return a durable image URL. Read-only. |
agnt_canvas_chart_render | Render a one-off chart from a widget spec plus inline rows or its own query. Persists nothing. |
The widget catalog
24 visualization types, one registry. The same registry generates the contract injected into the put_widget tool description, so an agent authors from the exact config keys the renderer expects rather than from a guess.
big_valueBig valuestat_groupStat groupmeasure_listMeasure listtrendTrendstacked_barStacked barcomboCombo (bar + line)funnelFunneltableTablematrixMatrixpiePie / donutkanbanKanban boardprogressProgress meteractivity_feedActivity feedcontent_listContent listrecord_detailRecord detailheatmap_calendarCalendar heatmapcalendar_monthCalendar monthganttGantt timelineforecastForecast / burn-updot_stripDot stripcompareCompare pairchecklistChecklistwaterfallWaterfallapprovalsApprovalsViewing a canvas
The dashboard lists a workspace's canvases as a card grid. Each card's preview is drawn from the saved spec rather than by running the widgets, so opening the list costs nothing and fires no queries. Opening a card gives you the full tab, where the widgets run for real.
An agent canvas is not in that grid. It lives beside its agent, in the split view next to the conversation.
Gating
The canvas and canvas-sharing families are sold under the Database & Canvas module, $19/mo with a 7-day free trial. That is the same module that carries the workspace database the canvases query, which is why the two ship together.
Both families are served on the base connection, so an agent can see the tools. A call made without the module comes back as a requires_upgrade result naming the module, its price and a confirm URL for a person to tap. It is a tool result, never a protocol error, so the agent can relay the offer instead of burying a failure.
The database the canvases read from is documented on workspace database.