Miro
Speed up product development from ideation to launch. Align teams, break tool silos, and ship what customers need in one AI-powered visual platform. Connect ChatGPT and Codex to Miro to summarize existing boards or build new ones from scratch. Run sharper workshops, sprint planning, and product strategy sessions with ChatGPT or Codex. Generate layouts, frames, sticky notes, images, docs, diagrams, tables, and more. Key use cases: - Summarize and search boards: Drop a board URL into ChatGPT or Codex to pull out themes, decisions, and open questions from retros, planning sessions, and strategy maps. Search across every board you have access to. - Build new boards from scratch: Generate ready-to-run layouts for retros, sprint planning, and product strategy with frames, sticky notes, cards, tables, docs, and images - Bring research onto the canvas: Have ChatGPT or Codex research a topic — competitors, user feedback, market trends, prior art — and lay the findings out on a fresh board as diagrams, sticky notes, tables, docs, and images, ready to share with your team. - Visualize complex ideas: Turn a prompt, PR, or spec into architecture, sequence-flow, ERD, or user-journey diagrams directly on the canvas - Act on feedback agentically: Read and resolve comments, reply in-thread, and convert scattered team discussion into a clear list of action items right on the board.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Whiteboards & Visual Collaboration Canvases
- Secondary Subcategories
- None listed
- Brand
- Miro
- Access
- Account required
- First tracked
- 2026-07-17
- Tool count
- 44
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is visible.
ChatGPT Plugin Discoverability Score
ChatGPT organic discovery is not live yet
Miro is tracked in the ChatGPT Plugin registry. Public organic-discovery measurement is not live for ChatGPT yet, so there is no score to publish today.
Get notified when your score goes live
Enter your work email and we’ll notify you when ChatGPT Plugin organic discovery scoring launches.
No spam. Unsubscribe any time.
Competing in ChatGPT Whiteboards & Visual Collaboration Canvases
View CategoryHow the Discoverability Score works
Organic discovery scoring for Miro on ChatGPT is not live yet. The score will use measured agent conversations when it launches.
Organic discovery scoring is pending. Your Plugin score will appear on this scale when measurement goes live.
FoundDiagnostic
Whether Claude found your Plugin in connector search. It must be Found before it can reach the picker, but the score counts picker appearances—not search results.
PickedMain score
How often your Plugin appeared in the picker, or Claude invoked it directly, across contested conversations. This percentage is the Discoverability Score; the headline number is rounded.
PositionedDiagnostic
What position your Plugin appeared in when it was shown in the picker. This shows prominence, but it does not affect the score.
44 tools agents can invoke
Get the DSL (Domain-Specific Language) format specification for creating board items and connectors. Returns syntax rules, item types, connector syntax, valid colors, valid shape types, and a complete example. REQUIRED: Call this before layout_create to understand the DSL format. In a conversation, call this only once and reuse the specification.
layout_get_dsl
Create a new comment on the Miro board canvas. The comment appears at the specified canvas coordinates and is attributed to the current user. To attach the comment to an existing board item, pass a URL that targets that item. Use list_comments to read existing comments and their positions.
comment_create
Create a code widget on a Miro board. The widget displays syntax-highlighted source code with an optional title and line numbers. Coordinates: when the URL has no item target, x/y are board-absolute (board center is (0, 0)). When the URL targets a frame via moveToWidget, the widget is created INSIDE that frame and x/y are relative to the frame's top-left corner; (0, 0) is the frame's top-left and the widget must fit within the frame's width and height. If no board URL is provided, a new board will be created. IMPORTANT: Always confirm with the user before creating a new board. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
code_widget_create
Create a diagram on a Miro board from DSL (Domain-Specific Language) text. PREREQUISITE: Call diagram_get_dsl first to obtain the DSL format specification for the diagram type you want to create. Then generate DSL text following that specification and pass it to this tool. Supported diagram types: flowchart, uml_class, uml_sequence, entity_relationship. Coordinates: when the URL has no item target, x/y are board-absolute (board center is (0, 0)). When the URL targets a frame via moveToWidget, the diagram is created INSIDE that frame and x/y are relative to the frame's top-left corner; (0, 0) is the frame's top-left and the diagram must fit within the frame's width and height. If no board URL is provided, a new board will be created. IMPORTANT: Always confirm with the user before creating a new board. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
diagram_create
Create a doc format item (structured document similar to Google Docs) on a Miro board. Content accepts GitHub Flavored Markdown format, including headings, formatting, lists, links, tables, and blockquotes. Blocks inside callouts and blockquotes are not supported. Coordinates: when the URL has no item target, x/y are board-absolute (board center is (0, 0)). When the URL targets a frame via moveToWidget, the document is created INSIDE that frame and x/y are relative to the frame's top-left corner; (0, 0) is the frame's top-left, x/y mark the document's top-left corner, and the document must fit within the frame's width and height. The default doc width is 800px. If no board URL is provided, a new board will be created. IMPORTANT: Always confirm with the user before creating a new board. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
doc_create
Create a Miro slide deck from one or more HTML slides. The deck materializes as a slide_container with child slide frames the next time any user opens the board — no Miro tab needs to be open at creation time. ONE CALL PER DECK: pass EVERY slide of the deck in a single call's input list. There is NO per-call slide limit and no slide count fails on its own — a deck of 3, 10, or 30+ slides is one call. A second call WITHOUT reference_deck_id creates a separate, independent deck; you cannot append to or extend an existing deck, so splitting one deck across several calls fragments it into multiple containers on the board. If a call fails (e.g. transient HTTP 500), fix the offending slide and retry the SAME single call with the full set — NEVER split it into smaller batches, and never infer a slide-count limit from a failure. Images: leave external http/https URLs in the HTML untouched — the server fetches and uploads them for you. ONLY local file references (e.g. './logo.png', 'assets/x.svg') need pre-upload: call image_get_upload_url with src set to the EXACT in-HTML reference, PUT the bytes, then pass the returned tokens via image_tokens below. The server rewrites matching <img src=...> attributes and attaches data-board-resource — do NOT rewrite the HTML yourself. IMPORTANT: ONLY local file references (e.g. './logo.png', 'assets/x.svg') in any part of the HTML like inline, url(), srcset, etc... REQUIRES pre-upload via image_get_upload_url with src set to the EXACT in-HTML reference, then pass the returned tokens via image_tokens below. Fonts: CDN URL only. Author static HTML + CSS only — <script> elements and inline event handlers (onclick etc.) are stripped, so any scripted behavior is silently lost; use CSS states (:hover, :focus) for visual interactivity. Max per slide: 1,048,576 bytes. Provide exactly one input — PREFER html_tokens (HTML stays out of context). html_contents is a last-resort fallback only when the runtime cannot issue an HTTP PUT at all; HTML size, image count, or multi-slide are NOT valid reasons. Slide sizing: size the slide via its <body> (e.g. <style>body{width:1280px;height:720px}</style>); the client renders and measures it. Slide label: each slide's HTML must include <meta name="screen:name" content="<label>"> in <head> so the slide gets a meaningful display label; without it a generic placeholder is used. Placement: x/y are board-absolute (board center is (0, 0)), and are for a deck with NO relation to an existing one (e.g. the first deck on a blank board, or the user gave explicit coordinates). Slide order is preserved from the input list. Iterating on an existing deck (passing reference_deck_id means you are iterating — deleting slides, modifying slides, adding new slides, or reordering slides in something already on the board): NEVER compute x/y yourself for this case. This call always replaces the ENTIRE deck — there is no way to patch a single slide in place — so html_tokens/html_contents must contain the COMPLETE set of slides for the result, not just the ones that changed. Steps: 1. Call slides_read_html (or board_list_items) and check whether the deck being iterated on is present, i.e. already a real board item. 2. If it is NOT present, the prior suggestion is still pending — stop and tell the user to open it and click 'Apply to canvas' before you continue. Do not create a new deck yet. 3. If it IS present, call slides_read_html with include_html=true to get every existing slide's HTML, then build the full ordered list you want in the result: keep untouched slides by re-uploading their HTML unchanged, modify a slide by re-uploading its edited HTML in the same slot, delete a slide by leaving its HTML out entirely, add a slide by inserting its HTML at the desired position, and reorder slides by arranging the list in the desired final order. 4. Pass that full ordered list as html_tokens/html_contents together with reference_deck_id so the new deck is positioned below the original — best-effort, not pixel-exact. Also pass if_not_modified_since (the deck_modified_at from the slides_read_html call in step 3) so a concurrent edit to the deck since your read is rejected instead of silently overwritten — on rejection, re-read, reapply your edit, and retry. 5. The original deck is NOT deleted automatically and is now superseded — tell the user it's a leftover duplicate once the new deck is confirmed. This creates a pending suggestion, not a real board item — the user must open the returned URL and click 'Apply to canvas' before it exists. The applied deck's real id is NOT the item_id returned here and cannot be known in advance. To find it afterwards: call board_list_items and pick the slide_container closest to the x/y this call returned — it will be clearly closer than any other deck already on the board. If nothing is clearly closer, don't guess — list the candidates and ask the user which one.
slides_create_html
Create an image item on a Miro board. Accepts either an upload token (from image_get_upload_url after the upload completes) or a publicly accessible image URL. Exactly one of image_token or image_url must be provided. When image_token is provided, title/x/y/width from the token (set at upload time) are used; any values supplied here for those fields are ignored. Coordinates: when the URL has no item target, x/y are board-absolute (board center is (0, 0)). When the URL targets a frame via moveToWidget, the image is created INSIDE that frame and x/y are relative to the frame's top-left corner; (0, 0) is the frame's top-left and the image must fit within the frame's width and height.
image_create
Create a structured diagram on a Miro board from Mermaid syntax. Use this tool when the user wants to visualize a diagram. Supports any Mermaid syntax up to v10. PREREQUISITE: Call diagram_get_mermaid_instructions first to obtain guidance (including how to apply colors) for writing the Mermaid syntax. Coordinates: when the URL has no item target, x/y are board-absolute (board center is (0, 0)). When the URL targets a frame via moveToWidget, the diagram is created INSIDE that frame and x/y are relative to the frame's top-left corner; (0, 0) is the frame's top-left and the diagram must fit within the frame's width and height. If no board URL is provided, a new board will be created. IMPORTANT: Always confirm with the user before creating a new board. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
diagram_create_mermaid
Create a new Miro board. IMPORTANT: Always confirm with the user before creating a board. This action creates a new board and cannot be undone. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
board_create
Create a Miro prototype from one or more HTML screens. Images: leave external http/https URLs in the HTML untouched — the server fetches and uploads them for you. ONLY local file references (e.g. './logo.png', 'assets/x.svg') need pre-upload: call image_get_upload_url with src set to the EXACT in-HTML reference, PUT the bytes, then pass the returned tokens via image_tokens below. The server rewrites matching <img src=...> attributes and attaches data-board-resource — do NOT rewrite the HTML yourself. IMPORTANT: ONLY local file references (e.g. './logo.png', 'assets/x.svg') in any part of the HTML like inline, url(), srcset, etc... REQUIRES pre-upload: call image_get_upload_url with src set to the EXACT in-HTML reference, PUT the bytes, then pass the returned tokens via image_tokens below. Fonts: CDN URL only. Author static HTML + CSS only — <script> elements and inline event handlers (onclick etc.) are stripped, so any scripted behavior is silently lost; use CSS states (:hover, :focus) for visual interactivity. Max per screen: 1,048,576 bytes. Max screens per call: 20 — split larger prototypes across multiple prototype_create calls. Provide exactly one input — PREFER html_tokens (HTML stays out of context). html_contents is a last-resort fallback only when the runtime cannot issue an HTTP PUT at all; HTML size, image count, or multi-screen are NOT valid reasons. Placement: no item target → x/y are board-absolute (center is (0, 0)); moveToWidget on a frame → prototype is created inside, x/y are relative to frame top-left and must fit within frame width/height. All screens in one call share device_type, orientation, and placement; order is preserved.
prototype_create
Create a table on a Miro board with specified columns. Supports text, select, multiselect, date, link, person, and number column types. This always creates a plain grid table. To produce a timeline, kanban, or tree, first create the table here, then call table_update_view to switch its layout. For a request like 'create a timeline/kanban/tree', do BOTH steps in sequence. Coordinates: when the URL has no item target, x/y are board-absolute (board center is (0, 0)). When the URL targets a frame via moveToWidget, the table is created INSIDE that frame and x/y are relative to the frame's top-left corner; (0, 0) is the frame's top-left and the table must fit within the frame's width and height. If no board URL is provided, a new board will be created. IMPORTANT: Always confirm with the user before creating a new board. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
table_create
Create multiple board items (and connectors between them) on a Miro board from DSL (Domain-Specific Language) text. PREREQUISITE: Call layout_get_dsl first to obtain the DSL format specification. Items are created using board-absolute coordinates. Frames are always created first, then all other items, then connectors last (so they can reference items by alias). Returns a list of any items that failed to be created. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
layout_create
Delete a code widget from a Miro board.
code_widget_delete
Get the DSL (Domain-Specific Language) format specification for a diagram type. Returns the rules, syntax, color guidelines, and examples needed to write valid DSL for creating diagrams. Supported diagram types: flowchart, uml_class, uml_sequence, entity_relationship. REQUIRED: Call this before calling diagram_create to understand the expected DSL format. When creating multiple diagrams of the same type in a conversation, you only need to call diagram_get_dsl once and reuse the format specification for subsequent diagrams.
diagram_get_dsl
Get image download URL for an image item from a Miro board.
image_get_url
Explore high-level items on a Miro board. Returns a list of frames, documents, prototypes (interactive design mockups with multiple UI screens), individual prototype screens, tables, and diagrams with their URLs and titles. Use this to discover what's on a board before retrieving detailed content with context_get.
context_explore
Read a code widget from a Miro board, returning its source code, language, title, and position.
code_widget_get
Fetch verbatim customer quotes for the feedback chunks returned by search_customer_feedback. Pass the chunk_ids of the summaries you found relevant to get the exact words customers used from those specific segments, with speaker, sentiment, strength, source, and a video link when the source is a recorded call.
insights_get_customer_feedback_quotes
Reserve one or more single-use upload slots for HTML screens. Set count to the number of screens in the prototype to reserve all slots in a single call instead of calling this once per screen. Returns one entry per slot, each with its own upload_url and token; uploads can run in parallel. PUT the raw HTML as the request body with Content-Type: text/html; no auth header. curl: curl -X PUT -H 'Content-Type: text/html' --data-binary @page.html '<upload_url>'. Max size: 1,048,576 bytes per screen. External http/https image URLs are fine; the server fetches them. Only local file references need pre-upload (see prototype_create's image_tokens). After each upload, pass its token to prototype_create, in the same order.
prototype_get_upload_url
Reserve one or more single-use upload slots for HTML slides. Set count to the number of slides in the deck to reserve all slots in a single call instead of calling this once per slide. Returns one entry per slot, each with its own upload_url and token. PUT every slide's HTML concurrently — start all uploads before waiting on any of them; uploading one at a time defeats the point of batching and is noticeably slower for the end user. PUT the raw HTML as the request body with Content-Type: text/html; no auth header. curl: curl -X PUT -H 'Content-Type: text/html' --data-binary @slide.html '<upload_url>'. Max size: 1,048,576 bytes per slide. External http/https image URLs are fine; the server fetches them. Only local file references need pre-upload (see slides_create_html's image_tokens). Slide sizing: size the slide via its <body> (e.g. <style>body{width:1280px;height:720px}</style>); the client renders and measures it. Slide label: include <meta name="screen:name" content="<label>"> in <head> so the slide gets a meaningful display label; without it a generic placeholder is used. Once all uploads complete, pass the full list of tokens to a single slides_create_html call, preserving upload order. A deck is always ONE slides_create_html call: if it has more than 30 slides, reserve slots across several calls here, then combine all tokens into that one create call — never split the deck into multiple create calls.
slides_get_upload_url_html
Get a single-use upload URL for a local image. Returns upload_url and a token. PUT the raw image bytes as the request body; set Content-Type to the image MIME type; no auth header. curl: curl -X PUT -H 'Content-Type: image/png' --data-binary @image.png '<upload_url>'. After upload, pass the returned token to any tool that accepts an image_token / image_tokens parameter — see each consumer tool's description for what it does with the upload. Max size: 6,000,000 bytes. Accepted types: image/bmp, image/gif, image/jpeg, image/png, image/svg+xml, image/vnd.adobe.photoshop.
image_get_upload_url
Get image data for an image item from a Miro board.
image_get_data
Read existing board items and return them as DSL text. When given a board URL, returns all supported top-level items (no frame children). When the URL targets a specific frame (via moveToWidget), returns the frame and its children. When the URL targets a non-frame item, returns just that item as DSL with full content. By default (mode=structured), DOCs and TABLEs are returned as shallow headers with read-only metadata (preview/length, schema/row count) so large boards stay token-light; open the DOC or TABLE by URL to read its full body. Pass mode=full to force inline DOC bodies and TABLE rows at any scope. Connectors between items in scope are returned as CONNECTOR lines (board and frame scope only). The returned DSL uses full Miro item URLs as ids and parent references; those URLs can be passed directly as miro_url to other tools (doc_get, table_list_rows, context_get, etc.) without modification, and fed back into layout_update for editing.
layout_read
List code widgets on a Miro board. Returns a paginated list of all code widget items on the board. Use the cursor from a previous response to retrieve the next page.
code_widget_list_items
Get guidance for writing Mermaid syntax for a diagram, including how to apply colors. Returns the rules and conventions needed to produce well-styled Mermaid diagrams. REQUIRED: Call this before calling diagram_create_mermaid to understand how to write the Mermaid syntax. When creating multiple diagrams of the same type in a conversation, you only need to call diagram_get_mermaid_instructions once and reuse the guidance for subsequent diagrams.
diagram_get_mermaid_instructions
Check whether a Miro create-result preview resource is ready. Returns pending until the preview is available. Tags: preview, resource.
preview_resource_poll
List items on a board with cursor-based pagination. For slide content, prefer slides_read_html over this tool.
board_list_items
List comments from a Miro board or a specific item on the board. Comments include author information, messages (original comment and replies), reactions, resolved status, and position. Use limit and offset for pagination. Use from_date and to_date to filter by creation time. Use resolved to filter by resolved status. IMPORTANT: The results are displayed to the user in an interactive navigator they can filter and paginate themselves. Do not restate, list, summarize, or describe the comments in your reply, and do not call this tool again for more pages unless the user explicitly asks. After calling this tool, respond with at most one short sentence (or no text at all) and use the returned data only to answer the user's explicit follow-up questions.
comment_list_comments
Read the content of a doc format item from a Miro board. Returns the markdown content and content version for use in subsequent edits.
doc_get
Use this tool first whenever the user mentions slides, a slide deck, or a presentation. Not for generic Miro frames — only HTML-based slides are covered. Read HTML slides from a Miro board. Returns slides with metadata (position, dimensions) and optionally their HTML markup. Covers both deck slides (HTML slides inside a slide deck container) and standalone HTML content widgets on the canvas. Non-HTML slide types are ignored. Provide deck_id to scope results to a specific deck, or omit to list all HTML slides on the board. If the query can be resolved using metadata alone (slide position, deck membership, dimensions), always call with include_html=false first to identify the minimal target set, then fetch include_html=true only for those slides. Only skip the metadata step when the query requires filtering on HTML content itself (e.g. 'find slides containing X text') — in that case fetch HTML directly, but scope to a specific deck_id where possible to avoid loading the entire board. When scoped to a deck_id, the response includes deck_modified_at (latest slide edit in that deck). Before iterating on a deck with slides_create_html's reference_deck_id, capture this value and pass it back as if_not_modified_since — that call rejects the edit if the deck changed after this read, so re-read and reapply before retrying.
slides_read_html
Get the history of a row's Latest Update field. The Latest Update field accumulates the text updates submitted for that row over time; this returns those entries ordered chronologically. Provide the table via its Miro URL and the target row via rowId (get rowIds from table_list_rows). Response includes for each entry: text, author_id (Miro user ID of the author), created_at and modified_at (ISO 8601 timestamps), plus the total number of entries.
table_get_latest_update_history
Get rows from a Miro table with column metadata. Each row includes a stable rowId that uniquely identifies it within the table. rowIds persist across sorting, insertion, and deletion — use them to target specific rows in table_sync_rows. Supports filtering by column value. Returns text, select, multiselect, and latest_update columns. Best practice: always use filter_by and limit when possible.Examples: next item that is not done: {"filter_by": {"Status":["To do", "In progress"]}, "limit": 1}top 5 high priority tasks: {"filter_by": {"Priority":["High"]}, "limit": 5} Response includes for each row: rowId (stable row identifier), cells (array of columnTitle, valueType, content, options, latest_update_text, latest_update_author_id). Pagination: Use 'limit' to control page size (default 10) and 'next_cursor' to fetch subsequent pages. The cursor is opaque and encodes pagination state. IMPORTANT: Do not change 'filter_by' when using a cursor from a previous response, as this will result in an error. To apply a different filter, start a new pagination sequence (no cursor).
table_list_rows
Record a thumbs up/down rating a user gave on a Miro MCP UI response, attributed to the current MCP session. Tags: feedback, rating, ui.
record_ui_feedback
Search and list boards accessible to the current user, scoped to their team. Returns board metadata — name and URL — suitable for navigating to a specific board or discovering relevant boards before operating on them. Use this tool when the user wants to find a board by name or description, or discover which boards are available before using other board tools. Supports offset-based pagination. IMPORTANT: The results are displayed to the user in an interactive board browser they can search, filter, and paginate themselves. Do not restate, list, summarize, or describe the boards in your reply, and do not call this tool again for more pages unless the user explicitly asks. After calling this tool, respond with at most one short sentence (or no text at all) and use the returned data only to answer the user's explicit follow-up questions.
board_search_boards
Search feedback from your organization's customers, gathered from connected integrations (Gong calls, Zendesk tickets, etc.). Returns summaries of matching feedback segments. All inputs are optional. Provide 'query' for semantic search; omit it to browse the most recent feedback (optionally narrowed by filters), which suits open-ended questions like 'what are customers saying'. Combine filters to narrow results. To read the exact words customers used, pass the returned chunk_ids to get_customer_feedback_quotes.
insights_search_customer_feedback
Show a single interactive preview of items on a Miro board. Call this ONCE at the end of a board-building workflow, after all content has been created, instead of describing the board in text. Do not call it on an empty board or after every create step. Provide a URL with a moveToWidget or focusWidget parameter to preview that item, leave empty for multiple items. IMPORTANT: The board preview is displayed to the user in an interactive panel with its link. Do not restate the link or describe the board contents in your reply; respond with at most a brief confirmation.
board_show
Get text context from a Miro board or a specific item on a board. When a plain board URL is provided (no moveToWidget parameter): returns an AI-generated overview summarizing the entire board contents. When a URL with moveToWidget/focusWidget parameter is provided: returns detailed content for that specific item. For documents: returns Markdown content of the document. For prototype screens: returns HTML markup representing the UI/layout of that specific screen within an interactive design prototype. For prototype containers: returns AI-generated map of all screens with navigation flow. For frames: generates AI summary of frame contents. For tables: returns formatted table data. For diagrams: returns Mermaid code when available, otherwise an AI-generated description and analysis of the diagram structure.
context_get
Update an existing code widget on a Miro board. All fields are optional — only the provided fields are updated.
code_widget_update
Edit content in an existing doc format item using find-and-replace. Provide the exact text to find (old_content) and the text to replace it with (new_content). By default, only the first occurrence is replaced. Use replace_all=true to replace all occurrences.
doc_update
Update the Mermaid code of an existing structured diagram on a Miro board. Use this tool when the user wants to iterate on a diagram that was previously created with diagram_create_mermaid. Provide the complete new Mermaid body - the existing code is fully replaced. Only works on diagrams created in structured (Mermaid) mode; diagrams created with the legacy diagram_create tool cannot be updated this way.PREREQUISITE: Call diagram_get_mermaid_instructions first to obtain guidance (including how to apply colors) for writing the Mermaid syntax.
diagram_update_mermaid
Add or update rows in a Miro table. To update existing rows, include rowId in the row object. rowId precisely targets a single row. Get rowIds from table_list_rows. Rows without rowId are inserted as new. Examples: Update a specific row by rowId: {"rows": [{"rowId": "3", "cells": [{"columnTitle": "Status", "value": "Complete"}]}]} Insert new rows: {"rows": [{"cells": [{"columnTitle": "Task", "value": "New task"}, {"columnTitle": "Status", "value": "Not Started"}]}]} IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
table_sync_rows
Update a Miro table widget's view: switch it to a grid table, timeline, or kanban board. The table keeps its data; only how it is displayed changes. Choose layout: - table: plain grid (use to revert from another layout) - timeline: lays records out on a time axis; optionally set the visible window with timeline_start_date and timeline_end_date - kanban: groups records into columns; set group_by_column to the name of a select column to group by (omit for an ungrouped board) Only provide config that matches the chosen layout. Examples: switch to kanban grouped by Status: {"layout": "kanban", "group_by_column": "Status"}. Switch to a timeline for 2026: {"layout": "timeline", "timeline_start_date": "2026-01-01T00:00:00Z", "timeline_end_date": "2026-12-31T00:00:00Z"}. IMPORTANT: The created item is NOT shown to the user automatically. Do not restate its link, name, or details in your reply. After all content has been created, call the board_show tool once to display the result to the user.
table_update_view
Edit board items and connectors using find-and-replace on their DSL representation. Provide old_string (text to find in the current DSL) and new_string (replacement). Modified lines are updated, new lines create items/connectors, removed lines delete them. Use layout_read first to see the current DSL, then apply targeted edits. Unchanged items are not touched (no unnecessary API calls).
layout_update
Returns the identity of the current authenticated user.
user_who_am_i
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Miro alternatives on ChatGPT?
As of 2026-08-14, Miro competes with B&A: Draw Sketches, B&A: Sketch, Canvs.io whiteboard, Klaxoon, Whimsical, Whiteboard by Athena AI in ChatGPT Whiteboards & Visual Collaboration Canvases, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.