Change what the canvas shows
canvas_doUse this when: you have opened a canvas with canvas_open, or a search answer gave you a canvas_id for its analysis_url page (that page is a canvas too: once the person has opened it and tapped it you can change it), and want to show the user what you are explaining. One action per call (unknown or empty args are refused, not ignored; the applied field of the result says what changed): send action and args, e.g. {canvas_id, action: "sort", args: {by: "cost"}}, and make a second call for the next. Actions: filter {only_full, billing, providers}; exclude {offer_ids}; sort {by: cost|name|provider; on a search answer page also score, its default}; compare {offer_ids, 2 to 4} puts plans side by side and charts their cost by volume; highlight {offer_ids, note}; explain {text} adds your explanation to the canvas, marked as yours; what_if {change: search fields} asks the engine again with changed conditions (a budget goes here as max_monthly_cost_usd; a field set to null is removed; at most 6 per canvas); chart {kind: cost_by_volume|none}; reset. To narrow a search answer or add a condition, call search again with this canvas_id (the person keeps the same page). Returns the new summary. Read each shown plan's fails and not_stated before using what_if.
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": {
"canvas_id": "<canvas_id>",
"action": "<action>"
},
"name": "canvas_do"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| action | Yes | ||
| canvas_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| shown | Yes | ||
| version | Yes | ||
| canvas_id | Yes | ||
| canvas_url | Yes | ||
| what_if_left | No |