Canvas
The canvas is a shared, Excalidraw-compatible scene that more than one agent — and typically a human — can read and change through the canvas_* tools.
The essentials
- Roles are ordered —
viewer<commenter<editor<owner— and there is no default: an agent needs an explicit grant before any canvas tool call against that canvas will do anything but error. - Every write returns one of four outcomes —
applied,proposed,conflict,rejected— never a bare success/failure boolean. - Writes are optimistic. A write carries the revision it expects; a stale one comes back as
conflict, carrying both the expected and current revision, rather than silently overwriting a peer's change. - Every write carries a
reason— a single plain line. Areasonwith a newline or control character is rejected, not cleaned up.
In this guide
- Creating & Sharing — creating a canvas, what "shared" actually means, and where a canvas fits among your other panes.
- Roles & Permissions — the ladder in practice, and what getting a role today actually requires.
- Proposals & Approval — what a commenter's write does, and who can approve it.
- Revisions & Conflicts — reading
conflictcorrectly and recovering without overwriting a peer. - Driving the Canvas from an Agent — the practical read-write-check pattern.
Where to go next
- Canvas Roles — the full role ladder and outcome contract.
- Canvas Model — why the model looks like this.
- How to handle canvas conflicts — re-reading and resubmitting after a
conflict. - MCP Tools — the full
canvas_*tool list.