MCP App Store

Overview

Connect Claude to Miro to summarize existing boards or build new ones from scratch. Run sharper workshops, sprint planning, and product strategy sessions with Claude-generated layouts, frames, sticky notes, images, docs, diagrams, tables, and more. Key use cases: • Summarize and search boards: Drop a board URL into Claude to pull out themes, decisions, and open questions from retros, planning sessions, and strategy maps. Search across every board you have access to. • Build new boards from scratch: Generate ready-to-run layouts for retros, sprint planning, and product strategy with frames, sticky notes, cards, tables, docs, and images. • Bring research onto the canvas: Have Claude research a topic — competitors, user feedback, market trends, prior art — and lay the findings out on a fresh board as diagrams, sticky notes, tables, docs, and images, ready to share with your team. • Visualize complex ideas: Turn a prompt, PR, or spec into architecture, sequence-flow, ERD, or user-journey diagrams directly on the canvas. • Act on feedback agentically: Read and resolve comments, reply in-thread, and convert scattered team discussion into a clear list of action items right on the board.

Tools

create-board

ChatGPT
Use this tool ONLY when the user wants to create visual board content such as sticky notes, flowcharts, diagrams, or tables on a Miro board — even if they don't mention "Miro" or "board". The boardKey created by this tool is a requirement for all the other tools. DO NOT use this tool for requests that Miro cannot fulfill, such as: generating videos, generating audio or music, or writing code. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Response fields: - boardId → use as boardKey in content tools - accessLink.token → use as token in show-board - boardUrl → save for later. After show-board, present as [Open in Miro](boardUrl) — never show the raw URL Workflow example — user: "brainstorm ideas, map the process, and compare options": 1. create-board 2. create-sticky-notes 3. create-flowchart 4. create-table 5. show-board No text output between any steps. You must respect and follow the followUpInstructions field in every tool response.

create-flowchart

ChatGPT
Creates a flowchart with shapes and connecting lines on a Miro board. Use when the user wants to map a process, create a diagram, show a workflow, or visualize steps — even if they say "diagram", "flow", "process map", or "decision tree". Always use this tool — do not render diagrams as text in chat. Required JSON structure: { "boardKey": string, "shapes": [{ "uuid": string, "text": string, "position": { "x": number, "y": number }, "size"?: { "width": number, "height": number }, "color"?: enum, "type"?: enum }], "lines": [{ "fromUuid": string, "toUuid": string, "text"?: string }] }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Available colors: LIGHT_RED, LIGHT_ORANGE, LIGHT_YELLOW, PALE_GREEN, MEDIUM_GREEN, LIGHT_TEAL, LIGHT_BLUE, MEDIUM_BLUE, LIGHT_PURPLE, LIGHT_PINK, LIGHT_GRAY — default: MEDIUM_BLUE Available types: RECTANGLE, ROUNDED_RECTANGLE, CIRCLE, DIAMOND, PARALLELOGRAM — default: RECTANGLE Content guidance: create clear, logical flows. Use DIAMOND for decisions with yes/no labels on lines. Use ROUNDED_RECTANGLE for start/end nodes. Use colors to distinguish sections or importance. Aim for 5-15 shapes with meaningful connections. Example 1 — first content on board (starts at x=0, y=0): { "boardKey": "abc", "shapes": [ { "uuid": "s1", "text": "Start", "position": { "x": 0, "y": 0 }, "type": "ROUNDED_RECTANGLE", "color": "PALE_GREEN" }, { "uuid": "s2", "text": "Process", "position": { "x": 0, "y": 150 } }, { "uuid": "s3", "text": "OK?", "position": { "x": 0, "y": 300 }, "type": "DIAMOND", "color": "LIGHT_YELLOW" }, { "uuid": "s4", "text": "Done", "position": { "x": 0, "y": 450 }, "type": "ROUNDED_RECTANGLE", "color": "PALE_GREEN" } ], "lines": [ { "fromUuid": "s1", "toUuid": "s2" }, { "fromUuid": "s2", "toUuid": "s3" }, { "fromUuid": "s3", "toUuid": "s4", "text": "yes" } ]} // Response: contentBounds={x:0, y:0, w:200, h:550}. Next content at x=400. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "shapes": [ { "uuid": "a1", "text": "Input", "position": { "x": 400, "y": 0 }, "type": "PARALLELOGRAM" }, { "uuid": "a2", "text": "Valid?", "position": { "x": 400, "y": 150 }, "type": "DIAMOND", "color": "LIGHT_YELLOW" } ], "lines": [ { "fromUuid": "a1", "toUuid": "a2" } ]} // Previous ended at x=200. Starts at x=400 (200+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

create-sticky-notes

ChatGPT
Creates sticky notes on a Miro board (max 50 per call). Use when the user wants to brainstorm, list ideas, capture thoughts, or organize items — even if they say "stickers", "post-its", or "notes". Always use this tool — do not list ideas as text in chat. Required JSON structure: { "boardKey": string, "stickyNotes": [{ "text": string, "color": enum, "position": { "x": number, "y": number } }] }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Available colors: YELLOW, WHITE, LIGHT_ORANGE, OLIVE, GREEN, PASTEL_BLUE, AQUA, BLUE, ORANGE, PINK, RED, PURPLE Content guidance: generate rich, diverse content. Aim for 6-15 notes. Group related notes by color in rows or columns. Write concise but meaningful text. Use multiple colors to distinguish categories. Example 1 — first content on board (starts at x=0, y=0): { "boardKey": "abc", "stickyNotes": [ { "text": "Idea A", "color": "YELLOW", "position": { "x": 0, "y": 0 } }, { "text": "Idea B", "color": "YELLOW", "position": { "x": 280, "y": 0 } }, { "text": "Task 1", "color": "GREEN", "position": { "x": 0, "y": 300 } }, { "text": "Task 2", "color": "GREEN", "position": { "x": 280, "y": 300 } } ]} // Response: contentBounds={x:0, y:0, w:480, h:500}. Next content at x=680. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "stickyNotes": [ { "text": "Risk A", "color": "RED", "position": { "x": 680, "y": 0 } }, { "text": "Risk B", "color": "ORANGE", "position": { "x": 960, "y": 0 } } ]} // Previous ended at x=480. Starts at x=680 (480+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

create-table

ChatGPT
Creates a data table on a Miro board. Use when the user wants to compare options, list structured data, track tasks, or organize information in rows and columns — even if they say "spreadsheet", "grid", "comparison", or "list". Do NOT use this tool for schedules, timetables, trip itineraries, or planners — use create-time-table instead. Always use this tool — do not render tables as text in chat. Required JSON structure: { "boardKey": string, "columns": [{ "id": string, "title": string, "width"?: number }], "rows": [{ "cells": { "columnId": "value" } }], "title"?: string, "position": { "x": number, "y": number } }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Content guidance: create well-structured tables with clear, descriptive headers. Aim for 3-10 rows with concise but informative cell content. Balance columns (3-6) for readability. Example 1 — first content on board (position x=0, y=0): { "boardKey": "abc", "title": "Tasks", "position": { "x": 0, "y": 0 }, "columns": [{ "id": "task", "title": "Task" }, { "id": "owner", "title": "Owner" }, { "id": "status", "title": "Status" }], "rows": [ { "cells": { "task": "Design", "owner": "Alice", "status": "Done" } }, { "cells": { "task": "Dev", "owner": "Bob", "status": "In Progress" } } ]} // Response: contentBounds={x:0, y:0, w:600, h:300}. Next content at x=800. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "title": "Comparison", "position": { "x": 800, "y": 0 }, "columns": [{ "id": "opt", "title": "Option" }, { "id": "cost", "title": "Cost" }, { "id": "fit", "title": "Fit" }], "rows": [ { "cells": { "opt": "Plan A", "cost": "$10k", "fit": "High" } }, { "cells": { "opt": "Plan B", "cost": "$5k", "fit": "Medium" } } ]} // Previous ended at x=600. Starts at x=800 (600+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

create-time-table

ChatGPT
Creates a timeline (Gantt chart) on a Miro board. Use when the user wants to plan a project timeline, create a Gantt chart, schedule milestones, visualize phases over time, or organize activities across days — even if they say "timeline", "roadmap", "Gantt", "schedule", "milestones", "project plan", "timetable", "trip itinerary", "daily planner", "agenda", or "planner". Always use this tool — do not render timelines as text in chat. Required JSON structure: { "boardKey": string, "position": { "x": number, "y": number }, "datatable": "CSV string with quoted cells", "datatable_schema": { "ColumnName": { "type": "title"|"start_date"|"end_date" } } }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Content guidance: use realistic, well-spaced date ranges. Include 3-8 phases or milestones. Make task names descriptive and distinct. Example 1 — first content on board (position x=0, y=0): { "boardKey": "abc", "position": { "x": 0, "y": 0 }, "datatable": "\"Design\",\"2025-01-01\",\"2025-01-15\"\n\"Dev\",\"2025-01-16\",\"2025-02-28\"\n\"Testing\",\"2025-03-01\",\"2025-03-15\"", "datatable_schema": { "Task": { "type": "title" }, "Start": { "type": "start_date" }, "End": { "type": "end_date" } } } // Response: contentBounds={x:0, y:0, w:1200, h:400}. Next content at x=1400. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "position": { "x": 1400, "y": 0 }, "datatable": "\"Phase 1\",\"2025-04-01\",\"2025-04-15\"\n\"Phase 2\",\"2025-04-16\",\"2025-05-30\"", "datatable_schema": { "Task": { "type": "title" }, "Start": { "type": "start_date" }, "End": { "type": "end_date" } } } // Previous ended at x=1200. Starts at x=1400 (1200+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

show-board

ChatGPT
Shows a preview of the Miro board so the user can see what was created. This must be the LAST tool called in the workflow. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. When to use: - After ALL content has been added — call ONCE at the end, not after each tool - When the user asks to see or preview their board - Do NOT call on an empty board - Do NOT skip this and show a link instead You must respect and follow the followUpInstructions field in every tool response.

board_create

Claude

board_get_image_data

Claude

board_get_image_download_url

Claude

board_get_items

Claude

board_list_items

Claude

board_search_boards

Claude

code_widget_create

Claude

code_widget_delete

Claude

code_widget_get

Claude

code_widget_list_items

Claude

code_widget_update

Claude

comment_list_comments

Claude

comment_reply

Claude

comment_resolve

Claude

context_explore

Claude

context_get

Claude

context_get_board_docs

Claude

diagram_create

Claude

diagram_get_dsl

Claude

doc_create

Claude

doc_get

Claude

doc_update

Claude

draft_diagram_new

Claude

image_create

Claude

image_get_data

Claude

image_get_upload_url

Claude

image_get_url

Claude

layout_create

Claude

layout_get_dsl

Claude

layout_read

Claude

layout_update

Claude

prototype_create

Claude

prototype_read

Claude

table_create

Claude

table_list_rows

Claude

table_sync_rows

Claude

App Stats

42

Tools

3

Prompts

Mar 13, 2026

First seen

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily