Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MIRO_ACCESS_TOKEN | Yes | Miro access token. Create an app with 'boards:read' and 'boards:write' permissions at miro.com/app/settings/user-profile/apps, install it to your team, and copy the token. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| miro_attach_tag | 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'" |
| miro_bulk_create | 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" VOICE-FRIENDLY: "Created 5 items on the board" |
| miro_bulk_delete | Delete multiple items at once (max 20). WARNING: Cannot be undone. Use dry_run=true to preview first. VOICE-FRIENDLY: "Deleted 5 items from the board" |
| miro_bulk_update | Update multiple items at once (max 20). Only provide fields you want to change. VOICE-FRIENDLY: "Updated 5 items on the board" |
| miro_copy_board | Copy an existing Miro board. VOICE-FRIENDLY: "Copied board to 'Sprint Planning Copy'" |
| miro_create_app_card | 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" VOICE-FRIENDLY: "Created app card 'Integration Status'" |
| miro_create_board | Create a new Miro board. VOICE-FRIENDLY: "Created board 'Sprint Planning'" |
| miro_create_card | 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" VOICE-FRIENDLY: "Created card 'Review design specs'" |
| miro_create_connector | 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. |
| miro_create_doc | 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:
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" |
| miro_create_document | Add a document (PDF, etc.) to a Miro board from a URL. URL must be publicly accessible. RELATED: To upload a local file instead, use miro_upload_document. |
| miro_create_embed | 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" |
| miro_create_export_job | Export boards to PDF, SVG, or HTML. ENTERPRISE ONLY. Returns job ID; use miro_get_export_job_status to monitor. |
| miro_create_flowchart_shape | 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:
NOTE: Uses v2-experimental API. Shape types may change when this moves to GA. |
| miro_create_frame | Create a frame container to group items visually. For logical grouping without a visual border, use miro_create_group. |
| miro_create_group | 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. VOICE-FRIENDLY: "Grouped 4 items together" |
| miro_create_image | 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:
NOTE: The image URL must be publicly accessible. Private URLs won't work. RELATED: To upload a local file instead, use miro_upload_image. |
| miro_create_mindmap_node | Create a mindmap node. Omit parent_id for root; add parent_id for children. node_view: "text" (default) or "bubble". |
| miro_create_shape | Create a shape on a Miro board. USE WHEN: User says "add a rectangle", "draw a circle", "create a box for X" SHAPE TYPES:
PARAMETERS:
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", "x": 0, "y": 0} |
| miro_create_sticky | 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" VOICE-FRIENDLY: "Created yellow sticky 'Action item: Review design'" |
| miro_create_sticky_grid | 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" |
| miro_create_tag | 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'" |
| miro_create_text | 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" |
| miro_delete_app_card | Delete an app card from a Miro board. WARNING: Cannot be undone. Use dry_run=true to preview first. VOICE-FRIENDLY: "App card deleted successfully" |
| miro_delete_board | Delete a Miro board permanently. WARNING: Cannot be undone. Use dry_run=true to preview first. |
| miro_delete_connector | Delete a connector from a Miro board. WARNING: Cannot be undone. Use dry_run=true to preview first. VOICE-FRIENDLY: "Connector deleted successfully" |
| miro_delete_doc | Delete a doc format item from a Miro board. USE WHEN: User says "remove the document", "delete that doc" PARAMETERS:
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. |
| miro_delete_frame | 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. VOICE-FRIENDLY: "Frame deleted successfully" |
| miro_delete_group | 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. VOICE-FRIENDLY: "Group deleted, items ungrouped" |
| miro_delete_item | Delete an item from a Miro board. WARNING: Cannot be undone. Use dry_run=true to preview first. |
| miro_delete_mindmap_node | 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. |
| miro_delete_tag | Delete a tag from a board. Removes the tag from all items. WARNING: Cannot be undone. Use dry_run=true to preview first. VOICE-FRIENDLY: "Tag deleted successfully" |
| miro_detach_tag | 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" |
| miro_find_board | 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" VOICE-FRIENDLY: "Found 'Design Sprint' board - ready to work on it" |
| miro_generate_diagram | Generate diagram on Miro from Mermaid code. Creates shapes and connectors with auto-layout. USE WHEN: "create flowchart", "generate diagram", "draw process flow", "sequence diagram" TYPES: flowchart/graph, sequenceDiagram FLOWCHART: A[rect] --> B{diamond} -->|label| C((circle)) SEQUENCE: participant A; A->>B: sync; A-->>B: async |
| miro_get_app_card | Get details of a specific app card by ID. VOICE-FRIENDLY: "App card 'API Status' shows 3 custom fields" |
| miro_get_audit_log | Query local audit log for MCP tool executions (this session only). Filter by time range, tool, board, action type, or success/failure. |
| miro_get_board | Get board metadata: name, description, owner, creation date, and sharing policy. USE WHEN: "who owns this board?", "when was this board created?", "board settings", "tell me about this board" NOT FOR: Board content overview with item counts (use PARAMETERS:
RETURNS: Board name, description, owner info, creation/modification timestamps, sharing policy, and view link. VOICE-FRIENDLY: "Board 'Sprint Planning' owned by Jane, created Jan 15" |
| miro_get_board_content | Get all board content for AI analysis and documentation generation. Returns items by type, frame hierarchy, connectors, and tags. For a quick summary, use miro_get_board_summary instead. USE WHEN: "analyze this board", "generate documentation from board", "describe everything on this board" VOICE-FRIENDLY: "Retrieved full content for 'Design Sprint': 26 items across 3 frames, 5 connectors, 2 tags" |
| miro_get_board_member | Get details of a specific board member. VOICE-FRIENDLY: "John Smith has editor access" |
| miro_get_board_picture | Get the preview image URL for a board. Works for all Miro plans. For full PDF/SVG exports, use the Enterprise export tools. VOICE-FRIENDLY: "Got preview image for the board" |
| miro_get_board_summary | Get board overview with item counts and statistics. For full content export, use miro_get_board_content instead. USE WHEN: "summarize this board", "board stats", "what's the overview" VOICE-FRIENDLY: "Design Sprint has 15 stickies, 8 shapes, and 3 frames - 26 items total" |
| miro_get_connector | Get full details of a specific connector by ID. VOICE-FRIENDLY: "This connector links Item A to Item B with a curved arrow" |
| miro_get_desire_paths | Query desire path normalizations. Shows what agents tried to send and how it was auto-corrected (URLs in ID fields, camelCase keys, string numbers, etc.). USE WHEN reviewing tool usage patterns to improve descriptions or schemas. Filter by tool name or normalizer rule. Returns top patterns and recent events. |
| miro_get_doc | Get details of a doc format item by ID. USE WHEN: User asks "show me that document", "what's in this doc", "read the document" PARAMETERS:
RETURNS: Document content (Markdown), position, timestamps. RELATED: Use miro_create_doc to create new documents. Use miro_delete_doc to remove. |
| miro_get_document | Get details of a document on a Miro board, including its Miro-hosted URL and title. For image items, use USE WHEN: "get document details", "what document is this", "document URL" VOICE-FRIENDLY: "Document 'Q4 Report' hosted at Miro" |
| miro_get_export_job_results | Get download links for completed export. ENTERPRISE ONLY. Links expire in 15 min; call again to regenerate. |
| miro_get_export_job_status | Check export job progress. ENTERPRISE ONLY. |
| miro_get_frame | Get full details of a specific frame by ID. To get items inside the frame, use VOICE-FRIENDLY: "Frame 'Sprint Planning' is 800x600 with 12 items inside" |
| miro_get_frame_items | Get all items contained within a specific frame. Filterable by type. For items in a logical group, use miro_get_group_items. VOICE-FRIENDLY: "Frame has 8 items: 5 stickies, 2 shapes, 1 text" |
| miro_get_group | Get details of a specific group by ID. VOICE-FRIENDLY: "This group contains 4 items" |
| miro_get_group_items | Get items in a group with their details. For items inside a visual frame, use miro_get_frame_items. VOICE-FRIENDLY: "Group has 4 items: 2 stickies, 1 shape, 1 text" |
| miro_get_image | Get details of an image on a Miro board, including its Miro-hosted URL, title, and dimensions. Use the image_url to download or reference the image. For document items, use USE WHEN: "get image URL", "what image is this", "image details" VOICE-FRIENDLY: "Image 'Logo' is 800x600 at position (100, 200)" |
| miro_get_item | Get full details of a specific item by ID. If you don't have the item ID, use VOICE-FRIENDLY: "That sticky says 'Review Q4 goals' and was created by John yesterday" |
| miro_get_item_tags | List tags attached to a specific item. USE WHEN: User asks "what tags are on this sticky", "show labels for this item" PARAMETERS:
RETURNS: List of tags attached to the item. RELATED: For the reverse lookup (all items with a specific tag), use miro_get_items_by_tag. |
| miro_get_items_by_tag | Get all items on a board that have a specific tag attached. USE WHEN: User asks "show items tagged Urgent", "what's labeled Done", "find all items with this tag" PARAMETERS:
RETURNS: List of items with IDs, types, and content that have the specified tag. RELATED: Use miro_list_tags to get tag IDs. Use miro_get_item_tags for the reverse lookup (tags on a specific item). Use miro_attach_tag / miro_detach_tag to manage tag assignments. VOICE-FRIENDLY: "Found 7 items tagged 'Urgent'" |
| miro_get_mindmap_node | Get mindmap node details including content, hierarchy, and position. Uses v2-experimental API. |
| miro_get_tag | Get details of a specific tag by ID. VOICE-FRIENDLY: "Tag 'Urgent' is red" |
| miro_list_all_items | Retrieve ALL items from a board with automatic pagination (up to 10000). For quick lookups (max 50), use miro_list_items instead. USE WHEN: "get everything on board", "list all items", "export board contents" VOICE-FRIENDLY: "Retrieved 847 items in 9 pages" |
| miro_list_board_members | List all users who have access to a board. VOICE-FRIENDLY: "This board has 5 members: 2 editors, 3 viewers" |
| miro_list_boards | List Miro boards accessible to the user. Use board ID for subsequent operations. For a specific board by name, use VOICE-FRIENDLY: "Found 5 boards: Design Sprint, Product Roadmap, Team Retro..." |
| miro_list_connectors | List all connectors (lines/arrows) on a Miro board. VOICE-FRIENDLY: "Found 12 connectors on the board" |
| miro_list_groups | List all groups on a Miro board. VOICE-FRIENDLY: "Found 3 groups on the board" |
| miro_list_items | List items on a Miro board (max 50). For ALL items with auto-pagination, use miro_list_all_items. For text search, use miro_search_board. USE WHEN: "what's on the board", "show all stickies", "list shapes" |
| miro_list_mindmap_nodes | List all mindmap nodes on a board. Returns flat list; use parent_id to reconstruct hierarchy. Uses v2-experimental API. |
| miro_list_tags | List all tag definitions on a board with IDs, titles, and colors. Use tag IDs from this response with miro_attach_tag, miro_detach_tag, and miro_get_items_by_tag. USE WHEN: "show all tags", "what tags exist", "list labels", or before attaching a tag to get its ID VOICE-FRIENDLY: "Board has 8 tags: Urgent (red), Done (green), Review (blue)..." |
| miro_remove_board_member | Remove a member from a board. WARNING: This revokes the member's access to the board. VOICE-FRIENDLY: "Removed member from board" |
| miro_search_board | Search for items containing specific text on a board (case-insensitive). For listing without search, use miro_list_items. USE WHEN: "find items about X", "search for budget", "which stickies mention deadline" VOICE-FRIENDLY: "Found 3 stickies mentioning 'budget'" |
| miro_share_board | Share a board with someone by email. Roles: viewer (default), commenter, editor. VOICE-FRIENDLY: "Shared board with jane@example.com as editor" |
| miro_update_app_card | Update an app card's title, description, status, or custom fields. VOICE-FRIENDLY: "Updated app card status to 'connected'" |
| miro_update_board | Update a Miro board's name or description. At least one field must be provided. VOICE-FRIENDLY: "Updated board name to 'Sprint Planning Q1'" |
| miro_update_board_member | Update a board member's role (viewer, commenter, or editor). VOICE-FRIENDLY: "Updated John's role to editor" |
| miro_update_card | Update a card (title, description, due_date, position). VOICE-FRIENDLY: "Updated card title to 'Review PR'" |
| miro_update_connector | Update a connector's style (straight/elbowed/curved), caps, caption, or color. |
| miro_update_document | Update a document (title, url, position, width). VOICE-FRIENDLY: "Updated document title" |
| miro_update_document_from_file | Replace the file on an existing document item with a new local document file. USE WHEN: User says "replace this document", "update the PDF", "swap the file on this document". Use this to change the file on an existing document item without creating a new one. For updating metadata only (title, position), use miro_update_document instead. PARAMETERS:
NOTE: The item must already exist as a document. The file must exist on the local filesystem. RELATED: To create a new document from file, use miro_upload_document. To update metadata only, use miro_update_document. VOICE-FRIENDLY: "Replaced document file on item" |
| miro_update_embed | Update an embed (url, mode: inline/modal, dimensions, position). VOICE-FRIENDLY: "Updated embed settings" |
| miro_update_frame | Update a frame's title, position, size, or color. At least one field must be provided. VOICE-FRIENDLY: "Updated frame title to 'Q1 Goals'" |
| miro_update_group | Update a group's member items. Replaces all members; include existing IDs to keep them. Minimum 2 items. VOICE-FRIENDLY: "Updated group with 5 items" |
| miro_update_image | Update an image (title, url, position, width). VOICE-FRIENDLY: "Updated image title to 'Logo'" |
| miro_update_image_from_file | Replace the file on an existing image item with a new local image file. USE WHEN: User says "replace this image", "swap the screenshot", "update the image file". Use this to change the file on an existing image item without creating a new one. For updating metadata only (title, position), use miro_update_image instead. PARAMETERS:
NOTE: The item must already exist as an image. The file must exist on the local filesystem. RELATED: To create a new image from file, use miro_upload_image. To update metadata only, use miro_update_image. VOICE-FRIENDLY: "Replaced image file on item" |
| miro_update_item | Update any item's content, position, or style. For sticky-specific options (color, shape), use USE WHEN: "change sticky text", "move this item", "update the color" |
| miro_update_shape | Update a shape with type-specific options (fill_color, text_color, shape type). For generic updates, use miro_update_item. VOICE-FRIENDLY: "Updated shape to blue circle" |
| miro_update_sticky | Update a sticky note with type-specific options (shape: square/rectangle, sticky colors). For generic updates, use miro_update_item. USE WHEN: "change sticky color", "update sticky to square", "resize sticky note" VOICE-FRIENDLY: "Updated sticky to yellow square" |
| miro_update_tag | Update a tag's title or color. At least one must be provided. VOICE-FRIENDLY: "Updated tag to 'Done' with green color" |
| miro_update_text | Update a text element (content, font_size, color, position). VOICE-FRIENDLY: "Updated text to 'New Title'" |
| miro_upload_document | Upload a local document file to a Miro board. USE WHEN: User says "upload this document", "add PDF to board", "upload spreadsheet/presentation file". Use this for document files (pdf, doc, docx, ppt, pptx, xls, xlsx, txt, rtf, csv). For images (png, jpg, gif), use miro_upload_image instead. PARAMETERS:
NOTE: The file must exist on the local filesystem. For remote documents, use miro_create_document with a URL instead. RELATED: To upload a local image instead, use miro_upload_image. VOICE-FRIENDLY: "Uploaded document 'report.pdf' to board" |
| miro_upload_image | Upload a local image file to a Miro board. USE WHEN: User says "upload this image", "add screenshot to board", "upload png/jpg/gif/svg file". Use this for image files (png, jpg, gif, webp, svg). For documents (pdf, docx, pptx), use miro_upload_document instead. PARAMETERS:
NOTE: The file must exist on the local filesystem. For remote images, use miro_create_image with a URL instead. RELATED: To upload a document file (pdf, docx, etc.), use miro_upload_document. VOICE-FRIENDLY: "Uploaded image 'screenshot.png' to board" |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| create-brainstorm | Set up a brainstorming board with a central topic and space for ideas. |
| create-kanban | Create a kanban board with customizable columns for workflow management. |
| create-retrospective | Create a retrospective board with sections for what went well, what could improve, and action items. |
| create-sprint-board | Create a sprint planning board with standard sections for backlog, in progress, review, and done. |
| create-story-map | Create a user story mapping board with activities, user tasks, and story cards. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |