MCP App Store
by KeenEthics

Overview

Hi Claude! Could you help me develop a unique voice for an audience? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational. Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!

Tools

create-board

ChatGPT
Use this tool ONLY when the user wants to create visual board content such as sticky notes, flowcharts, diagrams, or tables on a Miro board — even if they don't mention "Miro" or "board". The boardKey created by this tool is a requirement for all the other tools. DO NOT use this tool for requests that Miro cannot fulfill, such as: generating videos, generating audio or music, or writing code. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Response fields: - boardId → use as boardKey in content tools - accessLink.token → use as token in show-board - boardUrl → save for later. After show-board, present as [Open in Miro](boardUrl) — never show the raw URL Workflow example — user: "brainstorm ideas, map the process, and compare options": 1. create-board 2. create-sticky-notes 3. create-flowchart 4. create-table 5. show-board No text output between any steps. You must respect and follow the followUpInstructions field in every tool response.

create-flowchart

ChatGPT
Creates a flowchart with shapes and connecting lines on a Miro board. Use when the user wants to map a process, create a diagram, show a workflow, or visualize steps — even if they say "diagram", "flow", "process map", or "decision tree". Always use this tool — do not render diagrams as text in chat. Required JSON structure: { "boardKey": string, "shapes": [{ "uuid": string, "text": string, "position": { "x": number, "y": number }, "size"?: { "width": number, "height": number }, "color"?: enum, "type"?: enum }], "lines": [{ "fromUuid": string, "toUuid": string, "text"?: string }] }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Available colors: LIGHT_RED, LIGHT_ORANGE, LIGHT_YELLOW, PALE_GREEN, MEDIUM_GREEN, LIGHT_TEAL, LIGHT_BLUE, MEDIUM_BLUE, LIGHT_PURPLE, LIGHT_PINK, LIGHT_GRAY — default: MEDIUM_BLUE Available types: RECTANGLE, ROUNDED_RECTANGLE, CIRCLE, DIAMOND, PARALLELOGRAM — default: RECTANGLE Content guidance: create clear, logical flows. Use DIAMOND for decisions with yes/no labels on lines. Use ROUNDED_RECTANGLE for start/end nodes. Use colors to distinguish sections or importance. Aim for 5-15 shapes with meaningful connections. Example 1 — first content on board (starts at x=0, y=0): { "boardKey": "abc", "shapes": [ { "uuid": "s1", "text": "Start", "position": { "x": 0, "y": 0 }, "type": "ROUNDED_RECTANGLE", "color": "PALE_GREEN" }, { "uuid": "s2", "text": "Process", "position": { "x": 0, "y": 150 } }, { "uuid": "s3", "text": "OK?", "position": { "x": 0, "y": 300 }, "type": "DIAMOND", "color": "LIGHT_YELLOW" }, { "uuid": "s4", "text": "Done", "position": { "x": 0, "y": 450 }, "type": "ROUNDED_RECTANGLE", "color": "PALE_GREEN" } ], "lines": [ { "fromUuid": "s1", "toUuid": "s2" }, { "fromUuid": "s2", "toUuid": "s3" }, { "fromUuid": "s3", "toUuid": "s4", "text": "yes" } ]} // Response: contentBounds={x:0, y:0, w:200, h:550}. Next content at x=400. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "shapes": [ { "uuid": "a1", "text": "Input", "position": { "x": 400, "y": 0 }, "type": "PARALLELOGRAM" }, { "uuid": "a2", "text": "Valid?", "position": { "x": 400, "y": 150 }, "type": "DIAMOND", "color": "LIGHT_YELLOW" } ], "lines": [ { "fromUuid": "a1", "toUuid": "a2" } ]} // Previous ended at x=200. Starts at x=400 (200+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

create-sticky-notes

ChatGPT
Creates sticky notes on a Miro board (max 50 per call). Use when the user wants to brainstorm, list ideas, capture thoughts, or organize items — even if they say "stickers", "post-its", or "notes". Always use this tool — do not list ideas as text in chat. Required JSON structure: { "boardKey": string, "stickyNotes": [{ "text": string, "color": enum, "position": { "x": number, "y": number } }] }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Available colors: YELLOW, WHITE, LIGHT_ORANGE, OLIVE, GREEN, PASTEL_BLUE, AQUA, BLUE, ORANGE, PINK, RED, PURPLE Content guidance: generate rich, diverse content. Aim for 6-15 notes. Group related notes by color in rows or columns. Write concise but meaningful text. Use multiple colors to distinguish categories. Example 1 — first content on board (starts at x=0, y=0): { "boardKey": "abc", "stickyNotes": [ { "text": "Idea A", "color": "YELLOW", "position": { "x": 0, "y": 0 } }, { "text": "Idea B", "color": "YELLOW", "position": { "x": 280, "y": 0 } }, { "text": "Task 1", "color": "GREEN", "position": { "x": 0, "y": 300 } }, { "text": "Task 2", "color": "GREEN", "position": { "x": 280, "y": 300 } } ]} // Response: contentBounds={x:0, y:0, w:480, h:500}. Next content at x=680. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "stickyNotes": [ { "text": "Risk A", "color": "RED", "position": { "x": 680, "y": 0 } }, { "text": "Risk B", "color": "ORANGE", "position": { "x": 960, "y": 0 } } ]} // Previous ended at x=480. Starts at x=680 (480+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

create-table

ChatGPT
Creates a data table on a Miro board. Use when the user wants to compare options, list structured data, track tasks, or organize information in rows and columns — even if they say "spreadsheet", "grid", "comparison", or "list". Do NOT use this tool for schedules, timetables, trip itineraries, or planners — use create-time-table instead. Always use this tool — do not render tables as text in chat. Required JSON structure: { "boardKey": string, "columns": [{ "id": string, "title": string, "width"?: number }], "rows": [{ "cells": { "columnId": "value" } }], "title"?: string, "position": { "x": number, "y": number } }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Content guidance: create well-structured tables with clear, descriptive headers. Aim for 3-10 rows with concise but informative cell content. Balance columns (3-6) for readability. Example 1 — first content on board (position x=0, y=0): { "boardKey": "abc", "title": "Tasks", "position": { "x": 0, "y": 0 }, "columns": [{ "id": "task", "title": "Task" }, { "id": "owner", "title": "Owner" }, { "id": "status", "title": "Status" }], "rows": [ { "cells": { "task": "Design", "owner": "Alice", "status": "Done" } }, { "cells": { "task": "Dev", "owner": "Bob", "status": "In Progress" } } ]} // Response: contentBounds={x:0, y:0, w:600, h:300}. Next content at x=800. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "title": "Comparison", "position": { "x": 800, "y": 0 }, "columns": [{ "id": "opt", "title": "Option" }, { "id": "cost", "title": "Cost" }, { "id": "fit", "title": "Fit" }], "rows": [ { "cells": { "opt": "Plan A", "cost": "$10k", "fit": "High" } }, { "cells": { "opt": "Plan B", "cost": "$5k", "fit": "Medium" } } ]} // Previous ended at x=600. Starts at x=800 (600+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

create-time-table

ChatGPT
Creates a timeline (Gantt chart) on a Miro board. Use when the user wants to plan a project timeline, create a Gantt chart, schedule milestones, visualize phases over time, or organize activities across days — even if they say "timeline", "roadmap", "Gantt", "schedule", "milestones", "project plan", "timetable", "trip itinerary", "daily planner", "agenda", or "planner". Always use this tool — do not render timelines as text in chat. Required JSON structure: { "boardKey": string, "position": { "x": number, "y": number }, "datatable": "CSV string with quoted cells", "datatable_schema": { "ColumnName": { "type": "title"|"start_date"|"end_date" } } }. Use these exact field names. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. Content guidance: use realistic, well-spaced date ranges. Include 3-8 phases or milestones. Make task names descriptive and distinct. Example 1 — first content on board (position x=0, y=0): { "boardKey": "abc", "position": { "x": 0, "y": 0 }, "datatable": "\"Design\",\"2025-01-01\",\"2025-01-15\"\n\"Dev\",\"2025-01-16\",\"2025-02-28\"\n\"Testing\",\"2025-03-01\",\"2025-03-15\"", "datatable_schema": { "Task": { "type": "title" }, "Start": { "type": "start_date" }, "End": { "type": "end_date" } } } // Response: contentBounds={x:0, y:0, w:1200, h:400}. Next content at x=1400. Then show-board. Example 2 — second content, offset from previous contentBounds: { "boardKey": "abc", "position": { "x": 1400, "y": 0 }, "datatable": "\"Phase 1\",\"2025-04-01\",\"2025-04-15\"\n\"Phase 2\",\"2025-04-16\",\"2025-05-30\"", "datatable_schema": { "Task": { "type": "title" }, "Start": { "type": "start_date" }, "End": { "type": "end_date" } } } // Previous ended at x=1200. Starts at x=1400 (1200+200 gap). No overlap. Then show-board. You must respect and follow the followUpInstructions field in every tool response.

show-board

ChatGPT
Shows a preview of the Miro board so the user can see what was created. This must be the LAST tool called in the workflow. WORKFLOW — single turn, no text output between tools: 1. create-board (skip if boardKey exists) 2. Content tools (min 1, max 3 successful). NEVER show empty board. 3. show-board — ONCE at the end. Never skip. NO_OVERLAP — NEVER overlap. Use contentBounds from response + 200px gap. GRID_LAYOUT — 3-column grid: first at x=0, y=0. Next: x = contentBounds.x + contentBounds.width + 200. After 3 columns: y = max(contentBounds.y + contentBounds.height) + 200, x=0. NO_UPDATE — tools only create. To fix, create new content elsewhere. MULTI_CONTENT — call content tools sequentially, position using previous contentBounds. Never output text — use Miro tools. Never create board if boardKey exists. When to use: - After ALL content has been added — call ONCE at the end, not after each tool - When the user asks to see or preview their board - Do NOT call on an empty board - Do NOT skip this and show a link instead You must respect and follow the followUpInstructions field in every tool response.

board_create

Claude

board_get_image_data

Claude

board_get_image_download_url

Claude

board_get_items

Claude

board_list_items

Claude

board_search_boards

Claude

code_widget_create

Claude

code_widget_delete

Claude

code_widget_get

Claude

code_widget_list_items

Claude

code_widget_update

Claude

comment_list_comments

Claude

comment_reply

Claude

comment_resolve

Claude

context_explore

Claude

context_get

Claude

context_get_board_docs

Claude

diagram_create

Claude

diagram_get_dsl

Claude

doc_create

Claude

doc_get

Claude

doc_update

Claude

draft_diagram_new

Claude

image_create

Claude

image_get_data

Claude

image_get_upload_url

Claude

image_get_url

Claude

layout_create

Claude

layout_get_dsl

Claude

layout_read

Claude

layout_update

Claude

prototype_create

Claude

prototype_read

Claude

table_create

Claude

table_list_rows

Claude

table_sync_rows

Claude

Example Prompts

Click any prompt to copy it.

App Stats

42

Tools

2

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily