Improved

Canvas tools replace the layout tools

Tool migration: layout_*canvas_*

The layout_* tools have will be replaced by new canvas_* equivalents.

📘

What you need to do

Update 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 toolReplacementWhat it does
layout_get_dslcanvas_get_canvas_composer_skillReturns the SVG board format spec. Call it once per conversation before writing anything.
layout_createcanvas_create_from_svgCreates board items from an SVG document.
layout_readcanvas_read_as_svgReads existing board items back as an SVG document.
layout_updatecanvas_update_from_svgApplies 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

  1. Search your skills, prompt files, and custom instructions for layout_, then swap each tool name using the mapping table.
  2. Replace DSL syntax examples with SVG. Have your agent call canvas_get_canvas_composer_skill once and work from that spec rather than a hand-written cheat sheet.
  3. Remove any step that called layout_read only to collect IDs before an edit. Feed the previous result_svg back 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 refresh

Some 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_svg takes 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.