Canvas tools replace the layout tools
Tool migration: layout_* → canvas_*
layout_* → canvas_*The layout_* tools have will be replaced by new canvas_* equivalents.
What you need to doUpdate any saved skills, prompts, custom instructions, or automations that call the
layout_*tools by name. Both tool families are live today, so nothing breaks while you migrate.
What changed
Each layout tool has a direct replacement:
| Deprecated tool | Replacement | What it does |
|---|---|---|
layout_get_dsl | canvas_get_canvas_composer_skill | Returns the SVG board format spec. Call it once per conversation before writing anything. |
layout_create | canvas_create_from_svg | Creates board items from an SVG document. |
layout_read | canvas_read_as_svg | Reads existing board items back as an SVG document. |
layout_update | canvas_update_from_svg | Applies an SVG document to the board as a diff. |
A fifth tool, canvas_load_format_skill, has no layout equivalent. It layers format-specific guidance on top of the base spec, starting with diagramming, so an agent drawing a flowchart or an ERD gets that notation's colors, shapes, and a worked example.
📈 Improvements over layout tools
The layout DSL covered eight item types: frames, stickies, shapes, text, cards, connectors, docs, and tables. The canvas format covers more than twenty, so a single call can produce:
- Images placed from any reachable URL.
- Mermaid diagrams as native diagram widgets, covering flowcharts, ERDs, and UML class and sequence diagrams.
- Kanban boards and timelines, including Gantt-style roadmaps, as table layouts with typed columns.
- Code widgets with syntax highlighting for languages including Python, TypeScript, SQL, and YAML.
- Facilitation widgets such as polls, dot voting, planning-poker estimates, alignment scales, spinners, flip cards, and countdowns.
- Embeds and URL previews for linked specs and designs.
Shapes, text, cards, and custom widgets also accept rotation, labels take inline formatting like bold and italic, and creation order controls z-index, so a connector drawn before its nodes sits behind them.
Migrating your skills and prompts
- Search your skills, prompt files, and custom instructions for
layout_, then swap each tool name using the mapping table. - Replace DSL syntax examples with SVG. Have your agent call
canvas_get_canvas_composer_skillonce and work from that spec rather than a hand-written cheat sheet. - Remove any step that called
layout_readonly to collect IDs before an edit. Feed the previousresult_svgback in instead.
Why SVG
The layout tools used a custom line-based DSL. Every model had to learn that syntax from the spec on each run. SVG sits in every model's training data. Agents already know the format, which means Miro inherits model improvements instead of re-tuning prompts for a proprietary syntax.
Reconnect rather than refreshSome clients cache the tool list at the connector level. If your agent still asks for a
layout_*tool after you migrate, fully disconnect and reconnect the Miro MCP server. Refreshing the tool list is often not enough.
📚 Good to know
- Read narrowly on large boards.
canvas_read_as_svgtakes a board URL, optionally scoped to a single frame with?moveToWidget=<frame-id>. Reading a whole board past a few hundred widgets gets expensive, so scope to the frame you are working in. - Agents can delete widgets. The canvas tools are the first board tools that can remove items. Deletion is explicit and consent-gated, and board history recovers anything removed by mistake.
For the full tool list and format spec, see the Miro MCP tools reference.