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.
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.
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
claude mcp add olgasafonova-miro-mcp-server -- docker run --rm -i ghcr.io/olgasafonova/miro-mcp-server:1.24.0
codex mcp add olgasafonova-miro-mcp-server -- docker run --rm -i ghcr.io/olgasafonova/miro-mcp-server:1.24.0
{
"$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
}
}
} mcp_servers:
olgasafonova-miro-mcp-server:
command: "docker"
args: ["run", "--rm", "-i", "ghcr.io/olgasafonova/miro-mcp-server:1.24.0"] {
"mcpServers": {
"olgasafonova-miro-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/olgasafonova/miro-mcp-server:1.24.0"
]
}
}
} 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.
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 |
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.
miro_get_board ~162
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 `miro_get_board_summary`). Full content export for AI analysis (use `miro_get_board_content`). PARAMETERS: - board_id: Required. Get from miro_list_boards or miro_find_board. 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"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| createdAt | string | – | – |
| description | string | – | – |
| id | string | yes | – |
| item_count | integer | – | – |
| modifiedAt | string | – | – |
| name | string | yes | – |
| owner | null|object | – | – |
| picture | null|object | – | – |
| team | null|object | – | – |
| viewLink | string | – | – |
No examples provided.
miro_get_board_content ~162
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"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID to analyze |
| include_connectors | boolean | – | Include connector relationships (default true) |
| include_tags | boolean | – | Include tag data and usage (default true) |
| max_items | integer | – | Maximum items to fetch (default 500, max 2000) |
| Name | Type | Req | Description |
|---|---|---|---|
| connectors | null|array | – | – |
| content_summary | object | yes | – |
| created_at | string | – | – |
| description | string | – | – |
| frames | null|array | – | – |
| id | string | yes | – |
| item_counts | object | yes | – |
| items_by_type | object | yes | – |
| message | string | yes | – |
| modified_at | string | – | – |
| name | string | yes | – |
| tags | null|array | – | – |
| total_items | integer | yes | – |
| truncated | boolean | yes | – |
| view_link | string | yes | – |
No examples provided.
miro_get_board_member ~82
Get details of a specific board member. USE WHEN: "what role does X have", "member details", "check someone's access" RETURNS: Member ID, name, and role. VOICE-FRIENDLY: "John Smith has editor access"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| member_id | string | yes | Member ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | – | |
| id | string | yes | – |
| message | string | yes | – |
| name | string | – | – |
| role | string | yes | – |
No examples provided.
miro_get_board_picture ~76
Get the preview image URL for a board. Works for all Miro plans. For full PDF/SVG exports, use the Enterprise export tools. RETURNS: Preview image URL for the board. VOICE-FRIENDLY: "Got preview image for the board"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID to get picture for |
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | – |
| image_url | string | yes | – |
| message | string | yes | – |
No examples provided.
miro_get_board_summary ~155
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" CAVEAT: counts come from Miro's REST index, which lags items created moments ago by Miro AI or the official Miro MCP composer, and excludes interactive widgets (polls, kanban, timelines) entirely. A count lower than what the board shows visually is index lag, not data loss. VOICE-FRIENDLY: "Design Sprint has 15 stickies, 8 shapes, and 3 frames - 26 items total"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID to summarize |
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | – |
| id | string | yes | – |
| item_counts | object | yes | – |
| message | string | yes | – |
| name | string | yes | – |
| recent_items | null|array | – | – |
| total_items | integer | yes | – |
| view_link | string | yes | – |
No examples provided.
miro_get_code_widget ~106
Get code widget details including full source code, language, and position. Uses v2-experimental API. May change or become unavailable before GA. USE WHEN: "show the code in this widget", "read that code snippet" RETURNS: Widget ID, full code, language, title, line-number setting, position, size, and parent frame ID.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Code widget item ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | – |
| created_at | string | – | – |
| height | number | – | – |
| id | string | yes | – |
| language | string | – | – |
| line_numbers_visible | boolean | yes | – |
| message | string | yes | – |
| modified_at | string | – | – |
| parent_id | string | – | – |
| title | string | – | – |
| width | number | – | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_get_comment ~117
Get one comment thread with all its messages. Uses a v2-experimental API that Miro ships undocumented; it may change or become unavailable without notice. USE WHEN: "show that comment thread", "what did they reply" PARAMETERS: - board_id, comment_id: Required. Get comment_id from miro_list_comments. RETURNS: Thread with messages, author info, resolved state, attached item ID.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID the comment belongs to |
| comment_id | string | yes | Comment thread ID |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | – | – |
| created_by | null|object | – | – |
| id | string | yes | – |
| item_id | string | – | – |
| message | string | yes | – |
| messages | null|array | yes | – |
| resolved | boolean | yes | – |
No examples provided.
miro_get_connector ~101
Get full details of a specific connector by ID. USE WHEN: "connector details", "what does this connector link", "show this arrow" RETURNS: Connector ID, start/end item IDs, style, caps, caption, color, and timestamps. VOICE-FRIENDLY: "This connector links Item A to Item B with a curved arrow"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| connector_id | string | yes | Connector ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| caption | string | – | – |
| color | string | – | – |
| created_at | string | – | – |
| created_by | string | – | – |
| end_cap | string | – | – |
| end_item_id | string | yes | – |
| id | string | yes | – |
| message | string | yes | – |
| modified_at | string | – | – |
| modified_by | string | – | – |
| start_cap | string | – | – |
| start_item_id | string | yes | – |
| style | string | – | – |
No examples provided.
miro_get_desire_paths ~144
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum recent events to return (default 20, max 100) |
| rule | string | – | Filter by normalizer rule: url_to_id, camel_to_snake, string_to_numeric, whitespace, boolean_coercion |
| tool | string | – | Filter by tool name (e.g., miro_get_board) |
| Name | Type | Req | Description |
|---|---|---|---|
| by_param | object | yes | – |
| by_rule | object | yes | – |
| by_tool | object | yes | – |
| message | string | yes | – |
| recent_events | null|array | yes | – |
| top_patterns | null|array | yes | – |
| total_normalizations | integer | yes | – |
No examples provided.
miro_get_diagram ~193
Get metadata for a specific native diagram item by ID. Returns title, position, size, parent frame, and timestamps. USE WHEN: "get diagram details", "where is that diagram", "diagram info" NOT FOR: Reading a diagram's internal nodes and edges — the REST API exposes item metadata only. For full diagram content, open the board in Miro. PARAMETERS: - board_id: Required - item_id: Diagram item ID (required). Get from miro_list_diagrams. RETURNS: Diagram ID, title, position, size, parent frame ID, timestamps, and view link. RELATED: Use miro_list_diagrams to discover diagrams on a board. VOICE-FRIENDLY: "Diagram 'Architecture' is at position (100, 200), size 1200x700"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Diagram item ID |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | – | – |
| created_by | string | – | – |
| height | number | – | – |
| id | string | yes | – |
| item_url | string | – | – |
| message | string | yes | – |
| modified_at | string | – | – |
| modified_by | string | – | – |
| parent_id | string | – | – |
| title | string | – | – |
| type | string | yes | – |
| width | number | – | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_get_doc ~114
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: - board_id: Required - item_id: Doc format item ID (required) RETURNS: Document content (Markdown), position, timestamps. RELATED: Use miro_create_doc to create new documents. Use miro_delete_doc to remove.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Doc format item ID |
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | – |
| created_at | string | – | – |
| created_by | string | – | – |
| id | string | yes | – |
| message | string | yes | – |
| modified_at | string | – | – |
| modified_by | string | – | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_get_document ~99
Get details of a document on a Miro board, including its Miro-hosted URL and title. For image items, use `miro_get_image` instead. USE WHEN: "get document details", "what document is this", "document URL" VOICE-FRIENDLY: "Document 'Q4 Report' hosted at Miro"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Document item ID |
| Name | Type | Req | Description |
|---|---|---|---|
| document_url | string | – | – |
| height | number | – | – |
| id | string | yes | – |
| message | string | yes | – |
| parent_id | string | – | – |
| title | string | – | – |
| width | number | – | – |
| x | number | – | – |
| y | number | – | – |
No examples provided.
miro_get_export_job_results ~55
Get download links for completed export. ENTERPRISE ONLY. Links expire in 15 min; call again to regenerate.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Export job ID |
| org_id | string | yes | Organization ID |
| Name | Type | Req | Description |
|---|---|---|---|
| boards | null|array | yes | – |
| expires_in | string | – | – |
| job_id | string | yes | – |
| message | string | yes | – |
| status | string | yes | – |
No examples provided.
miro_get_export_job_status ~219
Check the progress of a board export job. Call after miro_create_export_job. ENTERPRISE ONLY. USE WHEN: Polling an export job started with miro_create_export_job. Call repeatedly until status is "completed" or "failed". PARAMETERS: - org_id: Required. Same organization ID used in miro_create_export_job. - job_id: Required. Job ID returned by miro_create_export_job. RETURNS: Job ID, status (in_progress, completed, failed), progress percentage, and boards exported/total count. NEXT STEPS BY STATUS: - in_progress: Wait a few seconds, then poll again - completed: Call miro_get_export_job_results to get download links - failed: Export failed; check board IDs and permissions FAILS WHEN: Not on Enterprise plan. Invalid org_id or job_id. VOICE-FRIENDLY: "Export 50% complete: 5 of 10 boards exported"
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Export job ID |
| org_id | string | yes | Organization ID |
| Name | Type | Req | Description |
|---|---|---|---|
| boards_exported | integer | – | – |
| boards_total | integer | – | – |
| created_at | string | – | – |
| finished_at | string | – | – |
| job_id | string | yes | – |
| message | string | yes | – |
| progress | integer | – | – |
| status | string | yes | – |
No examples provided.
miro_get_frame ~78
Get full details of a specific frame by ID. To get items inside the frame, use `miro_get_frame_items`. VOICE-FRIENDLY: "Frame 'Sprint Planning' is 800x600 with 12 items inside"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| frame_id | string | yes | Frame ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| child_count | integer | yes | – |
| color | string | – | – |
| created_at | string | – | – |
| created_by | string | – | – |
| height | number | yes | – |
| id | string | yes | – |
| message | string | yes | – |
| modified_at | string | – | – |
| modified_by | string | – | – |
| title | string | – | – |
| width | number | yes | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_get_frame_items ~171
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"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor |
| detail_level | string | – | Response detail level: 'minimal' (default) returns basic fields, 'full' includes style, geometry, timestamps, and creator info |
| frame_id | string | yes | Frame ID to get items from |
| limit | integer | – | Max items to return (default 50, max 100) |
| type | string | – | Filter by item type: sticky_note, shape, text, card, image |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| has_more | boolean | yes | – |
| items | null|array | yes | – |
| message | string | yes | – |
No examples provided.
miro_get_group ~82
Get details of a specific group by ID. USE WHEN: "group details", "what's in this group", "show group info" RETURNS: Group ID and member item IDs. VOICE-FRIENDLY: "This group contains 4 items"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| group_id | string | yes | Group ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| items | null|array | yes | – |
| message | string | yes | – |
No examples provided.
miro_get_group_items ~137
Get items in a group with their details. For items inside a visual frame, use miro_get_frame_items. USE WHEN: "list items in this group", "what items are grouped together", "show group members" RETURNS: Array of items with IDs, types, and content. VOICE-FRIENDLY: "Group has 4 items: 2 stickies, 1 shape, 1 text"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor |
| group_id | string | yes | Group ID |
| limit | integer | – | Max items to return (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| has_more | boolean | yes | – |
| items | null|array | yes | – |
| message | string | yes | – |
No examples provided.
miro_get_image ~119
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 `miro_get_document` instead. USE WHEN: "get image URL", "what image is this", "image details" VOICE-FRIENDLY: "Image 'Logo' is 800x600 at position (100, 200)"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Image item ID |
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | – | – |
| id | string | yes | – |
| image_url | string | yes | – |
| message | string | yes | – |
| parent_id | string | – | – |
| title | string | – | – |
| width | number | – | – |
| x | number | – | – |
| y | number | – | – |
No examples provided.
miro_get_item ~91
Get full details of a specific item by ID. If you don't have the item ID, use `miro_search_board` to find it or `miro_list_items` to browse. VOICE-FRIENDLY: "That sticky says 'Review Q4 goals' and was created by John yesterday"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Item ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | – |
| content | string | – | – |
| created_at | string | – | – |
| created_by | string | – | – |
| height | number | – | – |
| id | string | yes | – |
| modified_at | string | – | – |
| modified_by | string | – | – |
| parent_id | string | – | – |
| shape | string | – | – |
| title | string | – | – |
| type | string | yes | – |
| width | number | – | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_get_item_tags ~110
List tags attached to a specific item. USE WHEN: User asks "what tags are on this sticky", "show labels for this item" PARAMETERS: - board_id: Required - item_id: Item ID (required) 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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | ID of the item |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| item_id | string | yes | – |
| message | string | yes | – |
| tags | null|array | yes | – |
No examples provided.
miro_get_items_by_tag ~225
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: - board_id: Required - tag_id: Tag ID to filter by (required). Get tag IDs from list_tags. - limit: Max items (default 50, max 50) - offset: Pagination offset 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'"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| limit | integer | – | Max items to return (default 50, max 50) |
| offset | integer | – | Offset for pagination |
| tag_id | string | yes | Tag ID to filter by |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| has_more | boolean | yes | – |
| items | null|array | yes | – |
| message | string | yes | – |
| tag_id | string | yes | – |
No examples provided.
miro_get_mindmap_node ~96
Get mindmap node details including content, hierarchy, and position. Uses v2-experimental API. USE WHEN: "mindmap node details", "what's in this node", "show node content" RETURNS: Node ID, content, parent/child IDs, position, and root flag.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| node_id | string | yes | Mindmap node ID to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| child_ids | null|array | – | – |
| content | string | yes | – |
| created_at | string | – | – |
| id | string | yes | – |
| is_root | boolean | yes | – |
| message | string | yes | – |
| modified_at | string | – | – |
| node_view | string | – | – |
| parent_id | string | – | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_get_org_audit_logs ~280
Query MIRO's organization-wide audit log — who did what across the Miro workspace, including actions taken outside this server. ENTERPRISE ONLY; needs the auditlogs:read scope. USE WHEN investigating workspace activity, access changes, or board history across users. For what this server itself executed, use miro_get_audit_log instead. created_after and created_before are BOTH REQUIRED — the API has no default window. Miro retains 90 days; older events are only available via the CSV export in the Miro admin UI. RETURNS: Cursor-paginated events with actor (name/email), target object, event type, category, team, and source IP.
| Name | Type | Req | Description |
|---|---|---|---|
| created_after | string | yes | REQUIRED. Start of the time window (ISO 8601, e.g. 2026-08-01T00:00:00Z). Miro retains 90 days. |
| created_before | string | yes | REQUIRED. End of the time window (ISO 8601, e.g. 2026-08-14T00:00:00Z). |
| cursor | string | – | Pagination cursor from a previous response |
| limit | integer | – | Max events per page (default 50, max 100) |
| sorting | string | – | Sort order by creation time: ASC or DESC (default DESC) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| events | null|array | yes | – |
| has_more | boolean | yes | – |
| message | string | – | – |
No examples provided.
miro_get_table ~194
Get metadata for a specific table (data_table_format item) by ID. Returns position, size, parent frame, and timestamps. USE WHEN: "get table details", "where is that table", "table info" NOT FOR: Reading table row data or column definitions. The Miro REST API provides table metadata only. PARAMETERS: - board_id: Required - item_id: Table item ID (required). Get from miro_list_tables or miro_list_items with type filter. RETURNS: Table ID, position, size, parent frame ID, timestamps, and view link. RELATED: Use miro_list_tables to discover tables. Use miro_list_items with type "data_table_format" as an alternative. VOICE-FRIENDLY: "Table is at position (100, 200), size 400x300"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Table item ID |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string | – | – |
| created_by | string | – | – |
| height | number | – | – |
| id | string | yes | – |
| item_url | string | – | – |
| message | string | yes | – |
| modified_at | string | – | – |
| modified_by | string | – | – |
| parent_id | string | – | – |
| type | string | yes | – |
| width | number | – | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_get_tag ~86
Get details of a specific tag by ID. USE WHEN: "tag details", "what color is this tag", "show tag info" RETURNS: Tag ID, title, and color. VOICE-FRIENDLY: "Tag 'Urgent' is red"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| tag_id | string | yes | ID of the tag to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | yes | – |
| id | string | yes | – |
| message | string | yes | – |
| title | string | yes | – |
No examples provided.
miro_list_all_items ~175
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"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| detail_level | string | – | Response detail level: 'minimal' (default) returns basic fields, 'full' includes style, geometry, timestamps, and creator info |
| max_items | integer | – | Maximum total items to fetch across all pages (default 500, max 10000) |
| type | string | – | Filter by item type: sticky_note, shape, text, connector, frame, card, image, document, embed |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| items | null|array | yes | – |
| message | string | yes | – |
| total_pages | integer | yes | – |
| truncated | boolean | yes | – |
No examples provided.
miro_list_board_members ~107
List all users who have access to a board. USE WHEN: "who has access", "list board collaborators", "show board members" RETURNS: Array of members with IDs, names, and roles. VOICE-FRIENDLY: "This board has 5 members: 2 editors, 3 viewers"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| limit | integer | – | Max members to return (default 50) |
| offset | string | – | Pagination cursor |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| has_more | boolean | yes | – |
| members | null|array | yes | – |
| message | string | yes | – |
No examples provided.
miro_list_boards ~193
List Miro boards accessible to the user. Use board ID for subsequent operations. For a specific board by name, use `miro_find_board` instead. RETURNS per board: id, name, description, view_link, team_id, team_name, owner (id + name), created_at, modified_at. Team and owner come back on the listing itself, so segmenting boards by team or owner, or sorting by recency, needs no follow-up call. Feed team_id straight back into the team_id filter to narrow the next page. VOICE-FRIENDLY: "Found 5 boards: Design Sprint, Product Roadmap, Team Retro..."
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max boards to return (default 20, max 50) |
| offset | string | – | Pagination cursor |
| query | string | – | Search boards by name |
| team_id | string | – | Filter by team ID |
| Name | Type | Req | Description |
|---|---|---|---|
| boards | null|array | yes | – |
| count | integer | yes | – |
| has_more | boolean | yes | – |
| offset | string | – | – |
No examples provided.
miro_list_code_widgets ~126
List code widgets on a board with truncated code previews. Uses v2-experimental API. May change or become unavailable before GA. USE WHEN: "what code snippets are on this board", "find the code widgets" RETURNS: Array of widgets with IDs, titles, languages, and 80-char code previews. Use miro_get_code_widget for full source. Paginated via cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor |
| limit | integer | – | Max widgets to return (default 50, max 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| has_more | boolean | yes | – |
| message | string | yes | – |
| widgets | null|array | yes | – |
No examples provided.
miro_list_comments ~200
List comment threads on a board, each with its full message history, author, resolved state, and attached item ID. Uses a v2-experimental API that Miro ships undocumented; it may change or become unavailable without notice. USE WHEN: "what feedback is on this board", "show unresolved comments", "read the comments" PARAMETERS: - board_id: Required. - limit: Max threads per page (default 20, max 50). offset: zero-based pagination. RETURNS: Threads with messages, count, total, has_more. Filter resolved client-side via each thread's resolved flag. VOICE-FRIENDLY: "3 comment threads, 1 unresolved: 'move the CTA up' from Olga"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID to list comments from |
| limit | integer | – | Max threads to return (default 20, max 50) |
| offset | integer | – | Zero-based offset for pagination |
| Name | Type | Req | Description |
|---|---|---|---|
| comments | null|array | yes | – |
| count | integer | yes | – |
| has_more | boolean | yes | – |
| message | string | – | – |
| total | integer | yes | – |
No examples provided.
miro_list_connectors ~119
List all connectors (lines/arrows) on a Miro board. USE WHEN: "show all connectors", "list arrows on board", "what's connected" RETURNS: Array of connectors with IDs, start/end item IDs, style, and captions. Paginated via cursor. VOICE-FRIENDLY: "Found 12 connectors on the board"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor |
| limit | integer | – | Max connectors to return (default 50, max 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| connectors | null|array | yes | – |
| count | integer | yes | – |
| cursor | string | – | – |
| has_more | boolean | yes | – |
| message | string | yes | – |
No examples provided.
miro_list_diagrams ~270
List native diagram items on a Miro board (diagrams made with Miro's own diagramming tools). Returns diagram metadata: ID, title, position, size, and timestamps. USE WHEN: "find diagrams on this board", "list all diagrams", "does this board have diagrams" NOT FOR: Diagrams built from shapes and connectors by miro_generate_diagram — those are regular items, not native diagram items; use miro_list_items. Creating diagrams: the REST API is read-only here (POST returns 405); creation happens in Miro's UI or hosted tooling. PARAMETERS: - board_id: Required - limit: Max diagrams to return (default 10, max 50) - cursor: Pagination cursor from previous response RETURNS: Diagram items with IDs, titles, positions, sizes, and timestamps. RELATED: Use miro_get_diagram for a single diagram's details. Use miro_generate_diagram to draw a new diagram from Mermaid code (as shapes, not a native diagram item). VOICE-FRIENDLY: "Found 2 diagrams on the board"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor from previous response |
| limit | integer | – | Max diagrams to return (default 10, max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| diagrams | null|array | yes | – |
| message | string | yes | – |
| total | integer | yes | – |
No examples provided.
miro_list_groups ~98
List all groups on a Miro board. USE WHEN: "show all groups", "list groups on board", "what groups exist" RETURNS: Array of group IDs. Paginated via cursor. VOICE-FRIENDLY: "Found 3 groups on the board"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor |
| limit | integer | – | Max groups to return (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| groups | null|array | yes | – |
| has_more | boolean | yes | – |
| message | string | yes | – |
No examples provided.
miro_list_items ~215
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" CAVEAT: Miro's REST index lags items created moments ago by Miro AI or the official Miro MCP composer, and interactive widgets (polls, kanban, timelines) never appear in it. Missing items on a fresh board are index lag, not deletion.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor |
| detail_level | string | – | Response detail level: 'minimal' (default) returns basic fields, 'full' includes style, geometry, timestamps, and creator info |
| limit | integer | – | Max items to return (default 50, max 100) |
| type | string | – | Filter by item type: sticky_note, shape, text, connector, frame |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| has_more | boolean | yes | – |
| items | null|array | yes | – |
No examples provided.
miro_list_mindmap_nodes ~99
List all mindmap nodes on a board. Returns flat list; use parent_id to reconstruct hierarchy. Uses v2-experimental API. RETURNS: Array of nodes with IDs, content, and parent IDs. Use parent_id to reconstruct hierarchy.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor |
| limit | integer | – | Max nodes to return (default 50, max 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| has_more | boolean | yes | – |
| message | string | yes | – |
| nodes | null|array | yes | – |
No examples provided.
miro_list_tables ~212
List tables (data_table_format items) on a Miro board. Returns table metadata: ID, position, size, and timestamps. Use the table ID with miro_get_table for details. USE WHEN: "find tables on this board", "list all tables", "does this board have tables", "show me the tables" NOT FOR: Reading table row data or column definitions. The Miro REST API provides table metadata only. For full table content, open the board in Miro. PARAMETERS: - board_id: Required - limit: Max tables to return (default 10, max 50) - cursor: Pagination cursor from previous response RETURNS: Table items with IDs, positions, sizes, and timestamps. VOICE-FRIENDLY: "Found 3 tables on the board"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| cursor | string | – | Pagination cursor from previous response |
| limit | integer | – | Max tables to return (default 10, max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| cursor | string | – | – |
| message | string | yes | – |
| tables | null|array | yes | – |
| total | integer | yes | – |
No examples provided.
miro_list_tags ~125
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)..."
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| limit | integer | – | Max tags to return (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| message | string | yes | – |
| tags | null|array | yes | – |
No examples provided.
miro_move_code_widget ~142
Move a code widget to a new x/y position on the board. Uses v2-experimental API. May change or become unavailable before GA. USE WHEN: "move the code widget", "reposition that snippet" NOTE: Position only (center origin). To change content or size, use miro_update_code_widget instead. RETURNS: Confirmation with widget ID and new coordinates.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| item_id | string | yes | Code widget item ID to move |
| x | number | yes | New X position on the board (center origin) |
| y | number | yes | New Y position on the board (center origin) |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| message | string | yes | – |
| x | number | yes | – |
| y | number | yes | – |
No examples provided.
miro_read_board_svg ~349
Render a board's items as an SVG document, computed locally from item geometry (no export job, no external service). Frames render as dashed outlines, shapes and stickies as filled rects/ellipses with labels, text as text, connectors as lines between item centers. Every element carries data-miro-id and data-miro-type attributes linking it back to the board item, and the document is directly re-submittable to miro_update_from_svg after editing. USE WHEN: "show me the board as SVG", "show me just this frame", "vector snapshot of the layout", "diff two boards visually", or feeding a board's spatial layout to a tool that reads SVG. NOT FOR: pixel-accurate rendering (use miro_get_board_picture) or full content analysis (use miro_get_board_content). This is a spatial approximation: images render as placeholder rects and rich styling is reduced to fill colors. PARAMETERS: - board_id: Required. max_items: cap on items fetched (default 500, max 2000). - frame_id: Optional. Scope the render to one frame and its children; child coordinates come back relative to the frame's top-left corner, with the frame outline at (0,0). RETURNS: svg (the document), item_count, skipped (items with no visual mapping), truncated.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID to render |
| frame_id | string | – | Render only this frame and its children. Child coordinates are relative to the frame's top-left corner. Omit for the whole board. |
| max_items | integer | – | Maximum items to include (default 500, max 2000) |
| Name | Type | Req | Description |
|---|---|---|---|
| item_count | integer | yes | – |
| message | string | yes | – |
| skipped | integer | yes | – |
| svg | string | yes | – |
| truncated | boolean | yes | – |
No examples provided.
miro_remove_board_member ~72
Remove a member from a board. WARNING: This revokes the member's access to the board. RETURNS: Confirmation with removed member ID. VOICE-FRIENDLY: "Removed member from board"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID |
| member_id | string | yes | Member ID to remove |
| Name | Type | Req | Description |
|---|---|---|---|
| member_id | string | yes | – |
| message | string | yes | – |
| success | boolean | yes | – |
No examples provided.
miro_reply_comment ~150
Append a reply to an existing comment thread. Uses a v2-experimental API that Miro ships undocumented; it may change or become unavailable without notice. USE WHEN: "reply to that comment", "answer the feedback" PARAMETERS: - board_id, comment_id: Required. Get comment_id from miro_list_comments. - content: Required. Text of the reply. RETURNS: Thread ID and new message count. VOICE-FRIENDLY: "Replied to the thread - now 3 messages"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID the comment belongs to |
| comment_id | string | yes | Comment thread ID to reply to |
| content | string | yes | Text of the reply |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| message | string | yes | – |
| message_count | integer | yes | – |
No examples provided.
miro_resolve_comment ~159
Resolve a comment thread, or reopen it with resolved=false. Uses a v2-experimental API that Miro ships undocumented; it may change or become unavailable without notice. USE WHEN: "mark that feedback as done", "resolve the comment", "reopen that thread" PARAMETERS: - board_id, comment_id: Required. - resolved: Optional. Defaults to true; pass false to reopen. RETURNS: Thread ID and its new resolved state. VOICE-FRIENDLY: "Resolved - 2 threads still open"
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | string | yes | Board ID the comment belongs to |
| comment_id | string | yes | Comment thread ID |
| resolved | null|boolean | – | true to resolve (default), false to reopen |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| message | string | yes | – |
| resolved | boolean | yes | – |
No examples provided.