copy-board
Duplicate a Miro board with customizable settings like name, description, and sharing policy. Assign the copied board to a specified team for collaboration.
Instructions
Create a copy of an existing Miro board with optional new settings
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| copyFrom | Yes | Unique identifier (ID) of the board that you want to copy | |
| description | No | Description for the new copied board | |
| name | No | Name for the new copied board | |
| sharingPolicy | No | Sharing policy for the new copied board | |
| teamId | No | Team ID to assign the new copied board to |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"copyFrom": {
"description": "Unique identifier (ID) of the board that you want to copy",
"type": "string"
},
"description": {
"description": "Description for the new copied board",
"type": "string"
},
"name": {
"description": "Name for the new copied board",
"type": "string"
},
"sharingPolicy": {
"description": "Sharing policy for the new copied board",
"enum": [
"private",
"view",
"comment",
"edit"
],
"type": "string"
},
"teamId": {
"description": "Team ID to assign the new copied board to",
"type": "string"
}
},
"required": [
"copyFrom"
],
"type": "object"
}
Implementation Reference
- src/tools/copyBoard.ts:16-35 (handler)The handler function executing the copy-board tool logic, copying a Miro board with optional new name, description, sharing policy, and team ID.fn: async ({ copyFrom, name, description, sharingPolicy, teamId }) => { try { if (!copyFrom) { return ServerResponse.error("Source board ID is required"); } const copyBoardChanges = {}; if (name) copyBoardChanges['name'] = name; if (description !== undefined) copyBoardChanges['description'] = description; if (sharingPolicy) copyBoardChanges['sharingPolicy'] = { access: sharingPolicy }; if (teamId) copyBoardChanges['teamId'] = teamId; const boardData = await MiroClient.getApi().copyBoard(copyFrom, copyBoardChanges); return ServerResponse.text(JSON.stringify(boardData, null, 2)); } catch (error) { process.stderr.write(`Error copying Miro board: ${error}\n`); return ServerResponse.error(error); } }
- src/tools/copyBoard.ts:6-15 (schema)The ToolSchema definition including name, description, and Zod input schema for the copy-board tool.const copyBoardTool: ToolSchema = { name: "copy-board", description: "Create a copy of an existing Miro board with optional new settings", args: { copyFrom: z.string().describe("Unique identifier (ID) of the board that you want to copy"), name: z.string().optional().nullish().describe("Name for the new copied board"), description: z.string().optional().nullish().describe("Description for the new copied board"), sharingPolicy: z.enum(['private', 'view', 'comment', 'edit']).optional().nullish().describe("Sharing policy for the new copied board"), teamId: z.string().optional().nullish().describe("Team ID to assign the new copied board to") },
- src/index.ts:115-115 (registration)Registers the copyBoardTool in the ToolBootstrapper chain..register(copyBoardTool)