Install
openclaw skills install @stanestane/miro-managementManage Miro through the Miro REST API using OAuth 2.0, saved token files, or direct access tokens. Use when the user wants to connect a personal or local Miro integration, complete OAuth authorization, refresh tokens, list boards, inspect board items or members, create or delete common board content such as sticky notes, text, shapes, cards, and connectors, manage webhooks, export board data, preview write payloads safely, or send raw REST API calls in a reusable local workflow.
openclaw skills install @stanestane/miro-managementUse this skill to work with Miro through the REST API.
http://127.0.0.1:4000/auth/miro/callback.scripts/miro_api.py for OAuth, token refresh, board/item operations, exports, and raw API calls.auth-urlserve-oauth-callbacklist-boardslist-board-itemsUse shell environment variables when possible:
$env:MIRO_CLIENT_ID = '...'
$env:MIRO_CLIENT_SECRET = '...'
$env:MIRO_REDIRECT_URI = 'http://127.0.0.1:4000/auth/miro/callback'
Start the callback helper:
python scripts/miro_api.py serve-oauth-callback --port 4000 --token-file .miro/tokens.json
Then generate the authorization URL:
python scripts/miro_api.py auth-url
Open that URL, approve the app, and let the callback helper store the token payload.
If the user already has a working Miro access token, skip OAuth and use either:
$env:MIRO_ACCESS_TOKEN = '...'
python scripts/miro_api.py list-boards
or a saved token file:
python scripts/miro_api.py list-boards --token-file .miro/tokens.json
Use a cheap check first:
python scripts/miro_api.py list-boards --token-file .miro/tokens.json
python scripts/miro_api.py get-board --board-id <id> --token-file .miro/tokens.json
python scripts/miro_api.py list-board-items --board-id <id> --token-file .miro/tokens.json
python scripts/miro_api.py create-sticky-note --board-id <id> "Hello from OpenClaw" --token-file .miro/tokens.json
python scripts/miro_api.py create-text --board-id <id> "Roadmap" --token-file .miro/tokens.json
python scripts/miro_api.py create-shape --board-id <id> "API Layer" --token-file .miro/tokens.json
python scripts/miro_api.py create-card --board-id <id> "Task" --token-file .miro/tokens.json
python scripts/miro_api.py export-board-items --board-id <id> --format markdown --output-file board-report.md --token-file .miro/tokens.json
python scripts/miro_api.py refresh-token --token-file .miro/tokens.json
auth-url — print the OAuth authorization URLserve-oauth-callback — run a local callback server and exchange the returned code for tokensexchange-code — manually exchange a copied authorization code for tokensrefresh-token — refresh access using the stored refresh tokenwhoami — test token with a lightweight boards calllist-boards — list accessible boardsget-board — get board detailscreate-board — create a boardlist-board-items — list board itemsexport-board-items — export board items to markdown, csv, or jsoncreate-sticky-note — create a sticky notecreate-text — create a text itemcreate-shape — create a shape itemcreate-card / update-card — create or update a card itemcreate-sticky-note / update-sticky-note — create or update sticky notescreate-text / update-text — create or update text itemscreate-shape / update-shape — create or update shapescreate-connector — connect two board itemslist-board-members — list board membersget-webhooks / create-webhook / delete-webhook — manage webhookscreate-brainstorm-cluster — drop a row of idea sticky notescreate-kanban-row — create a lightweight kanban-style rowcreate-architecture-chain — create connected architecture boxesdelete-item — delete an item by type path + item idpreview-write — preview a write request without sending itraw — send an arbitrary Miro API request with optional JSON bodyFor write calls:
Read references/miro-oauth-notes.md for the Miro OAuth flow, token endpoint, redirect URI rules, and safe local storage guidance.
Read references/miro-request-examples.md for starter create/export commands and raw request examples.