Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Miro

OCI · GHCR.IO/OLGASAFONOVA/MIRO-MCP-SERVER:1.24.0 · 6 COMPONENTS · SCANNED AUG 22

Control Miro whiteboards with AI. 110 tools for boards, diagrams, mindmaps, comments, SVG.

41 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security0
  • Malware scan not yet available for this package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 3 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability80
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 21848 tokens (~198/item across 110 items; 110 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass

Unverified: 2 categories

Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

oci · ghcr.io/olgasafonova/miro-mcp-server:1.24.0

# add to Claude Code
claude mcp add olgasafonova-miro-mcp-server -- docker run --rm -i ghcr.io/olgasafonova/miro-mcp-server:1.24.0
# add to Codex CLI
codex mcp add olgasafonova-miro-mcp-server -- docker run --rm -i ghcr.io/olgasafonova/miro-mcp-server:1.24.0
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "olgasafonova-miro-mcp-server": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/olgasafonova/miro-mcp-server:1.24.0"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  olgasafonova-miro-mcp-server:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/olgasafonova/miro-mcp-server:1.24.0"]
// mcp.json
{
  "mcpServers": {
    "olgasafonova-miro-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/olgasafonova/miro-mcp-server:1.24.0"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 18 Aug 26 41

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 22 Aug 2026 · Analysed oci/ghcr.io/olgasafonova/miro-mcp-server:1.24.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem oci
Reason No attestation published
MCP tools · 110 exposed · ~21,171 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
miro_attach_tag ~151

Attach an existing tag to a sticky note or card. The tag must already exist; create it first with miro_create_tag if needed. Only sticky_note and card items support tags. USE WHEN: "tag this sticky as Urgent", "add the Done label", "mark this card with Priority" FAILS WHEN: tag_id doesn't exist on this board (list with miro_list_tags), item is not a sticky_note or card. VOICE-FRIENDLY: "Tagged sticky with 'Urgent'"

NameTypeReqDescription
board_idstringyesBoard ID
item_idstringyesID of the item to tag (sticky note only)
tag_idstringyesID of the tag to attach
NameTypeReqDescription
item_idstringyes
messagestringyes
successbooleanyes
tag_idstringyes

No examples provided.

miro_bulk_create ~266

Create multiple items at once (max 20). For creating only stickies in a grid, use miro_create_sticky_grid instead. USE WHEN: "add these 5 stickies", "create items for each of these", "batch add" ITEM FIELDS: - type (required): sticky_note, shape, text - content, x, y, width, height, color, parent_id: standard fields - shape: shape type (when type=shape) - text_color: text color (shape and text items only) - font_size: font size in points (shape and text items only; default 14) - text_align: horizontal text alignment (shape items only): left, center, right - text_align_vertical: vertical text alignment (shape items only): top, middle, bottom RETURNS: Count of created items and their IDs (returned in input order even when API IDs are assigned out of order). FAILS WHEN: More than 20 items. Empty items list. Individual items may fail while others succeed; check errors in response. VOICE-FRIENDLY: "Created 5 items on the board"

NameTypeReqDescription
board_idstringyesBoard ID
itemsnull|arrayyesItems to create (max 20)
NameTypeReqDescription
createdintegeryes
errorsnull|array
failed_itemsnull|array
item_idsnull|arrayyes
item_urlsnull|array
messagestringyes
retriable_idsnull|array

No examples provided.

miro_bulk_delete ~129

Delete multiple items at once (max 20). WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Count of deleted items and their IDs. FAILS WHEN: More than 20 items. Empty items list. Individual items may fail while others succeed; check errors in response. VOICE-FRIENDLY: "Deleted 5 items from the board"

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
item_idsnull|arrayyesIDs of items to delete (max 20)
NameTypeReqDescription
deletedintegeryes
errorsnull|array
failed_itemsnull|array
item_idsnull|arrayyes
messagestringyes
retriable_idsnull|array

No examples provided.

miro_bulk_update ~288

Update multiple items at once (max 20). Only provide fields you want to change. USE WHEN: "update positions for these items", "rename these stickies", "move several items into a frame", "center the text on these shapes". ITEM FIELDS: - item_id (required): ID of the item to update - type (optional but recommended): 'shape', 'sticky_note', or 'text'. When set, the update routes to the type-specific endpoint and accepts type-specific fields like text_align. When omitted, falls back to the generic /items endpoint (cross-type fields only). - content, x, y, width, height, color, parent_id: cross-type fields, accepted regardless of type - text_color: shape and text items (requires type=shape or type=text) - text_align: shape items (requires type=shape): left, center, right - text_align_vertical: shape items (requires type=shape): top, middle, bottom RETURNS: Count of updated items and their IDs. FAILS WHEN: More than 20 items. Empty items list. Individual items may fail while others succeed; check errors in response. VOICE-FRIENDLY: "Updated 5 items on the board"

NameTypeReqDescription
board_idstringyesBoard ID
itemsnull|arrayyesItems to update (max 20)
NameTypeReqDescription
errorsnull|array
failed_itemsnull|array
item_idsnull|arrayyes
messagestringyes
retriable_idsnull|array
updatedintegeryes

No examples provided.

miro_copy_board ~121

Copy an existing Miro board. USE WHEN: "copy this board", "duplicate board", "make a copy of X board" RETURNS: New board ID, name, and view link. VOICE-FRIENDLY: "Copied board to 'Sprint Planning Copy'"

NameTypeReqDescription
board_idstringyesID of the board to copy
descriptionstringDescription for the copy
namestringName for the copy (defaults to 'Copy of {original}')
team_idstringTeam ID to copy board to
NameTypeReqDescription
idstringyes
messagestringyes
namestringyes
view_linkstringyes

No examples provided.

miro_create_app_card ~184

Create an app card with custom fields and status indicators. For simple cards with due dates, use miro_create_card instead. USE WHEN: "create an app card", "add a card with fields", "create a custom card" RETURNS: App card ID and view link. VOICE-FRIENDLY: "Created app card 'Integration Status'"

NameTypeReqDescription
board_idstringyesBoard ID
descriptionstringApp card description
fieldsnull|arrayCustom fields (max 5)
parent_idstringFrame ID to place card in
statusstringStatus indicator: connected, disconnected, disabled
titlestringyesApp card title
widthnumberCard width (default 320)
xnumberX position
ynumberY position
NameTypeReqDescription
descriptionstringyes
idstringyes
item_urlstring
messagestringyes
statusstringyes
titlestringyes

No examples provided.

miro_create_board ~94

Create a new Miro board. USE WHEN: "create a board", "new board", "make a board for X" RETURNS: Board ID, name, and view link. VOICE-FRIENDLY: "Created board 'Sprint Planning'"

NameTypeReqDescription
descriptionstringBoard description
namestringyesName for the new board
team_idstringTeam ID to create board in
NameTypeReqDescription
idstringyes
messagestringyes
namestringyes
view_linkstringyes

No examples provided.

miro_create_card ~189

Create a card on a Miro board. Cards have title, description, and due dates. For cards with custom fields and status, use miro_create_app_card. USE WHEN: "add a card", "create a task card", "card with due date" RETURNS: Card ID, title, and view link. VOICE-FRIENDLY: "Created card 'Review design specs'"

NameTypeReqDescription
board_idstringyesBoard ID
descriptionstringCard description/body text
due_datestringDue date in ISO 8601 format (e.g., 2024-12-31)
parent_idstringFrame ID to place card in
titlestringyesCard title
widthnumberCard width (default 320)
xnumberX position
ynumberY position
NameTypeReqDescription
idstringyes
item_urlstring
messagestringyes
titlestringyes

No examples provided.

miro_create_code_widget ~305

Create a code widget: a syntax-highlighted code snippet on the board. Uses v2-experimental API. May change or become unavailable before GA. USE WHEN: "add a code snippet", "put this code on the board", "create a code block" PARAMETERS: - code: The source code (max 6000 characters). Required. - language: For syntax highlighting (e.g. javascript, go, python). Optional. - title: Widget header text (max 100 characters). Optional. RETURNS: Widget ID and view link. FAILS WHEN: code exceeds 6000 characters. board_id not found. Account lacks access to the experimental API.

NameTypeReqDescription
board_idstringyesBoard ID
codestringyesThe code content of the widget (max 6000 characters)
heightnull|numberHeight in pixels
languagestringProgramming language for syntax highlighting (e.g. javascript, go, python)
line_numbers_visiblenull|booleanShow line numbers (API default applies when omitted)
parent_idstringID of a parent frame to attach the widget to
titlestringTitle of the code widget (max 100 characters)
widthnull|numberWidth in pixels
xnumberX position on the board (center origin)
ynumberY position on the board (center origin)
NameTypeReqDescription
idstringyes
item_urlstring
languagestring
messagestringyes
titlestring

No examples provided.

miro_create_comment ~206

Open a comment thread on a board, optionally attached to a specific item. Uses a v2-experimental API that Miro ships undocumented; it may change or become unavailable without notice. USE WHEN: "comment on this board", "leave feedback on that sticky", "add a note for the team on item X" PARAMETERS: - board_id: Required. - content: Required. First message of the thread. - item_id: Optional. Attaches the thread to an item; without it the comment lands at the board origin (the API ignores position coordinates on create). RETURNS: Thread ID, and the item ID when attached. VOICE-FRIENDLY: "Added a comment on the pricing sticky"

NameTypeReqDescription
board_idstringyesBoard ID to comment on
contentstringyesText of the comment (first message of the thread)
item_idstringOptional item ID to attach the comment to. Omit for a board-level comment.
NameTypeReqDescription
idstringyes
item_idstring
messagestringyes

No examples provided.

miro_create_connector ~227

Create a connector line between two items. Styles: straight, elbowed (default), curved. Caps: none, arrow, stealth, diamond, filled_diamond, oval, filled_oval, triangle, filled_triangle. USE WHEN: "connect these items", "draw a line from A to B", "link items together", "add an arrow" RETURNS: Connector ID and view link. FAILS WHEN: start_item_id or end_item_id don't exist on the board. Both endpoints are required.

NameTypeReqDescription
board_idstringyesBoard ID
captionstringText label on the connector
end_capstringEnd arrow: none, arrow, filled_arrow, diamond, etc.
end_item_idstringyesID of the item to connect to
start_capstringStart arrow: none, arrow, filled_arrow, diamond, etc.
start_item_idstringyesID of the item to connect from
stylestringConnector style: straight, elbowed, curved (default elbowed)
NameTypeReqDescription
idstringyes
item_urlstring
messagestringyes

No examples provided.

miro_create_doc ~226

Create a rich text document on a Miro board from Markdown content. USE WHEN: User says "add a document", "create a doc from markdown", "put markdown on the board" PARAMETERS: - board_id: Required - content: Markdown text (required). Supports headings, lists, bold, italic, links, code blocks. - x, y: Position - parent_id: Frame ID to place doc in EXAMPLE: {"board_id": "uXjVN1234", "content": "# Sprint Goals\n- Ship v2.0\n- Fix critical bugs"} RELATED: Use miro_get_doc to read doc content. Use miro_delete_doc to remove. For URL-based documents, use miro_create_document instead. VOICE-FRIENDLY: "Created doc format item on board"

NameTypeReqDescription
board_idstringyesBoard ID
contentstringyesMarkdown content for the document
parent_idstringFrame ID to place document in
xnumberX position
ynumberY position
NameTypeReqDescription
idstringyes
item_urlstring
messagestringyes

No examples provided.

miro_create_document ~161

Add a document (PDF, etc.) to a Miro board from a URL. URL must be publicly accessible. USE WHEN: "add a document from URL", "put a PDF on the board", "add a reference document" RETURNS: Document ID, title, and view link. RELATED: To upload a local file instead, use miro_upload_document.

NameTypeReqDescription
board_idstringyesBoard ID
parent_idstringFrame ID to place document in
titlestringDocument title
urlstringyesURL of the document (PDF, etc.) to add
widthnumberDocument preview width
xnumberX position
ynumberY position
NameTypeReqDescription
idstringyes
item_urlstring
messagestringyes
titlestringyes

No examples provided.

miro_create_embed ~217

Embed external content as a live preview on a Miro board. Supports YouTube, Vimeo, Figma, Google Docs, Loom, and other oEmbed providers. For static images from URL, use miro_create_image. For document references from URL, use miro_create_document. USE WHEN: "embed this YouTube video", "add a Figma link", "embed Google Doc", "put a Loom video on the board" RETURNS: Embed ID, URL, provider name, and view link.

NameTypeReqDescription
board_idstringyesBoard ID
heightnumberEmbed height (default 300)
modestringDisplay mode: inline (default) or modal
parent_idstringFrame ID to place embed in
urlstringyesURL to embed (YouTube, Vimeo, Figma, Google Docs, etc.)
widthnumberEmbed width (default 400)
xnumberX position
ynumberY position
NameTypeReqDescription
idstringyes
item_urlstring
messagestringyes
providerstring
urlstringyes

No examples provided.

miro_create_export_job ~145

Export boards to PDF, SVG, or HTML. ENTERPRISE ONLY. RETURNS: Export job ID and initial status. Poll with miro_get_export_job_status. FAILS WHEN: Not on Enterprise plan. No board_ids provided. More than 50 boards. Invalid format (must be pdf, svg, or html).

NameTypeReqDescription
board_idsnull|arrayyesBoard IDs to export (max 50)
formatstringExport format: pdf, svg, or html (default: pdf)
org_idstringyesOrganization ID (Enterprise only)
request_idstringUnique request ID for idempotency (auto-generated if empty)
NameTypeReqDescription
job_idstringyes
messagestringyes
request_idstringyes
statusstringyes

No examples provided.

miro_create_flowchart_shape ~455

Create a flowchart shape using the experimental API. Supports additional stencil shapes beyond the standard shape tool. USE WHEN: User says "create a flowchart shape", "add a process box", "draw a decision diamond for flowchart" For standard shapes, use miro_create_shape instead. This tool uses the v2-experimental API for flowchart-specific stencil shapes. PARAMETERS: - board_id: Required - shape: Shape type (required). Supports: rectangle, round_rectangle, circle, rhombus, parallelogram, trapezoid, pentagon, hexagon, star, flow_chart_predefined_process, wedge_round_rectangle_callout, etc. - content: Text inside the shape - x, y: Position - width, height: Size (default 200x200) - fill_color: Fill color (hex like #006400) - border_color: Border color (hex like #000000) - parent_id: Frame ID RETURNS: Item ID, shape type, content, and view link. NOTE: Uses v2-experimental API. Shape types may change when this moves to GA.

NameTypeReqDescription
board_idstringyesBoard ID
border_colorstringBorder color: 6-char hex like #000000 or named (red, orange, yellow, green, blue, purple, pink, gray, white, black)
contentstringText inside the shape
fill_colorstringFill/background color: 6-char hex like #006400 or named (red, orange, yellow, green, blue, purple, pink, gray, white, black)
heightnumberHeight in pixels (default 200)
parent_idstringFrame ID to place shape in
shapestringyesFlowchart shape type: rectangle, round_rectangle, circle, rhombus, parallelogram, trapezoid, pentagon, hexagon, star, flow_chart_predefined_process, wedge_round_rectangle_callout, etc.
widthnumberWidth in pixels (default 200)
xnumberX position
ynumberY position
NameTypeReqDescription
contentstring
idstringyes
item_urlstring
messagestringyes
shapestringyes

No examples provided.

miro_create_frame ~293

Create a frame container to group items visually. For logical grouping without a visual border, use miro_create_group. USE WHEN: "create a frame", "add a container", "make a section for X" PARAMETERS: - color: Background color. Accepts a 6-char hex like "#006400" or a named color: red, orange, yellow, green, blue, purple, pink, gray, white, black. Note: frames use a smaller palette than stickies; sticky-only names like 'light_yellow' or 'light_green' are NOT valid for frames (use a hex value or a base named color instead). RETURNS: Frame ID, title, and view link. EXAMPLE: {"board_id": "uXjVN1234", "title": "Q1 Goals", "width": 800, "height": 600, "color": "green"}

NameTypeReqDescription
board_idstringyesBoard ID
colorstringBackground color: 6-char hex like #006400 or named (red, orange, yellow, green, blue, purple, pink, gray, white, black)
heightnumberHeight (default 600)
titlestringFrame title
widthnumberWidth (default 800)
xnumberX position
ynumberY position
NameTypeReqDescription
idstringyes
item_urlstring
messagestringyes
titlestringyes

No examples provided.

miro_create_from_svg ~455

Create board items from an SVG document, parsed locally. Supported elements: rect (-> rectangle shape; rx>0 -> round_rectangle; data-type="sticky" -> sticky note with data-content text; data-type="frame" -> frame with data-title), circle and ellipse (-> circle shape), polygon with 3 points (-> triangle shape), text (-> text item), image with a public href (-> image item), line with data-start/data-end referencing other elements' id attributes (-> connector, created after the referenced items; data-caption -> label), g with transform="translate(x,y)" (offset applied to children, nesting supported). Fill colors carry over. Unsupported elements (path, multi-point polygon, ...) are itemized in the response as skipped, never silently dropped. USE WHEN: "put this SVG on the board", "recreate this wireframe as board items", importing a diagram from a tool that exports SVG. NOT FOR: pixel-faithful SVG import (Miro has no vector item type; this maps to native shapes), Mermaid diagrams (use miro_generate_diagram), or editing existing items (use miro_update_from_svg). PARAMETERS: - board_id, svg: Required. SVG source, max 1 MiB, max 200 drawable elements per call. - offset_x, offset_y: Optional placement offset for the whole batch. RETURNS: created (id, type, source element per item), skipped (element + reason), count. On a mid-batch failure the created list still names every item that landed, so the caller can verify or clean up.

NameTypeReqDescription
board_idstringyesBoard ID to create items on
offset_xnumberX offset added to every created item (default 0)
offset_ynumberY offset added to every created item (default 0)
svgstringyesSVG document. Supported elements: rect (data-type=sticky|frame for those item types), circle, ellipse, text, polygon (3 points -> triangle), image (public href), line (data-start/data-end referencing…
NameTypeReqDescription
countintegeryes
creatednull|arrayyes
messagestringyes
skippednull|array

No examples provided.

miro_create_group ~112

Group multiple items together logically (minimum 2). Grouped items move and resize together. For a visible container with a border and title, use miro_create_frame. USE WHEN: "group these items", "bundle items together", "make a group" RETURNS: Group ID and member item IDs. VOICE-FRIENDLY: "Grouped 4 items together"

NameTypeReqDescription
board_idstringyesBoard ID
item_idsnull|arrayyesIDs of items to group together (minimum 2)
NameTypeReqDescription
idstringyes
item_idsnull|arrayyes
item_urlstring
item_urlsnull|array
messagestringyes

No examples provided.

miro_create_image ~227

Add an image to a Miro board from a URL. USE WHEN: User says "add an image", "insert picture from URL", "put this image on the board" PARAMETERS: - board_id: Required - url: Image URL (must be publicly accessible, required) - title: Alt text / title - width: Image width (preserves aspect ratio) - x, y: Position NOTE: The image URL must be publicly accessible. Private URLs won't work. FAILS WHEN: URL is not publicly accessible or returns 404. board_id not found. RELATED: To upload a local file instead, use miro_upload_image.

NameTypeReqDescription
board_idstringyesBoard ID
parent_idstringFrame ID to place image in
titlestringImage title/alt text
urlstringyesURL of the image to add (must be publicly accessible)
widthnumberImage width (preserves aspect ratio)
xnumberX position
ynumberY position
NameTypeReqDescription
idstringyes
item_urlstring
messagestringyes
titlestringyes
urlstringyes

No examples provided.

miro_create_mindmap_node ~329

Create a mindmap node. Omit parent_id for root; add parent_id for children. USE WHEN: "add a mindmap node", "create root node", "add child to mindmap" LAYOUT: Multiple children of the same parent stack at the same default position if x/y are omitted. To avoid overlap when creating siblings, supply explicit x/y for each child (canvas-absolute coordinates). For a fully manual tree, prefer miro_create_shape + miro_create_connector with explicit positions. PARAMETERS: - node_view: Currently only "text" is reliably supported. Other values may return 400. - x, y: Required for root nodes. Optional for children, but recommended when creating multiple siblings to override the API's default placement. RETURNS: Node ID, parent node ID, and view link. FAILS WHEN: parent_id references a non-existent node on the board. board_id not found.

NameTypeReqDescription
board_idstringyesBoard ID
contentstringyesText content of the node
node_viewstringNode style: text (default). Other values may be rejected by the API.
parent_idstringID of the parent node (omit for root node)
xnumberX position. Required for root nodes. For child nodes, supply x/y to override the API's default placement-on-top-of-parent and avoid overlap when creating multiple siblings.
ynumberY position. Required for root nodes. For child nodes, supply x/y to override the API's default placement.
NameTypeReqDescription
contentstringyes
idstringyes
item_urlstring
messagestringyes
parent_idstring

No examples provided.

miro_create_shape ~753

Create a shape on a Miro board. USE WHEN: User says "add a rectangle", "draw a circle", "create a box for X" SHAPE TYPES: - Basic: rectangle, round_rectangle, circle, triangle, rhombus - Flow: parallelogram, trapezoid, pentagon, hexagon, star - Flowchart: flow_chart_predefined_process, wedge_round_rectangle_callout PARAMETERS: - board_id: Required. Get from list_boards or find_board - shape: Shape type (required, default: rectangle) - content: Text inside shape - color: Fill color. 6-char hex like "#FF5733" or named: red, orange, yellow, green, blue, purple, pink, gray, white, black. - text_color: Text color, same format as color. - text_align: Horizontal text alignment: left, center (default), right. - text_align_vertical: Vertical text alignment: top, middle (default), bottom. For non-rectangular shapes (triangle, hexagon), 'middle' aligns to the bounding-box center, which is not the same as the visual centroid. - x, y: Position (default: 0, 0) - width, height: Size (default: 200, 200) RETURNS: Item ID, shape type, position, size, and view link. RELATED: For flowchart-specific stencil shapes (experimental API), use miro_create_flowchart_shape instead. EXAMPLE: {"board_id": "uXjVN1234", "shape": "circle", "content": "Start", "color": "green", "text_align": "center", "x": 0, "y": 0}

NameTypeReqDescription
board_idstringyesBoard ID
colorstringFill/background color: 6-char hex like #006400 or named (red, orange, yellow, green, blue, purple, pink, gray, white, black)
contentstringText inside the shape
font_sizeintegerFont size in points (default 14)
heightnumberHeight in pixels (default 200)
parent_idstringFrame ID to place shape in. Coords (x, y) are then relative to the frame's TOP-LEFT; the shape's CENTER is placed at (x, y). Account for shape width/height when picking coords to keep it inside the f…
shapestringyesShape type: rectangle, circle, triangle, rhombus, round_rectangle, etc.
text_alignstringHorizontal text alignment: left, center (default), right
text_align_verticalstringVertical text alignment: top, middle (default), bottom. Note: 'middle' aligns to the center of the bounding box, which for triangles/hexagons is not the visual centroid.
text_colorstringText color: 6-char hex like #ffffff or named (red, orange, yellow, green, blue, purple, pink, gray, white, black)
widthnumberWidth in pixels (default 200)
xnumberX position. On canvas: absolute. Inside a frame (parent_id set): relative to frame's TOP-LEFT (0 = frame's left edge), and the shape's center is placed at this x.
ynumberY position. On canvas: absolute. Inside a frame (parent_id set): relative to frame's TOP-LEFT, shape center is placed at this y. Y increases downward.
NameTypeReqDescription
contentstring
idstringyes
item_urlstring
messagestringyes
shapestringyes

No examples provided.

miro_create_sticky ~415

Create a sticky note on a Miro board. For multiple stickies in a grid, use miro_create_sticky_grid. For batch creation of mixed items, use miro_bulk_create. USE WHEN: "add a sticky", "create note saying X", "put a yellow sticky" RETURNS: Item ID, content, color, and view link. FAILS WHEN: Content is empty. board_id not found. VOICE-FRIENDLY: "Created yellow sticky 'Action item: Review design'"

NameTypeReqDescription
board_idstringyesBoard ID
colorstringSticky color (named only): yellow, light_yellow, light_green, green, dark_green, cyan, light_pink, pink, violet, red, light_blue, blue, dark_blue, gray, orange, black.
contentstringyesText content of the sticky note
parent_idstringFrame ID to place sticky in. Coords (x, y) are then relative to the frame's TOP-LEFT corner; the sticky's CENTER is placed at (x, y). Default sticky is 199x228, so to keep it fully inside an 800x600…
widthnumberWidth in pixels (default ~199; height auto-scales). Set width=160 to fit 3 stickies in a 600-tall frame.
xnumberX position. On canvas: absolute (0 = canvas left). Inside a frame (parent_id set): relative to frame's TOP-LEFT (0 = frame's left edge), and the sticky's center is placed at this x. To center horizon…
ynumberY position. On canvas: absolute. Inside a frame (parent_id set): relative to frame's TOP-LEFT, sticky center is placed at this y. Y increases downward.
NameTypeReqDescription
colorstringyes
contentstringyes
idstringyes
item_urlstring
messagestringyes

No examples provided.

miro_create_sticky_grid ~208

Create multiple sticky notes arranged in a grid layout (max 50). For mixed item types, use miro_bulk_create. USE WHEN: "add a grid of stickies", "create 6 stickies in rows", "make sticky notes for each idea" VOICE-FRIENDLY: "Created 9 stickies in a 3x3 grid"

NameTypeReqDescription
board_idstringyesBoard ID
colorstringColor for all stickies: yellow, green, blue, pink, orange, etc.
columnsintegerNumber of columns in grid (default 3)
contentsnull|arrayyesText for each sticky note
parent_idstringFrame ID to place stickies in
spacingnumberSpace between stickies in pixels (default 220)
start_xnumberStarting X position (default 0)
start_ynumberStarting Y position (default 0)
NameTypeReqDescription
columnsintegeryes
createdintegeryes
item_idsnull|arrayyes
item_urlsnull|array
messagestringyes
rowsintegeryes

No examples provided.

miro_create_tag ~136

Create a tag on a Miro board. Colors: red, magenta, violet, blue, cyan, green, yellow, gray, light_green, dark_green, dark_blue, dark_gray, black. VOICE-FRIENDLY: "Created red tag 'Urgent'"

NameTypeReqDescription
board_idstringyesBoard ID
colorstringTag color: red, magenta, violet, blue, cyan, green, yellow, gray, light_green, dark_green, dark_blue, dark_gray, black
titlestringyesTag text (e.g., 'Urgent', 'Done', 'Review')
NameTypeReqDescription
colorstringyes
idstringyes
item_urlstring
messagestringyes
titlestringyes

No examples provided.

miro_create_text ~197

Add free-floating text to a Miro board with no background or border. For notes with colored backgrounds, use miro_create_sticky. For rich Markdown documents, use miro_create_doc. USE WHEN: "add a title", "put heading text", "write a label", "add text saying X" RETURNS: Item ID, content, and view link.

NameTypeReqDescription
board_idstringyesBoard ID
colorstringText color: 6-char hex like #1a1a1a or named (red, orange, yellow, green, blue, purple, pink, gray, white, black)
contentstringyesText content
font_sizeintegerFont size (default 14)
parent_idstringFrame ID
widthnumberText box width
xnumberX position
ynumberY position
NameTypeReqDescription
contentstringyes
idstringyes
item_urlstring
messagestringyes

No examples provided.

miro_delete_app_card ~94

Delete an app card from a Miro board. WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted app card ID. VOICE-FRIENDLY: "App card deleted successfully"

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
item_idstringyesApp card item ID to delete
NameTypeReqDescription
item_idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_board ~88

Delete a Miro board permanently. USE WHEN: "delete this board", "remove the board", "get rid of board X" WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted board ID.

NameTypeReqDescription
board_idstringyesID of the board to delete
dry_runbooleanIf true, returns preview without deleting
NameTypeReqDescription
board_idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_code_widget ~95

Delete a code widget from a board. Uses v2-experimental API. May change or become unavailable before GA. WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted widget ID.

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
item_idstringyesCode widget item ID to delete
NameTypeReqDescription
idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_connector ~108

Delete a connector from a Miro board. USE WHEN: "delete this connector", "remove this line", "disconnect these items" WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted connector ID. VOICE-FRIENDLY: "Connector deleted successfully"

NameTypeReqDescription
board_idstringyesBoard ID
connector_idstringyesID of the connector to delete
dry_runbooleanIf true, returns preview without deleting
NameTypeReqDescription
idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_doc ~151

Delete a doc format item from a Miro board. USE WHEN: User says "remove the document", "delete that doc" PARAMETERS: - board_id: Required - item_id: Doc format item ID to delete (required) - dry_run: If true, returns preview without deleting (optional) WARNING: This action cannot be undone. Use dry_run=true to preview what will be deleted before executing. RELATED: Use miro_get_doc to inspect before deleting. Use miro_create_doc to create new documents.

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
item_idstringyesDoc format item ID to delete
NameTypeReqDescription
item_idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_frame ~100

Delete a frame from a Miro board. Items inside are NOT deleted; they become ungrouped. WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted frame ID. VOICE-FRIENDLY: "Frame deleted successfully"

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
frame_idstringyesFrame ID to delete
NameTypeReqDescription
idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_group ~183

Delete a group. Set delete_items=true to also delete items (default: items are released to move independently). USE WHEN: deleting a group OR ungrouping items. With delete_items=false (default), items are ungrouped and remain on the board. With delete_items=true, both the group and its items are permanently deleted. WARNING: Deleting items (delete_items=true) cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted group ID. VOICE-FRIENDLY: "Group deleted, items ungrouped"

NameTypeReqDescription
board_idstringyesBoard ID
delete_itemsbooleanAlso delete the items in the group (default: false, items are ungrouped)
dry_runbooleanIf true, returns preview without deleting
group_idstringyesGroup ID to delete
NameTypeReqDescription
group_idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_item ~98

Delete an item from a Miro board. USE WHEN: "delete this item", "remove this sticky", "get rid of this shape" WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted item ID.

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
item_idstringyesItem ID to delete
NameTypeReqDescription
item_idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_mindmap_node ~95

Delete a mindmap node. Deleting a parent may affect children. Uses v2-experimental API. WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted node ID.

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
node_idstringyesMindmap node ID to delete
NameTypeReqDescription
idstringyes
messagestringyes
successbooleanyes

No examples provided.

miro_delete_tag ~116

Delete a tag from a board. Removes the tag from all items. USE WHEN: "delete this tag", "remove tag from board", "get rid of tag X" WARNING: Cannot be undone. Use dry_run=true to preview first. RETURNS: Confirmation with deleted tag ID. VOICE-FRIENDLY: "Tag deleted successfully"

NameTypeReqDescription
board_idstringyesBoard ID
dry_runbooleanIf true, returns preview without deleting
tag_idstringyesID of the tag to delete
NameTypeReqDescription
messagestringyes
successbooleanyes
tag_idstringyes

No examples provided.

miro_detach_tag ~101

Remove a tag from a sticky note or card. The tag stays on the board for reuse; to delete it entirely, use miro_delete_tag. USE WHEN: "remove the Urgent tag", "untag this card", "take off the Done label"

NameTypeReqDescription
board_idstringyesBoard ID
item_idstringyesID of the item to untag
tag_idstringyesID of the tag to remove
NameTypeReqDescription
item_idstringyes
messagestringyes
successbooleanyes
tag_idstringyes

No examples provided.

miro_find_board ~150

Find a Miro board by name (case-insensitive, partial match). Returns board ID for subsequent operations. For listing all boards, use miro_list_boards. USE WHEN: "find board named X", "get the Design Sprint board" RETURNS: id, name, description, view_link, team_id, team_name, owner (id + name), created_at, modified_at. Answers "who owns this board" and "when was it last changed" without a follow-up miro_get_board. VOICE-FRIENDLY: "Found 'Design Sprint' board - ready to work on it"

NameTypeReqDescription
namestringyesBoard name to search for (case-insensitive, supports partial matching)
NameTypeReqDescription
created_atstring
descriptionstring
idstringyes
messagestringyes
modified_atstring
namestringyes
ownernull|object
team_idstring
team_namestring
view_linkstringyes

No examples provided.

miro_generate_diagram ~565

Generate a diagram on a Miro board from Mermaid code. Parses locally (no external service), creates shapes and connectors with auto-layout. USE WHEN: "create a flowchart", "generate diagram from code", "draw a process flow", "make a sequence diagram" NOT FOR: Freeform shape placement (use miro_create_shape). Mindmaps (use miro_create_mindmap_node). SUPPORTED SYNTAX: - flowchart/graph (directions: TB, BT, LR, RL): A[rect] --> B{diamond} -->|label| C((circle)) - sequenceDiagram: participant A; A->>B: sync; A-->>B: async OUTPUT MODES: - discrete (default): Individual shapes and connectors, no container - grouped: All items in a logical group for easy move/delete - framed: All items inside a titled frame PARAMETERS: - board_id: Required - diagram: Mermaid code (required). Must start with "flowchart TB", "graph LR", or "sequenceDiagram". - output_mode: "discrete" (default), "grouped", or "framed" - use_stencils: true for professional flowchart symbols (terminator, process, decision, I/O) - start_x, start_y: Position offset (default: 0, 0) - parent_id: Frame ID to place diagram inside RETURNS: Counts of created nodes/connectors/frames, all item IDs and view links, diagram dimensions. In grouped/framed mode, also returns container ID. FAILS WHEN: Invalid Mermaid syntax (returns line number and fix suggestion). Missing header (must start with flowchart/graph/sequenceDiagram). Input exceeds 50KB or 500 lines. VOICE-FRIENDLY: "Created flowchart with 6 shapes and 5 connectors"

NameTypeReqDescription
board_idstringyesBoard ID to create the diagram on
diagramstringyesDiagram code in Mermaid format (flowchart/graph syntax)
node_widthnumberWidth of each node (default: 180)
output_modestringOutput mode: 'discrete' (default) returns individual items, 'grouped' groups all items together for easy move/delete, 'framed' creates a frame containing all items
parent_idstringParent frame ID to create diagram inside
start_xnumberStarting X position (default: 0)
start_ynumberStarting Y position (default: 0)
use_stencilsbooleanUse professional flowchart stencils instead of basic shapes. Provides better visual styling with proper flowchart symbols (terminator, process, decision, I/O).
NameTypeReqDescription
connector_idsnull|arrayyes
connector_urlsnull|array
connectors_createdintegeryes
diagram_heightnumberyes
diagram_idstring
diagram_typestring
diagram_urlstring
diagram_widthnumberyes
frame_idsnull|array
frame_urlsnull|array
frames_createdintegeryes
messagestringyes
node_idsnull|arrayyes
node_urlsnull|array
nodes_createdintegeryes
output_modestring
total_itemsinteger

No examples provided.

miro_get_app_card ~80

Get details of a specific app card by ID. RETURNS: App card ID, title, description, status, custom fields, and view link. VOICE-FRIENDLY: "App card 'API Status' shows 3 custom fields"

NameTypeReqDescription
board_idstringyesBoard ID
item_idstringyesApp card item ID
NameTypeReqDescription
created_atstring
descriptionstringyes
fieldsnull|array
geometrynull|object
idstringyes
messagestringyes
modified_atstring
positionnull|object
statusstringyes
titlestringyes

No examples provided.

miro_get_audit_log ~274

Query THIS SERVER's local execution log — which MCP tools ran here, when, and whether they succeeded. Covers this process only; it knows nothing about actions taken in Miro's UI or by other clients. USE WHEN debugging what this server did. For who did what in the Miro workspace, use miro_get_org_audit_logs instead. Filter by time range, tool, board, action type, or success/failure. RETURNS: Array of entries with timestamps, tool names, board IDs, and outcomes.

NameTypeReqDescription
actionstringFilter by action type: create, read, update, delete, export, auth
board_idstringFilter by board ID
limitintegerMaximum events to return (default 50, max 500)
sincestringReturn events after this time (ISO 8601, e.g., 2024-01-01T00:00:00Z)
successnull|booleanFilter by success status (true/false)
toolstringFilter by tool name (e.g., miro_create_sticky)
untilstringReturn events before this time (ISO 8601, e.g., 2024-01-02T00:00:00Z)
NameTypeReqDescription
eventsnull|arrayyes
has_morebooleanyes
messagestringyes
totalintegeryes

No examples provided.