{"openapi":"3.1.0","info":{"title":"Miro (BYOK) API","version":"0.1.0","description":"Miro (BYOK) lets an AI assistant read your own Miro data through the Miro API with a key you supply (Miro access token). Read-only: 9 tools (get_token_context, list_boards, get_board, list_board_items, get_board_item, list_board_members, list_board_tags, list_board_connectors, list_board_groups). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-miro.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-miro/docs"},"termsOfService":"https://connectorbay.com/byok-miro/terms"},"servers":[{"url":"https://byok-miro.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-miro/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_token_context":{"post":{"operationId":"get_token_context","summary":"Show what the Miro access token belongs to: user, team, organization and granted scopes. Use for \"Which Miro user and te","description":"Show what the Miro access token belongs to: user, team, organization and granted scopes. Use for \"Which Miro user and team is my token for, and what scopes does it have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_token_contextArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_boards":{"post":{"operationId":"list_boards","summary":"List Miro boards the token's user can access, optionally filtered by team, project (space), owner or a name search. Use ","description":"List Miro boards the token's user can access, optionally filtered by team, project (space), owner or a name search. Use for \"Which Miro boards do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only boards of this team ID (then query and owner are ignored by Miro).","title":"Team Id"},"project_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only boards in this project (space) ID.","title":"Project Id"},"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only boards whose name or description contains this text.","title":"Query"},"owner":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only boards owned by this owner ID (not the name).","title":"Owner"},"sort":{"anyOf":[{"enum":["default","last_modified","last_opened","last_created","alphabetically"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: default, last_modified, last_opened, last_created or alphabetically (only with team_id or project_id).","title":"Sort"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many boards to return (1 to 50).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based offset of the first result, for paging.","title":"Offset"}},"title":"list_boardsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_board":{"post":{"operationId":"get_board","summary":"Get one Miro board: name, description, owner, team, sharing access and view link. Use for \"Show the details and sharing ","description":"Get one Miro board: name, description, owner, team, sharing access and view link. Use for \"Show the details and sharing settings of this Miro board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_id":{"description":"Miro board ID (from list_boards), for example 'uXjVOfjmfkE='.","maxLength":80,"title":"Board Id","type":"string"}},"required":["board_id"],"title":"get_boardArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_board_items":{"post":{"operationId":"list_board_items","summary":"List items on a Miro board (sticky notes, text, shapes, cards, frames, images, embeds) with their text and position. Cur","description":"List items on a Miro board (sticky notes, text, shapes, cards, frames, images, embeds) with their text and position. Cursor paging. Use for \"What sticky notes are on this Miro board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_id":{"description":"Miro board ID (from list_boards), for example 'uXjVOfjmfkE='.","maxLength":80,"title":"Board Id","type":"string"},"type":{"anyOf":[{"enum":["text","shape","sticky_note","image","document","card","app_card","preview","frame","embed","doc_format","data_table_format"],"type":"string"},{"type":"null"}],"default":null,"description":"Only items of this type.","title":"Type"},"limit":{"anyOf":[{"maximum":50,"minimum":10,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (10 to 50).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"required":["board_id"],"title":"list_board_itemsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_board_item":{"post":{"operationId":"get_board_item","summary":"Get one item from a Miro board by item ID, with its text content, position and timestamps. Use for \"Show this item on my","description":"Get one item from a Miro board by item ID, with its text content, position and timestamps. Use for \"Show this item on my Miro board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_id":{"description":"Miro board ID (from list_boards), for example 'uXjVOfjmfkE='.","maxLength":80,"title":"Board Id","type":"string"},"item_id":{"description":"Miro item ID (from list_board_items).","maxLength":60,"title":"Item Id","type":"string"}},"required":["board_id","item_id"],"title":"get_board_itemArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_board_members":{"post":{"operationId":"list_board_members","summary":"List the members of a Miro board with their role (viewer, commenter, editor, coowner or owner). Use for \"Who has access ","description":"List the members of a Miro board with their role (viewer, commenter, editor, coowner or owner). Use for \"Who has access to this Miro board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_id":{"description":"Miro board ID (from list_boards), for example 'uXjVOfjmfkE='.","maxLength":80,"title":"Board Id","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many members to return (1 to 50).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based offset of the first result, for paging.","title":"Offset"}},"required":["board_id"],"title":"list_board_membersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_board_tags":{"post":{"operationId":"list_board_tags","summary":"List the tags defined on a Miro board with title and color. Use for \"What tags are used on this Miro board\".","description":"List the tags defined on a Miro board with title and color. Use for \"What tags are used on this Miro board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_id":{"description":"Miro board ID (from list_boards), for example 'uXjVOfjmfkE='.","maxLength":80,"title":"Board Id","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many tags to return (1 to 50).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based offset of the first result, for paging.","title":"Offset"}},"required":["board_id"],"title":"list_board_tagsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_board_connectors":{"post":{"operationId":"list_board_connectors","summary":"List the connectors (lines and arrows between items) on a Miro board with their shape and the item IDs they join. Use fo","description":"List the connectors (lines and arrows between items) on a Miro board with their shape and the item IDs they join. Use for \"How are the items connected on this Miro board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_id":{"description":"Miro board ID (from list_boards), for example 'uXjVOfjmfkE='.","maxLength":80,"title":"Board Id","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":10,"type":"integer"},{"type":"null"}],"default":10,"description":"How many connectors to return (10 to 50).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"required":["board_id"],"title":"list_board_connectorsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_board_groups":{"post":{"operationId":"list_board_groups","summary":"List the groups on a Miro board with the IDs of the items in each group. Use for \"Which items are grouped on this Miro b","description":"List the groups on a Miro board with the IDs of the items in each group. Use for \"Which items are grouped on this Miro board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_id":{"description":"Miro board ID (from list_boards), for example 'uXjVOfjmfkE='.","maxLength":80,"title":"Board Id","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":10,"type":"integer"},{"type":"null"}],"default":10,"description":"How many groups to return (10 to 50).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"required":["board_id"],"title":"list_board_groupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}