Open an analysis canvas for the user
canvas_openUse this when: the user is choosing an API plan and you want to show them the comparison on a page they can open, which you then steer with canvas_do. Before calling, ask the user for everything the comparison needs: what the API is for, the monthly volume, the budget, must-have conditions (billing, regions, concurrency, compliance) and what would be nice. Put every must-have you can into conditions (the same fields as search; budget as max_monthly_cost_usd, billing as billing_types); only conditions in these fields are checked. Returns canvas_url, the link to give the user, and a short summary: the shown plans with whether each meets every condition, where its cost sits among the shown plans (cost_band), the conditions it fails (fails) and the ones its provider does not state (not_stated). The exact costs, workings, sources and plan buttons are on the canvas only.
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": {
"conditions": "<conditions>",
"user_goal": "<user_goal>"
},
"name": "canvas_open"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| offer_ids | No | Plans the user already has in mind (offer ids from search or check_conditions): shown on the canvas whatever their verdict, two to four side by side. | |
| user_goal | Yes | What the user wants, in their words. It is the canvas title. | |
| conditions | Yes | Search fields, as for search. | |
| must_haves | No | The user's must-have conditions in their words (shown on the canvas; put each one you can into conditions too). | |
| user_context | No | Anything else the user said that matters (team, stack, deadline). | |
| nice_to_haves | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| shown | Yes | ||
| version | Yes | ||
| canvas_id | Yes | ||
| canvas_url | Yes | ||
| what_if_left | No |