update_canvas
Patch a .canvas: add/remove/update nodes and edges by id. Unknown fields are preserved. Removing more than 10 nodes requires confirmation.
| Domain | structured |
| Scopes | write:canvas |
| Access | write |
| Tags | writes, destructive, hitl, domain:structured |
| Profile | full only |
Annotations
Section titled “Annotations”| Annotation | Value |
|---|---|
| Read-only | no |
| Destructive | yes |
| Idempotent | no |
| Accepts an idempotency key | no |
Idempotent is the advisory MCP idempotentHint. Destructive is also yes for a tool that
asks for confirmation only on some calls.
Confirmation (human in the loop)
Section titled “Confirmation (human in the loop)”The handler asks for confirmation only when a call crosses a boundary (for example an overwrite, a folder-boundary crossing or a bulk-cost floor); other calls need none.
- The confirmation binds to the vault paths the call names, which are also checked against the folder ACL.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
vault |
string |
— | Vault id. May be omitted when only one vault is available. length 1–64; pattern ^[a-z0-9_-]+$ |
|
path |
string |
yes | — | length 1–1024 |
add_nodes |
object[] |
— | — | |
add_nodes[].id |
string |
with parent | — | length ≥ 1 |
add_nodes[].type |
enum |
with parent | — | One of: "text", "file", "link", "group" |
add_nodes[].x |
number |
with parent | — | — |
add_nodes[].y |
number |
with parent | — | — |
add_nodes[].width |
number |
with parent | — | — |
add_nodes[].height |
number |
with parent | — | — |
add_nodes[].color |
string |
— | — | |
add_nodes[].text |
string |
— | — | |
add_nodes[].file |
string |
— | — | |
add_nodes[].subpath |
string |
— | — | |
add_nodes[].url |
string |
— | — | |
add_nodes[].label |
string |
— | — | |
add_edges |
object[] |
— | — | |
add_edges[].id |
string |
with parent | — | length ≥ 1 |
add_edges[].fromNode |
string |
with parent | — | length ≥ 1 |
add_edges[].fromSide |
enum |
— | One of: "top", "right", "bottom", "left" |
|
add_edges[].fromEnd |
enum |
— | One of: "none", "arrow" |
|
add_edges[].toNode |
string |
with parent | — | length ≥ 1 |
add_edges[].toSide |
enum |
— | One of: "top", "right", "bottom", "left" |
|
add_edges[].toEnd |
enum |
— | One of: "none", "arrow" |
|
add_edges[].color |
string |
— | — | |
add_edges[].label |
string |
— | — | |
remove_node_ids |
string[] |
— | — | |
remove_edge_ids |
string[] |
— | — | |
update_nodes |
Record<string, Record<string, any>> |
— | — | |
update_edges |
Record<string, Record<string, any>> |
— | — | |
prev_hash |
string |
— | — | |
elicit_token |
string |
— | pattern ^[a-f0-9]{32}$ |
Output
Section titled “Output”| Field | Type | Always present | Description |
|---|---|---|---|
vault |
string |
yes | — |
path |
string |
yes | — |
applied |
object |
yes | — |
applied.nodes_added |
integer |
yes | range ≥ -9007199254740991 |
applied.nodes_removed |
integer |
yes | range ≥ -9007199254740991 |
applied.nodes_updated |
integer |
yes | range ≥ -9007199254740991 |
applied.edges_added |
integer |
yes | range ≥ -9007199254740991 |
applied.edges_removed |
integer |
yes | range ≥ -9007199254740991 |
applied.edges_updated |
integer |
yes | range ≥ -9007199254740991 |
content_hash |
string |
yes | — |
prev_hash |
string |
yes | — |
Related tools
Section titled “Related tools”Other tools in the structured domain: add_kanban_card, create_base, create_canvas, create_excalidraw, format_table, insert_table_column, insert_table_row, list_kanban_boards, move_kanban_card, query_base, query_canvas, read_base, read_canvas, read_excalidraw, read_kanban_board, sort_table_by_column, update_base, update_excalidraw.
Back to the tool catalog.