Skip to content

Application Development

Miro
API integration

Ship Application Development features without building the integration. Full Miro API access via Proxy, normalized data through Unified APIs, and 190+ MCP-ready tools for AI agents — all extensible to your exact use case.

Talk to us
Miro

Use Cases

Why integrate with Miro

Common scenarios for SaaS companies building Miro integrations for their customers.

01

Sync Miro board members into your SaaS user directory

If your platform manages teams or permissions, pulling Miro users via the Unified User Directory API lets you map board collaborators to your own user model — keeping access controls and team rosters in sync without manual data entry.

02

Auto-provision Miro boards when projects kick off

Project management and agile SaaS tools can automatically create a Miro board from a template whenever a new project, sprint, or client engagement is created, eliminating setup friction for end users who rely on visual collaboration.

03

Extract structured data from whiteboard sessions

After a brainstorming or retrospective session, your SaaS can read sticky notes and items from specific Miro frames and convert them into structured records like tasks, feature requests, or research insights — bridging the gap between freeform ideation and actionable work.

04

Embed live Miro canvases inside your product

Wiki tools, CRMs, and research platforms can embed fully interactive Miro boards on relevant records (accounts, projects, research studies), giving end users visual collaboration context without leaving your app.

05

Push structured data into Miro as visual diagrams

DevOps, architecture, and analytics SaaS products can programmatically generate shapes, connectors, and app cards on a Miro board — turning database schemas, org charts, or infrastructure topologies into collaborative visual artifacts.

What You Can Build

Ship these features with Truto + Miro

Concrete product features your team can ship faster by leveraging Truto’s Miro integration instead of building from scratch.

01

Board member to user directory sync

Use Truto's Unified User Directory API to pull Miro users and map board collaborators to your platform's internal user model for consistent identity and permissions.

02

One-click retrospective-to-tickets pipeline

Read sticky notes from a designated Miro frame after a retro session and automatically create structured action items or tickets in your platform.

03

Template-based board provisioning

Automatically spin up a pre-configured Miro board (e.g., stakeholder map, sprint board) whenever a new project or deal is created in your SaaS.

04

App Card two-way sync

Represent your platform's records as Miro App Cards on a board so users can visually organize work while changes flow back to your system.

05

Automated topology and diagram generation

Push structured data from your platform into Miro as shapes and connectors to render live architecture diagrams, org charts, or process flows.

06

Embedded Miro canvas on key records

Surface a live, interactive Miro board directly inside your product's UI on account, project, or research pages using Miro's embed capability.

SuperAI

Miro AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_miro_members

List the members of a Miro organization, with optional filters for emails, role, license, and active status. Returns: id, active, email, lastActivityAt, license, licenseAssignedAt, role, type, adminRoles. Required: org_id. Enterprise plan only; the emails filter (max 10 addresses) overrides other filters.

get_single_miro_member_by_id

Get a Miro organization member by id. Returns: id, active, email, lastActivityAt, license, licenseAssignedAt, role, type, adminRoles. Required: org_id, id.

list_all_miro_token_context

Get the context of a Miro access token, including its type, granted scopes, associated team, user, organization, and creator. Returns: type, team, createdBy, scopes, organization, user.

miro_board_items_bulk_create

Create up to 20 items on a Miro board in one transactional request (if any item fails, none are created). The body is an array of items, each with type, data, style, position, geometry and parent. Returns the created items with id, type, data, position and parent. Required: board_id, body.

create_a_miro_board_item

Attach an existing tag to a Miro board item. Returns an empty 204 response on success. Required: board_id, item_id, tag_id. Card and sticky note items can have up to 8 tags.

delete_a_miro_board_item_by_id

Delete an item from a Miro board. Returns an empty 204 response on success. Required: id, board_id, item_id.

get_single_miro_board_item_by_id

Get a specific item on a Miro board by id. Returns: ai, createdAt, createdBy, data, geometry, id, links, modifiedAt, modifiedBy, parent, position, type. Required: id, board_id, item_id.

list_all_miro_board_items

List items on a Miro board, optionally filtered by type, by parent frame (parent_item_id) or by tag (tag_id). Returns items with id, type, data, style, position, geometry and parent. Required: board_id.

update_a_miro_board_item_by_id

Update the position or parent of an item on a Miro board. Returns the updated item with id, type, position, parent, data, geometry, createdAt, and modifiedAt. Required: id, board_id, item_id.

delete_a_miro_board_items_board_by_id

Delete an item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_items_board_by_id

Get a specific item on a Miro board by id. Returns the item record including id, type, position, geometry, parent, links, created/modified timestamps and users, and the item's data payload (content, shape, nodeView, isRoot, direction). Required: id, board_id.

list_all_miro_board_items_boards

List items on a Miro board. Returns each item with: id, type, data, position, geometry, parent, links, createdAt, modifiedAt. Required: board_id.

list_all_miro_board_items_tags

List all tags attached to a specific item on a Miro board. Returns the tags on the item, each including its id. Required: board_id, item_id.

create_a_miro_board_mindmap_node

Create a mind map node on a Miro board, either as a root node or as a child of an existing node. Returns the created node with id, data, parent, style, and createdAt/modifiedAt audit fields. Required: board_id, data. Nodes without a position default to x=0, y=0.

delete_a_miro_board_mindmap_node_by_id

Delete a Miro mind map node and its child nodes from the board. Returns an empty 204 response on success. Required: id, board_id, item_id.

get_single_miro_board_mindmap_node_by_id

Get a specific mind map node on a Miro board by id. Returns the node's id, data, parent, style, and createdAt/modifiedAt audit fields. Required: id, board_id, item_id.

list_all_miro_board_mindmap_nodes

List the mind map nodes of a Miro board. Returns a paginated collection of nodes, each with id, data, parent, style, and createdAt/modifiedAt audit fields. Required: board_id.

create_a_miro_board_shape

Create a flowchart shape item on a Miro board. Returns the created shape including its id, type, data, style, position, geometry, and createdAt. Required: board_id.

delete_a_miro_board_shape_by_id

Delete a flowchart shape item from a Miro board. Returns an empty 204 response on success. Required: id, board_id, item_id.

get_single_miro_board_shape_by_id

Get a shape item on a Miro board by id. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

miro_board_shapes_partial_update

Update a flowchart shape item on a Miro board based on the data and style properties provided. Returns the updated shape including id, type, data, style, position, and modifiedAt. Required: board_id, shape_id.

update_a_miro_board_shape_by_id

Update a shape item on a Miro board by id, applying the data and style properties provided. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

create_a_miro_board_shapes_board

Create a shape item on a Miro board. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: board_id.

delete_a_miro_board_shapes_board_by_id

Delete a flowchart shape item from a Miro board (experimental v2 endpoint). Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_shapes_board_by_id

Get a single shape item from a Miro board by id. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id.

create_a_miro_board_code_widget

Create a code widget item on a Miro board. Returns the created item including id, type, data, position, geometry, and createdAt. Required: board_id.

delete_a_miro_board_code_widget_by_id

Delete a code widget item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_code_widget_by_id

Get a single code widget item by id on a Miro board. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, links, type. Required: id, board_id.

list_all_miro_board_code_widgets

List code widget items on a Miro board. Returns each item's id, type, data, position, geometry, createdAt, createdBy, and modifiedAt. Required: board_id.

update_a_miro_board_code_widget_by_id

Update a code widget item on a Miro board based on the data properties provided in the request body. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, links, type. Required: id, board_id.

miro_code_widget_positions_bulk_update

Move a code widget item to a new position on a Miro board. Returns the updated code widget item including its id, type, position, geometry, and modifiedAt timestamp. Required: board_id, item_id.

create_a_miro_oauth_revokes_revoke

Revoke the current Miro access token via the v2 endpoint. Revoking invalidates both the access token and its associated refresh token, but does not uninstall the application for the user. Returns an empty 204 response on success. Required: accessToken, clientId, clientSecret.

create_a_miro_oauth_token

Exchange the authorization code from your redirect URI for a Miro access token and refresh token. Returns: user_id, expires_in, team_id, access_token, scope, refresh_token, token_type. Required: grant_type, client_id, client_secret, code, redirect_uri. redirect_uri must match the original redirect URI used in the authorization request.

list_all_miro_oembeds

Get oEmbed data to embed a Miro board as a live embed. Returns: html, title, author, version, type, thumbnail_url, thumbnail_width, thumbnail_height, width, height, provider_name, provider_url. Required: url.

get_single_miro_org_by_id

Get a Miro organization by id. Returns: id, fullLicensesPurchased, name, plan, type. Required: id. Available on the Enterprise plan only.

create_a_miro_org_team

Create a team in a Miro organization. Returns the created team object including its id, name, picture, and type. Required: org_id, name.

get_single_miro_org_team_by_id

Get a single team by id in a Miro organization. Returns: id, name, picture, type. Required: org_id, id.

list_all_miro_org_teams

List teams in a Miro organization, with optional case-insensitive partial-match filtering by name. Returns: id, name, picture, type. Required: org_id.

miro_org_teams_attach_member

Invite a Miro user to an existing team as a member; the user must already exist in your Miro organization. Returns: id, role, createdAt, createdBy, modifiedAt, modifiedBy, team_id, type. Required: org_id, team_id, email.

delete_a_miro_org_team_by_id

Delete a Miro team from an organization by id. Returns an empty 204 response on success. Required: id, org_id. Available only on the Enterprise plan.

miro_org_teams_list_members

List members of a Miro team, retrieved by cursor. Returns: id, role, createdAt, createdBy, modifiedAt, modifiedBy, team_id, type. Required: org_id, team_id. Max 100 members per page; available on Enterprise plans only.

update_a_miro_org_team_by_id

Update an existing Miro team by id. Returns the updated team object: id, name, picture, type. Required: id, org_id.

miro_team_projects_attach_member

Add a Miro user to a project as a member. Returns: id, email, role, type. Required: org_id, team_id, project_id, email, role. Enterprise plans only.

create_a_miro_team_project

Create a new project (also called a Space) in a Miro team of an organization. Returns: id, name, type. Required: org_id, team_id, name. Enterprise plans only.

delete_a_miro_team_project_by_id

Delete a Miro project (also called a space) from a team by id. After deletion, all boards and users that belong to the project remain in the team. Returns an empty 204 response on success. Required: id, org_id, team_id.

get_single_miro_team_project_by_id

Get a single Miro project (Space) by id, including its name. Returns: id, name, type. Enterprise plans only. Required: id, org_id, team_id.

list_all_miro_team_projects

List the projects (Spaces) in a team of a Miro organization. Returns: id, name, type. Required: org_id, team_id. Max 100 per page. Enterprise plans only.

miro_team_projects_list_members

List members of a Miro project (space). Returns: id, email, role, type. Required: org_id, team_id, project_id. Max 100 per page.

update_a_miro_team_project_by_id

Update a Miro project (space), such as its name. Returns: id, name, type. Required: id, org_id, team_id, name.

delete_a_miro_project_member_by_id

Remove a member from a Miro project (Spaces); the user remains in the team even after being removed from the project. Returns an empty 204 response on success. Enterprise plan only. Required: id, org_id, team_id, project_id.

get_single_miro_project_member_by_id

Get a specific project member in Miro, including the member's role. Returns: id, email, role, type. Enterprise plan only. Required: id, org_id, team_id, project_id.

update_a_miro_project_member_by_id

Update a project member's details, such as their role, in Miro. Returns: id, email, role, type. Enterprise plan only. Required: id, org_id, team_id, project_id.

miro_project_settings_bulk_update

Update the sharing policy settings of a Miro project. Accepts a sharingPolicySettings object in the body. Returns: sharingPolicySettings, type. Required: org_id, team_id, project_id.

list_all_miro_project_settings

Get the project settings for a Miro project (Space). The response defines the sharing policies for the boards within the project: a sharingPolicySettings object whose teamAccess policy is private (only project members can access) or view (anyone in the team can view), plus type. Required: org_id, team_id, project_id.

list_all_miro_app_metrics

List usage metrics for a specific Miro app over a given date range, grouped by day, week, or month. Returns: periodStart, uniqueUsers, uniqueRecurringUsers, uniqueOrganizations, installations, uninstallations. Required: app_id, startDate, endDate.

get_single_miro_app_metrics_total_by_id

Get total usage metrics for a specific Miro app since the app was created. Returns: uniqueUsers, uniqueRecurringUsers, uniqueOrganizations, installations, uninstallations. Required: id.

create_a_miro_oauth_revoke

Revoke a Miro access token, invalidating it and its associated refresh token. Returns an empty 204 response on success. Required: access_token. Deprecated in favor of the v2 revoke endpoint.

create_a_miro_board_app_card

Create a new app card item on a Miro board. Returns the created app card including id, type, data, style, position, and timestamps. Required: board_id.

delete_a_miro_board_app_card_by_id

Delete an app card item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_app_card_by_id

Get a specific app card item on a Miro board by id. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id.

update_a_miro_board_app_card_by_id

Update an app card item on a Miro board with the provided data and style properties. Returns the updated app card including id, type, data, style, and position. Required: id, board_id.

create_a_miro_board_card

Create a new card item on a Miro board. Returns the created card with id, type, data, style, position, geometry, createdAt, and modifiedAt. Required: board_id.

delete_a_miro_board_card_by_id

Delete a card item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_card_by_id

Get a specific card item on a Miro board by id. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

update_a_miro_board_card_by_id

Update a card item on a Miro board by id based on the data and style properties provided in the request body. Returns the updated card with id, type, data, style, position, and modifiedAt. Required: id, board_id, item_id.

create_a_miro_board_connector

Create a connector on a Miro board linking two items. Returns the created connector including id, type, startItem, endItem, shape, style, captions, links, and createdAt. Required: board_id, startItem, endItem.

delete_a_miro_board_connector_by_id

Delete a connector from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_connector_by_id

Get a specific connector on a Miro board by id. Returns: captions, createdAt, createdBy, endItem, id, isSupported, links, modifiedAt, modifiedBy, shape, startItem, style, type. Required: id, board_id.

list_all_miro_board_connectors

List connectors on a Miro board. Returns each connector with id, type, startItem, endItem, shape, style, captions, links, and createdAt. Required: board_id.

update_a_miro_board_connector_by_id

Update a connector on a Miro board based on the data and style properties provided. Returns: captions, createdAt, createdBy, endItem, id, isSupported, links, modifiedAt, modifiedBy, shape, startItem, style, type. Required: id, board_id.

create_a_miro_board_data_classification

Update the data classification label applied to an existing Miro board. Returns the applied label's id, name, color, type, description, sharingRecommendation, and guidelineUrl. Requires org_id, team_id, board_id, and labelId. Enterprise plans only. Required: org_id, team_id, board_id.

get_single_miro_board_data_classification_by_id

Get the data classification label applied to a Miro board. Returns the label's id, name, color, type, description, sharingRecommendation, and guidelineUrl. Requires org_id, team_id, and id. Enterprise plans only. Required: id, org_id, team_id.

create_a_miro_board_doc

Create a doc format item on a Miro board. Returns the created doc item with id, type, data (contentType, content), position, createdAt, and modifiedAt. Required: board_id, data (with contentType and content).

delete_a_miro_board_doc_by_id

Delete a doc format item from a Miro board by id. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_doc_by_id

Get a specific doc format item from a Miro board by id. Returns: id, data, position, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id.

create_a_miro_board_document

Create a document item on a Miro board by uploading a file from your device. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: board_id, resource. Max file size 6 MB.

delete_a_miro_board_document_by_id

Delete a document item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_document_by_id

Get a specific document item on a Miro board by id. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

update_a_miro_board_document_by_id

Update a document item on a Miro board by uploading a replacement file from your device. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Max file size 6 MB. Required: id, board_id, item_id.

create_a_miro_board_embed

Create an embed item containing external content on a Miro board. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: board_id, data.

get_single_miro_board_embed_by_id

Get a single embed item on a Miro board by id. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

update_a_miro_board_embed_by_id

Update an embed item on a Miro board based on the provided data properties. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

delete_a_miro_board_embed_by_id

Delete an embed item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

miro_boards_attach_member

Share a Miro board and invite new members to collaborate by sending an invitation email. Returns: failed, successful. Required: board_id, emails.

miro_boards_attach_tag

Create a tag on a Miro board. Returns: id, title, fillColor, links, type. Required: board_id, title, fillColor.

miro_boards_bulk_update

Create a copy of an existing Miro board, optionally updating the new board's name, description, sharing policy, and permissions policy in the same request. Returns: id, name, description, team, organization, picture, policy, viewLink, owner, currentUserMembership, createdAt, createdBy, modifiedAt, modifiedBy, links, type. Required: copy_from.

create_a_miro_board

Create a Miro board with the specified name and sharing policies. Returns: id, name, description, team, organization, project, picture, policy, viewLink, owner, currentUserMembership, createdAt, createdBy, modifiedAt, modifiedBy, links, type. Free plans allow up to 3 team boards.

delete_a_miro_board_by_id

Delete a Miro board by id. Deleted boards move to Trash on paid plans and can be restored via the UI within 90 days. Returns an empty 204 response on success. Required: id.

get_single_miro_board_by_id

Get a specific Miro board by id. Returns: id, name, description, team, organization, project, picture, policy, viewLink, owner, currentUserMembership, createdAt, createdBy, lastOpenedAt, lastOpenedBy, modifiedAt, modifiedBy, links, type. Required: id.

list_all_miro_boards

List Miro boards accessible to the user. Returns: createdAt, createdBy, currentUserMembership, description, id, lastOpenedAt, lastOpenedBy, modifiedAt, modifiedBy, name, owner, picture, policy, team, project, type, viewLink. Filter by team_id, project_id, owner, or query; max 50 per page, with a 10,000-board cap when searching by query.

miro_boards_list_tags

List all tags on a Miro board. Returns: id, title, fillColor, type. Required: board_id.

update_a_miro_board_by_id

Update a Miro board by id. Set fields such as name, description, policy, teamId, or projectId. Returns: id, name, description, team, organization, project, picture, policy, viewLink, owner, currentUserMembership, createdAt, createdBy, modifiedAt, modifiedBy, links, type. Required: id. Large updates may be processed asynchronously.

list_all_miro_boards_members

List all members of a Miro board. Returns each member's id, name, role, and type. Required: board_id.

get_single_miro_org_data_classification_setting_by_id

Get the board data classification settings for a Miro organization. Returns: enabled, labels, type. Required: id (the organization id). Available on Enterprise plans only.

list_all_miro_org_default_teams_settings

Get the default team settings for a Miro organization. Returns: organizationId, teamAccountDiscoverySettings, teamCollaborationSettings, teamCopyAccessLevelSettings, teamId, teamInvitationSettings, teamSharingPolicySettings, type. Required: org_id. Enterprise plans only.

create_a_miro_sessions_reset_all

Reset all active Miro sessions for a user across all devices, requiring the user to sign in again. Returns an empty response on success. Required: email.

miro_team_data_classification_settings_bulk_update

Update the data classification settings for a team in Miro. Returns: defaultLabelId, enabled, type. Required: org_id, team_id. Enterprise plans only.

get_single_miro_team_data_classification_setting_by_id

Get the data classification settings for a team in Miro. Returns: defaultLabelId, enabled, type. Required: id (the team id), org_id.

miro_team_data_classifications_bulk_update

Bulk update the data classification of a Miro team's boards. Returns: numberUpdatedBoards, type. Required: org_id, team_id.

delete_a_miro_team_member_by_id

Delete a team member from a Miro team by id. Returns an empty 204 response on success. Required: org_id, team_id, id.

get_single_miro_team_member_by_id

Get a Miro team member by id. Returns: id, role, createdAt, createdBy, modifiedAt, modifiedBy, team_id, type. Required: id, org_id, team_id. Enterprise plan only.

update_a_miro_team_member_by_id

Update a team member's role in a Miro team by id. Returns: id, role, createdAt, createdBy, modifiedAt, modifiedBy, team_id, type. Required: id, org_id, team_id. Enterprise plan only.

miro_team_settings_bulk_update

Update the settings of a team in a Miro organization. Returns: organizationId, teamAccountDiscoverySettings, teamCollaborationSettings, teamCopyAccessLevelSettings, team_id, teamInvitationSettings, teamSharingPolicySettings, type. Required: org_id, team_id.

list_all_miro_team_settings

Get the settings of an existing team in a Miro organization. Returns: organizationId, teamAccountDiscoverySettings, teamCollaborationSettings, teamCopyAccessLevelSettings, team_id, teamInvitationSettings, teamSharingPolicySettings, type. Required: org_id, team_id.

create_a_miro_board_frame

Create a frame on a Miro board. Returns the created frame with its id, type, style, position, geometry, and creation/modification timestamps. Required: board_id, data.

delete_a_miro_board_frame_by_id

Delete a frame from a Miro board by id, permanently removing it from the specified board. Returns an empty 204 response on success. Required: id, board_id, item_id.

get_single_miro_board_frame_by_id

Get a single frame on a Miro board by id. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, links, type. Required: id, board_id, item_id.

update_a_miro_board_frame_by_id

Update a frame's data, style, position, or geometry on a Miro board. Returns the updated frame with its id, type, style, position, and geometry. Required: id, board_id, item_id.

miro_board_groups_bulk_delete

Delete a group from a Miro board along with all items in the group, including items that are locked. Returns an empty 204 response on success. Required: board_id, group_id, delete_items.

create_a_miro_board_group

Create a group of items on a Miro board with the items passed in the request body. Returns: id, type, data, links. Required: board_id.

delete_a_miro_board_group_by_id

Ungroup the items of a group on a Miro board, leaving the items on the board. Returns an empty 204 response on success. Required: id, board_id, group_id.

get_single_miro_board_group_by_id

Get a Miro group by its id on a board. Returns the group with its id and type. Required: id, board_id, group_id.

list_all_miro_board_groups

List all groups on a Miro board together with their respective items. Returns: id, type, data, links. Required: board_id. Max 50 per page.

update_a_miro_board_group_by_id

Update a Miro board group with new items. Returns: id, type, data, links. The existing group is fully replaced and a new id is assigned on success. Required: id, board_id, group_id.

create_a_miro_board_groups_board

Assign user groups to a Miro board. Returns the created assignment with id, role, and type. Required: org_id, board_id, userGroupIds, role.

delete_a_miro_board_groups_board_by_id

Remove a user group's access from a specific Miro board. Enterprise plan only. Returns an empty 204 response on success. Required: org_id, board_id, id.

list_all_miro_board_groups_boards

List user group assignments for a Miro board. Returns each assignment with id, role, and type. Required: org_id, board_id.

create_a_miro_board_image

Create an image item on a Miro board by uploading a file from the device. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: board_id, resource.

delete_a_miro_board_image_by_id

Delete an image item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_image_by_id

Get a specific image item on a Miro board by id. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

update_a_miro_board_image_by_id

Update an image item on a Miro board using a file from the device. Returns: id, data, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

delete_a_miro_board_member_by_id

Remove a board member from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_member_by_id

Get a specific board member on a Miro board by id. Returns: id, name, role, links, type. Required: id, board_id.

update_a_miro_board_member_by_id

Update the role of a board member on a Miro board by id. Returns the updated member with id, name, role, type, and links. Required: id, board_id.

create_a_miro_board_sticky_note

Create a sticky note item on a Miro board. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: board_id.

delete_a_miro_board_sticky_note_by_id

Delete a sticky note item from a Miro board by id. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_sticky_note_by_id

Get a sticky note item on a Miro board by id. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

update_a_miro_board_sticky_note_by_id

Update a sticky note item on a Miro board based on the data and style properties provided in the request body. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

delete_a_miro_board_tag_by_id

Delete a tag from a Miro board; the tag is also removed from all cards and sticky notes on the board, and the change appears after the board is refreshed. Returns an empty 204 response on success. Required: id, board_id, tag_id.

get_single_miro_board_tag_by_id

Get a specific tag on a Miro board by id. Returns: id, title, fillColor, links, type. Required: id, board_id.

update_a_miro_board_tag_by_id

Update a Miro board tag by id based on the data properties provided. Returns: id, title, fillColor, links, type. Note that REST API tag updates are not reflected on the board in realtime; refresh the board to see them. Required: id, board_id.

create_a_miro_board_text

Create a text item on a Miro board. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: board_id, data, data.content.

delete_a_miro_board_text_by_id

Delete a text item from a Miro board. Returns an empty 204 response on success. Required: id, board_id.

get_single_miro_board_text_by_id

Get a specific text item on a Miro board by id. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

update_a_miro_board_text_by_id

Update a text item on a Miro board with the provided data, style, position, geometry, or parent values. Returns: id, data, style, position, geometry, createdAt, createdBy, modifiedAt, modifiedBy, parent, links, type. Required: id, board_id, item_id.

list_all_miro_export_jobs

List board export jobs in a Miro organization, optionally filtered by status and creator. Returns: id, name, boardFormat, status, createdAt, modifiedAt, tasksCount, creator. Required: org_id. Max 500 per page. Enterprise plan only.

create_a_miro_export_job

Create a board export job for one or more Miro boards. Returns: jobId. Export runs asynchronously; poll the job status. Enterprise plan only. Required: org_id, request_id.

get_single_miro_export_job_by_id

Get the status of a Miro board export job by id. Returns the job's status field — one of JOB_STATUS_CREATED, JOB_STATUS_IN_PROGRESS, JOB_STATUS_CANCELLED or JOB_STATUS_FINISHED. Enterprise plan only. Required: id, org_id, job_id.

list_all_miro_groups_items

List Miro items that are part of any group on a specific board. Returns: id, type, data. Required: board_id, group_item_id. Max 50 per page.

list_all_miro_service_provider_configs

Get the SCIM Service Provider configuration in Miro, describing which SCIM operations and capabilities are supported. Returns: schemas, documentationUri, patch, bulk, filter, changePassword, sort, etag, authenticationSchemes.

list_all_miro_schemas

List Miro SCIM schemas, retrieving metadata about the Users and Groups resources and their supported extension attributes. Returns: schemas, id, name, description, attributes, meta.

list_all_miro_schemas_scim

Get a SCIM schema definition in Miro by its uri. Returns: id, name, description, attributes, meta. Required: uri.

list_all_miro_resource_types

List the SCIM resource types supported by Miro. Returns each type's id, name, description, endpoint, schema, and schemaExtensions. Miro currently supports Users and Groups as resource types.

list_all_miro_resource_types_resourcetypes

Get a SCIM resource type in Miro by its resource path. Returns: schemas, id, name, description, endpoint, schema, schemaExtensions. Required: resource.

create_a_miro_user

Create a Miro user in the organization via SCIM. Returns the created user with id, userName, name, active, emails, and meta. Required: userName. Newly provisioned users are added to the default team.

delete_a_miro_user_by_id

Delete a Miro user by id. Returns an empty 204 response on success. Required: id. The last admin in a team or the organization and guest-role users cannot be deleted; after deletion, board ownership transfers to the oldest team admin.

get_single_miro_user_by_id

Get a single Miro user by id. Returns: schemas, id, meta, userName, name, displayName, userType, active, emails, photos, groups, roles, preferredLanguage, urn:ietf:params:scim:schemas:extension:enterprise:2.0:User. Required: id. Only returns organization members — guest users are excluded.

list_all_miro_users

List Miro users in your organization. Returns users with id, userName, name, active, emails, and meta; supports SCIM filter expressions, attribute selection, and sorting. Only organization members are returned — guests are excluded.

miro_users_partial_update

Partially update a Miro user by applying SCIM patch operations. Returns the updated user with id, userName, name, active, emails, and meta. Required: user_id, schemas, Operations.

update_a_miro_user_by_id

Replace an existing Miro user via SCIM. Returns the updated user resource including id, userName, name, active, and emails. Required: id. Deactivated users' userName, userType, and roles cannot be updated; non-members and guest users cannot be updated.

create_a_miro_group

Create a Miro user group, optionally seeding an initial list of members. Returns: schemas, id, meta, displayName, members. Required: displayName. The displayName must be unique within the organization and is truncated at 60 characters.

delete_a_miro_group_by_id

Delete a Miro group (user group) by id. Removes the group and its memberships only — member users are not deleted or removed from the organization. Returns an empty 204 response on success. Required: id.

get_single_miro_group_by_id

Get a single Miro user group by id. Returns: schemas, id, meta, displayName, members. Required: id.

list_all_miro_groups

List Miro user groups in the organization, including the users that belong to each group. Returns: schemas, id, displayName, members, meta.

update_a_miro_group_by_id

Patch a Miro user group by id to add, remove, or replace members or update its displayName via SCIM operations. Returns: schemas, id, meta, displayName, members. Required: id.

list_all_miro_audit_logs

List audit log events within your organization's configured retention period in Miro. Returns: id, context, object, createdAt, details, createdBy, event, category. Filter arrays accept up to 50 values each. Required: createdAfter, createdBefore.

create_a_miro_org_case

Create a new eDiscovery case in a Miro organization to group legal holds under one case. Returns the created case object including its id and case attributes. Required: org_id, name.

delete_a_miro_org_case_by_id

Close an eDiscovery case in a Miro organization; closing permanently deletes the case and requires all legal holds within the case to be closed first. Returns an empty 204 response on success. Required: id, org_id.

get_single_miro_org_case_by_id

Get a Miro eDiscovery case by id. Returns: id, organizationId, name, description, createdBy, lastModifiedBy, createdAt, lastModifiedAt. Enterprise Guard plans only. Required: id, org_id.

list_all_miro_org_cases

List Miro eDiscovery cases in an organization. Returns: id, organizationId, name, description, createdBy, lastModifiedBy, createdAt, lastModifiedAt. Required: org_id. Enterprise Guard plans only.

update_a_miro_org_case_by_id

Update a Miro eDiscovery case's name or description. Returns: id, organizationId, name, description, createdBy, lastModifiedBy, createdAt, lastModifiedAt. Enterprise Guard plans only. Required: id, org_id, name.

create_a_miro_case_legal_hold

Create a legal hold in a Miro case to preserve the relevant users' boards and content from permanent deletion. Returns the created legal hold record (id plus upstream-defined hold attributes). Newly created holds can take up to 24 hours to process. Requires a LegalHoldRequest JSON body;. Required: org_id, case_id, name, scope.

delete_a_miro_case_legal_hold_by_id

Close (permanently delete) a legal hold in a Miro case, releasing its held boards and custodians; released content items can take up to 24 hours to become available again. Returns an empty 204 response on success. Required: id, org_id, case_id. Enterprise plans only.

get_single_miro_case_legal_hold_by_id

Get a single Miro legal hold within a case for an organization. Returns: id, organizationId, case_id, name, description, state, scope, createdBy, lastModifiedBy, createdAt, lastModifiedAt. Required: id, org_id, case_id, legal_hold_id.

list_all_miro_case_legal_holds

List all legal holds within a Miro case. Returns legal hold objects with: id, name, description, state, scope, createdBy, createdAt, lastModifiedAt. Required: org_id, case_id.

update_a_miro_case_legal_hold_by_id

Edit a Miro legal hold to adjust its name, description, or scope of preserved users and boards. Returns: id, organizationId, case_id, name, description, state, scope, createdBy, lastModifiedBy, createdAt, lastModifiedAt. Required: id, org_id, case_id, legal_hold_id, name, scope.

list_all_miro_case_export_jobs

List board export jobs for a case in Miro. Returns the export job objects, each with its id. Required: org_id, case_id. Enterprise plan with the Enterprise Guard add-on only.

list_all_miro_content_logs_items

List content change logs of board items in a Miro organization for a specified modified-date time window. Returns: id, contentId, actionType, actionTime, actor, itemType, itemId, state, relationships, ai. Required: org_id, from, to. Max 1000 per page.

list_all_miro_org_ai_interaction_logs

List AI interaction logs (Beta) for a Miro organization. Returns each event with id, createdAt, actor, session, and eventType, plus model or tool details. The from-to range must cover at most 1 month. Required: org_id, from, to

list_all_miro_job_results

Get the results of a Miro board export job, including the S3 links to the exported files. Returns: job_id, results. Required: org_id, job_id. Enterprise plans only; results are available once the job status is JOB_STATUS_FINISHED.

miro_job_status_bulk_update

Update the status of a board export job in Miro. Returns: status, code, message, type. Required: org_id, job_id, status. Only the CANCELLED status is currently supported.

list_all_miro_job_tasks

List the tasks of a Miro board export job. Returns: id, status, artifactExpiredAt, sizeInBytes, errorMessage, errorType, board. Required: org_id, job_id. Enterprise plan only.

create_a_miro_task_export_link

Create a download link for the results of a board export task in Miro. Returns the download link (url). Required: org_id, job_id, task_id.

create_a_miro_org_group

Create a new user group in a Miro organization. Returns: id, name, description, type. Required: org_id, name. Enterprise plan only.

delete_a_miro_org_group_by_id

Delete a Miro user group from an organization by id. Returns an empty 204 response on success. Required: id, org_id.

get_single_miro_org_group_by_id

Get a user group in a Miro organization by id. Returns: id, name, description, type. Required: org_id and id. Enterprise plan only.

list_all_miro_org_groups

List the user groups in a Miro organization. Returns: id, name, description, type. Required: org_id. Enterprise plan only.

update_a_miro_org_group_by_id

Update a user group in a Miro organization by id. Returns: id, name, description, type. Required: org_id and id. Enterprise plan only.

miro_org_groups_attach_member

Add a member to a user group in a Miro organization. Returns: id, email, type. Required: org_id, group_id, email. Enterprise plan only.

miro_org_groups_bulk_update

Bulk edit the members of a Miro user group in an organization, adding and removing users in one request (up to 500 users at a time). Returns an array of per-operation results, each with operation (e.g. addMembers); note that adding users can succeed partially. Required: org_id, group_id.

miro_org_groups_list_members

List the members of a user group in a Miro organization. Returns: id, email, type. Required: org_id, group_id. Enterprise plan only.

delete_a_miro_group_member_by_id

Delete a member from a Miro user group in an organization. Returns an empty 204 response on success. Required: id, org_id, group_id. Enterprise plans only.

get_single_miro_group_member_by_id

Get a single user group member by id in a Miro organization. Returns: id, email, type. Required: org_id, group_id, id.

get_single_miro_group_team_by_id

Get a team that a user group is a part of in a Miro organization. Returns: id, role, type. Required: id, org_id, group_id. Enterprise plan only.

list_all_miro_group_teams

List the teams a user group is a part of in a Miro organization. Returns: id, role, type. Required: org_id, group_id. Enterprise plan only.

create_a_miro_team_group

Add a user group to a team in a Miro organization. Returns: id, role, type. Required: org_id, team_id, userGroupId, role. Enterprise plan only.

delete_a_miro_team_group_by_id

Remove a user group from a team in a Miro organization by deleting the group-to-team connection. Returns an empty 204 response on success. Required: id, org_id, team_id. Available on Miro Enterprise plans.

get_single_miro_team_group_by_id

Get a user group of a team in a Miro organization by id. Returns: id, role, type. Required: org_id, team_id, id. Enterprise plan only.

list_all_miro_team_groups

List user groups connected to a team in a Miro organization. Returns: id, role, type. Required: org_id, team_id. Enterprise plan only.

list_all_miro_project_groups

List user groups assigned to a Miro project. Returns: id, role, type. Required: org_id, project_id. Available on Enterprise plans only.

delete_a_miro_project_group_by_id

Remove a user group from a Miro Enterprise project. Returns an empty 204 response on success. Required: org_id, project_id, id. Enterprise plan only.

list_all_miro_legal_hold_content_items

List all content items under a specific legal hold in a Miro case. Returns content item records containing only contentId (for a board, the boardKey usable with the Discovery export APIs) and type. Required: org_id, case_id, legal_hold_id. Verify the legal hold is in ACTIVE state so the full set of held content is returned.

Why Truto

Why use Truto’s MCP server for Miro

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 950+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

Unified APIs

Unified APIs for Miro

Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.

Unified User Directory API

Users

The User object represents a User.

View Docs

How It Works

From zero to integrated

Start with Miro in a free sandbox, usually ready within one business day. No boilerplate, no maintenance burden.

01

Link your customer’s Miro account

Use Truto’s frontend SDK to connect your customer’s Miro account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Miro

Truto’s Proxy API is a 1-to-1 mapping of the Miro API. You call us, we call Miro, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Miro’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Miro on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

What auth method does Miro use?

Miro uses OAuth 2.0 for third-party integrations. Truto handles the full OAuth flow — token exchange, refresh, and secure storage — so your end users can connect their Miro accounts in a few clicks.

Which Unified APIs does Truto support for Miro today?

Truto currently supports Miro through the Unified User Directory API, which lets you read user data. Additional tools and Unified API coverage (boards, items, frames, connectors) can be built on request based on your use case.

Are there rate limits on the Miro API I should know about?

Yes. Miro's REST API v2 enforces rate limits that vary by plan and endpoint. Truto manages pagination and request throttling on your behalf, so you don't need to handle retry logic or backoff strategies in your own code.

Can I get real-time updates from Miro boards?

Miro supports webhooks via board subscriptions that fire on item creation, update, and deletion events. This enables real-time sync scenarios like detecting when a card is moved between frames. Webhook support through Truto can be configured on request.

What if I need access to Miro endpoints not yet covered by Truto?

Truto builds integrations on request. If you need support for specific Miro API resources — like board items, frames, connectors, or app cards — the Truto team can add them to your account's integration scope.

How does Truto handle Miro's item coordinate system?

Miro's API represents board items with X/Y positions on an infinite canvas. When Truto exposes board item data, these spatial attributes are preserved so your application can reason about item placement, grouping within frames, and spatial relationships.

Miro

Get Miro integrated into your app

Our team understands what it takes to make a Miro integration successful. A short, crisp 30 minute call with folks who understand the problem.