Miro · Capability
Miro Developer Platform — groups
Miro Developer Platform — groups. 7 operations. Lead operation: Create group. Self-contained Naftiko capability covering one Miro business surface.
What You Can Do
POST
Creategroup
— Create group
/v1/v2/boards/{board-id}/groups
GET
Getallgroups
— Get all groups on a board
/v1/v2/boards/{board-id}/groups
GET
Getitemsbygroupid
— Get items of a group by ID
/v1/v2/boards/{board-id}/groups/items
GET
Getgroupbyid
— Get a group by its ID
/v1/v2/boards/{board-id}/groups/{group-id}
DELETE
Ungroup
— Ungroup items
/v1/v2/boards/{board-id}/groups/{group-id}
PUT
Updategroup
— Updates a group with new items
/v1/v2/boards/{board-id}/groups/{group-id}
DELETE
Deletegroup
— Deletes the group
/v1/v2/boards/{board-id}/groups/group-id
MCP Tools
create-group
Create group
get-all-groups-board
Get all groups on a board
read-only
idempotent
get-items-group-id
Get items of a group by ID
read-only
idempotent
get-group-its-id
Get a group by its ID
read-only
idempotent
ungroup-items
Ungroup items
idempotent
updates-group-new-items
Updates a group with new items
idempotent
deletes-group
Deletes the group
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Miro Developer Platform — groups
description: 'Miro Developer Platform — groups. 7 operations. Lead operation: Create group. Self-contained Naftiko capability
covering one Miro business surface.'
tags:
- Miro
- groups
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
MIRO_API_KEY: MIRO_API_KEY
capability:
consumes:
- type: http
namespace: miro-groups
baseUri: https://api.miro.com
description: Miro Developer Platform — groups business capability. Self-contained, no shared references.
resources:
- name: v2-boards-board_id-groups
path: /v2/boards/{board_id}/groups
operations:
- name: creategroup
method: POST
description: Create group
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: board_id
in: path
type: string
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: getallgroups
method: GET
description: Get all groups on a board
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: board_id
in: path
type: string
description: Unique identifier (ID) of the board.
required: true
- name: limit
in: query
type: integer
description: The maximum number of items to return at one time, default is 10, maximum is 50.
- name: cursor
in: query
type: string
- name: v2-boards-board_id-groups-items
path: /v2/boards/{board_id}/groups/items
operations:
- name: getitemsbygroupid
method: GET
description: Get items of a group by ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: board_id
in: path
type: string
description: Unique identifier (ID) of the board.
required: true
- name: limit
in: query
type: integer
description: The maximum number of items to return at one time, default is 10, maximum is 50.
- name: cursor
in: query
type: string
- name: group_item_id
in: query
type: string
description: The ID of the group item to retrieve.
required: true
- name: v2-boards-board_id-groups-group_id
path: /v2/boards/{board_id}/groups/{group_id}
operations:
- name: getgroupbyid
method: GET
description: Get a group by its ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: board_id
in: path
type: string
description: Unique identifier (ID) of the board.
required: true
- name: group_id
in: path
type: string
description: Unique identifier (ID) of the group.
required: true
- name: ungroup
method: DELETE
description: Ungroup items
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: board_id
in: path
type: string
description: Unique identifier (ID) of the board.
required: true
- name: group_id
in: path
type: string
description: Unique identifier (ID) of the group.
required: true
- name: delete_items
in: query
type: boolean
description: Indicates whether the items should be removed. By default, false.
- name: updategroup
method: PUT
description: Updates a group with new items
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: board_id
in: path
type: string
description: Unique identifier (ID) of the board.
required: true
- name: group_id
in: path
type: string
description: Unique identifier (ID) of the group.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: v2-boards-board_id-groups-group_id}?
path: /v2/boards/{board_id}/groups/{group_id}?
operations:
- name: deletegroup
method: DELETE
description: Deletes the group
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: board_id
in: path
type: string
description: Unique identifier (ID) of the board.
required: true
- name: group_id
in: path
type: string
description: Unique identifier (ID) of the group.
required: true
- name: delete_items
in: query
type: boolean
description: Indicates whether the items should be removed. Set to `true` to delete items in the group.
required: true
authentication:
type: bearer
token: '{{env.MIRO_API_KEY}}'
exposes:
- type: rest
namespace: miro-groups-rest
port: 8080
description: REST adapter for Miro Developer Platform — groups. One Spectral-compliant resource per consumed operation,
prefixed with /v1.
resources:
- path: /v1/v2/boards/{board-id}/groups
name: v2-boards-board-id-groups
description: REST surface for v2-boards-board_id-groups.
operations:
- method: POST
name: creategroup
description: Create group
call: miro-groups.creategroup
with:
board_id: rest.board_id
body: rest.body
outputParameters:
- type: object
mapping: $.
- method: GET
name: getallgroups
description: Get all groups on a board
call: miro-groups.getallgroups
with:
board_id: rest.board_id
limit: rest.limit
cursor: rest.cursor
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/boards/{board-id}/groups/items
name: v2-boards-board-id-groups-items
description: REST surface for v2-boards-board_id-groups-items.
operations:
- method: GET
name: getitemsbygroupid
description: Get items of a group by ID
call: miro-groups.getitemsbygroupid
with:
board_id: rest.board_id
limit: rest.limit
cursor: rest.cursor
group_item_id: rest.group_item_id
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/boards/{board-id}/groups/{group-id}
name: v2-boards-board-id-groups-group-id
description: REST surface for v2-boards-board_id-groups-group_id.
operations:
- method: GET
name: getgroupbyid
description: Get a group by its ID
call: miro-groups.getgroupbyid
with:
board_id: rest.board_id
group_id: rest.group_id
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: ungroup
description: Ungroup items
call: miro-groups.ungroup
with:
board_id: rest.board_id
group_id: rest.group_id
delete_items: rest.delete_items
outputParameters:
- type: object
mapping: $.
- method: PUT
name: updategroup
description: Updates a group with new items
call: miro-groups.updategroup
with:
board_id: rest.board_id
group_id: rest.group_id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/boards/{board-id}/groups/group-id
name: v2-boards-board-id-groups-group-id
description: REST surface for v2-boards-board_id-groups-group_id}?.
operations:
- method: DELETE
name: deletegroup
description: Deletes the group
call: miro-groups.deletegroup
with:
board_id: rest.board_id
group_id: rest.group_id
delete_items: rest.delete_items
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: miro-groups-mcp
port: 9090
transport: http
description: MCP adapter for Miro Developer Platform — groups. One tool per consumed operation, routed inline through
this capability's consumes block.
tools:
- name: create-group
description: Create group
hints:
readOnly: false
destructive: false
idempotent: false
call: miro-groups.creategroup
with:
board_id: tools.board_id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-all-groups-board
description: Get all groups on a board
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-groups.getallgroups
with:
board_id: tools.board_id
limit: tools.limit
cursor: tools.cursor
outputParameters:
- type: object
mapping: $.
- name: get-items-group-id
description: Get items of a group by ID
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-groups.getitemsbygroupid
with:
board_id: tools.board_id
limit: tools.limit
cursor: tools.cursor
group_item_id: tools.group_item_id
outputParameters:
- type: object
mapping: $.
- name: get-group-its-id
description: Get a group by its ID
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-groups.getgroupbyid
with:
board_id: tools.board_id
group_id: tools.group_id
outputParameters:
- type: object
mapping: $.
- name: ungroup-items
description: Ungroup items
hints:
readOnly: false
destructive: true
idempotent: true
call: miro-groups.ungroup
with:
board_id: tools.board_id
group_id: tools.group_id
delete_items: tools.delete_items
outputParameters:
- type: object
mapping: $.
- name: updates-group-new-items
description: Updates a group with new items
hints:
readOnly: false
destructive: false
idempotent: true
call: miro-groups.updategroup
with:
board_id: tools.board_id
group_id: tools.group_id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: deletes-group
description: Deletes the group
hints:
readOnly: false
destructive: true
idempotent: true
call: miro-groups.deletegroup
with:
board_id: tools.board_id
group_id: tools.group_id
delete_items: tools.delete_items
outputParameters:
- type: object
mapping: $.