VX Agents

OpenAPI Marketplace · Productivity & Project Management

Miro Boards

v1.0.0 · 12 endpoints · 0 connections · shared by vx.ai

Let an agent work on Miro whiteboards: list and open boards, read the items on a board, create new boards, and add or edit sticky notes and cards to capture ideas, action items and workshop output. Curated from Miro's official OpenAPI specification.

Connect this API to an AI agent Browse all specs

What you can do with Miro Boards via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /v1/oauth-token getAccessTokenInfo Check which user and team the connected Miro token belongs to
GET /v2/boards listBoards List or search boards the user can access
POST /v2/boards createBoard Create a new board
GET /v2/boards/{board_id} getBoard Get a board's details
GET /v2/boards/{board_id}/items listBoardItems List items on a board (sticky notes, cards, shapes, text, frames)
GET /v2/boards/{board_id}/items/{item_id} getBoardItem Get one item on a board
POST /v2/boards/{board_id}/sticky_notes createStickyNote Add a sticky note to a board
GET /v2/boards/{board_id}/sticky_notes/{item_id} getStickyNote Get a sticky note
PATCH /v2/boards/{board_id}/sticky_notes/{item_id} updateStickyNote Edit a sticky note's text, color or position
POST /v2/boards/{board_id}/cards createCard Add a card (task-style item with title, description, due date) to a board
GET /v2/boards/{board_id}/cards/{item_id} getCard Get a card
PATCH /v2/boards/{board_id}/cards/{item_id} updateCard Edit a card's title, description, due date or assignee

Authentication

oAuth2AuthCode

OAuth 2.0

Scopes: boards:read boards:write

Miro REST API v2 uses an OAuth 2.0 access token sent as Authorization: Bearer <token>.

How to get a credential

  1. Go to https://miro.com/app/settings/user-profile/apps and click Create new app (choose the team the app belongs to).
  2. Under Permissions, tick boards:read and boards:write.
  3. Add the VX Agents OAuth redirect URL, or click Install app and get OAuth token to get a token for your own team.
  4. Copy the access token (or the client id/secret for the OAuth flow). Expiring tokens are refreshed with the refresh token.

Permissions used

Scope Operations
boards:read getAccessTokenInfo, listBoards, getBoard, listBoardItems, getBoardItem, getStickyNote, getCard
boards:write createBoard, createStickyNote, updateStickyNote, createCard, updateCard

Common errors

  • 401 Unauthorized: token missing, revoked or expired. Reinstall the app or refresh the token.
  • 403 Forbidden: the app lacks boards:write, or the token's user has no edit access to that board (ask the board owner to share it).
  • 400 Bad Request: invalid body, e.g. an unknown sticky-note shape/fillColor or a position outside the frame.
  • 429 Too Many Requests: Miro's credit-based rate limit was hit; wait and retry with backoff.

Store the token as a VX Agents credential (OAuth2 / bearer token) and attach it to the agent; never paste it into chat.

Usage guide

Setup

  • Connect a Miro OAuth token with boards:read and boards:write (see the authentication section).
  • Optional preset: pin board_id when the agent always works on one board (for example a team retro board). The id is the part after /board/ in the board URL, e.g. uXjVK123abc=.
  • Call getAccessTokenInfo once to confirm which user and team the token belongs to.

Capture ideas on a board

  1. Find the board: listBoards with query (name search) and sort=last_opened, or use the preset board_id.
  2. Read what is already there: listBoardItems with type=sticky_note or type=card, limit up to 50; follow cursor from the response for the next page.
  3. Open a single item when needed: getBoardItem, getStickyNote or getCard.
  4. Show the user what you plan to add, then write:
    • createStickyNote with data.content (plain text or simple HTML), style.fillColor (e.g. light_yellow), and position.x / position.y.
    • createCard for action items: data.title, data.description, data.dueDate, data.assigneeId.
  5. Fix wording or move items with updateStickyNote / updateCard (send only the fields that change).
  6. Start a fresh workspace with createBoard (name, description) only when the user asks for a new board.

Good to know

  • Positions are in board units relative to the board centre (0,0). Space new notes about 250 units apart so they do not overlap; read existing items first to find free space.
  • Item ids are strings; always pass the board_id the item belongs to.
  • dueDate uses ISO 8601 UTC, e.g. 2026-10-20T17:00:00Z.
  • There is no delete in this spec: to remove content, ask the user to do it in Miro.
  • Confirm with the user before creating boards or adding many items to a shared board; other people see changes live.
  • Rate limits are credit-based; batch your reads and avoid polling.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “Miro Boards” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs