miro-mcp-server
This server is a comprehensive Miro MCP server (110 tools) that lets AI agents read, create, update, organize, and export Miro boards, items, diagrams, docs, tags, groups, and more.
Board management: create, copy, delete, update, find, list, and summarize boards; get full board content for analysis
Item CRUD: create/read/update/delete stickies, shapes, text, cards, app cards, images, documents, embeds, frames, and docs
Bulk operations: batch create, update, and delete up to 20 items at once; sticky grids up to 50
Diagram generation: create flowcharts and sequence diagrams from Mermaid syntax, with native diagram read/list/get tools
Canvas SVG: read board items as SVG, create items from SVG, and apply SVG diffs keyed on
data-miro-idTags & groups: create/list/update/delete tags, attach/detach tags, group/ungroup items, list group contents
Connectors: create, list, get, update, and delete styled connector arrows between items
Mindmaps: create root/child mindmap nodes; list, get, and delete nodes
Comments (v2-experimental): create, list, get, reply to, and resolve comment threads
Code widgets (v2-experimental): create, get, list, update, move, and delete syntax-highlighted code snippets
Table & doc support: list/get tables, create/update/delete Markdown documents, upload/replace local files
Uploads: upload local image and document files; replace files on existing items
Board sharing & members: list members, share boards via email (allowlist-gated), update roles, remove members
Export: board thumbnails for all plans; PDF/SVG export jobs for Enterprise
Search & discovery: find boards by name, search board content, list all items with pagination, and use
miro_tool_searchto discover the right toolAudit & introspection: query local execution logs, org audit logs (Enterprise), and desire-path normalization patterns; inspect token/user via
miro_who_am_i
Supports embedding Figma designs and content directly onto Miro boards.
Supports creating, reading, and managing Markdown-based documents as native items on Miro boards.
Enables the generation of flowcharts and sequence diagrams on Miro boards from Mermaid syntax.
Provides comprehensive tools for managing Miro boards, including creating and organizing items such as stickies, shapes, frames, and cards, as well as managing board members and permissions.
Provides functionality to export Miro board content into SVG vector format.
Allows for embedding YouTube videos as interactive elements on Miro boards.
Miro MCP Server
Run your Miro workshops, retros, and planning sessions from the command line. Read boards, create stickies, organize frames, and generate diagrams through Claude, Cursor, or any MCP client.
Community project — Not officially affiliated with Miro. See official options below.
110 tools | Single binary | All platforms | All major AI tools
Documentation
Document | Description |
Get running in 2 minutes | |
Full setup for all AI tools | |
Configuration reference | |
Optimization guide | |
Version history | |
Error handling & troubleshooting |
Related MCP server: Miro MCP
Quick Start
1. Install
Homebrew (macOS/Linux):
brew tap olgasafonova/tap && brew install miro-mcp-serverOne-liner (macOS/Linux):
curl -fsSL https://raw.githubusercontent.com/olgasafonova/miro-mcp-server/main/install.sh | shDocker:
docker pull ghcr.io/olgasafonova/miro-mcp-server:latestManual download: See SETUP.md for all platforms
2. Get a Miro Token
Create an app with
boards:readandboards:writepermissionsInstall to your team and copy the token
3. Configure Your AI Tool
Claude Code:
claude mcp add miro -e MIRO_ACCESS_TOKEN=your-token -- miro-mcp-serverClaude Desktop / Cursor / VS Code: See SETUP.md
Cursor Marketplace:
/add-plugin miroNot working? Tell us what made it hard — even one sentence helps.
What You Can Do
Category | Examples |
Boards | Create, copy, delete, update, share, list members |
Items | Sticky notes, shapes, text, cards, app cards, images, documents, frames, docs |
Diagrams | Generate flowcharts and sequence diagrams from Mermaid; list and inspect native diagram items |
Docs | Create and manage Markdown documents on boards |
Upload | Upload and replace local image and document files on boards |
Tables | Discover and inspect tables on boards |
Mindmaps | Create mindmap nodes with parent-child relationships |
Code Widgets | Syntax-highlighted code snippets on boards (v2-experimental) |
Bulk Ops | Create multiple items at once, sticky grids |
Tags | Create, attach, update, and organize with tags |
Groups | Group, list, and manage item groups |
Connectors | Connect items with styled arrows |
Export | Board thumbnails, PDF/SVG export (Enterprise) |
Voice Examples
"Add a yellow sticky saying 'Review PRs'"
"Create a flowchart: Start → Decision → End"
"What boards do I have?"
"Share the Design board with jane@example.com"
"Create a mindmap with 'Project Ideas' as root"
Companion Skill: miro-workflow
For Claude clients that support skills (Claude Code, Claude Desktop), this repo includes a miro-workflow skill that describes how to assemble a few common board layouts from the atomic create-item tools.
Five layouts are covered:
Workflow | Trigger phrase examples |
Sprint Board | "set up a sprint board for sprint 42" |
Retrospective | "create a retro board for our team" |
Brainstorm | "brainstorm board for [topic]" |
Story Map | "map the user journey for [product]" |
Kanban | "kanban for our backlog" |
Each one specifies frame sizes, gap math, sticky placement, color conventions (the Miro API takes hex for frame fills and named values for stickies; two different vocabularies), and the tool-call order to follow. For single-tool calls ("add one sticky") or read-only inspection, the atomic tools are usually enough on their own.
The skill is new and likely needs adjustment as more layouts get exercised against real boards. Files live under skills/miro-workflow/. Claude Code auto-discovers skills from ~/Projects/claude-code-config/skills/; for other hosts, follow your client's skill installation docs.
The badge above is awarded by SkillCheck Pro; this skill currently scores 92/100 with zero Critical issues and zero Warnings. Skills in this repo earn the badge at ≥90/100 with zero Critical and zero Warnings; below that bar, the badge is dropped until the skill passes again.
Companion CLI: miro-cli
For shell-first usage, this server has a sibling: miro-cli. Same author, same Miro API coverage, different runtime. One verb per endpoint, JSON in and out, plus a local SQLite mirror for offline search. Reach for it when you're scripting Miro in CI, bulk-migrating stickies between boards, or querying boards offline without burning API quota.
The MCP server and the CLI overlap deliberately. Use the MCP server when an agent runtime is in the loop (Claude Code, Claude Desktop, Cursor). Use the CLI when bash, Makefiles, or CI are. Use both if you want.
Install:
brew install olgasafonova/tap/miro-cli
# or
go install github.com/olgasafonova/miro-cli/cmd/miro-cli@latestCompanion MCP Apps server: miro-mcp-apps
If you want Miro data to render as interactive UI in the chat (cards, tables, color clusters, SVG graphs) instead of streamed JSON, there's a TypeScript sibling: miro-mcp-apps. Eleven tools built on the MCP Apps extension (SEP-1865), reusing the same MIRO_ACCESS_TOKEN. The two servers run side-by-side: this one for the 110-tool CRUD surface, that one for visual at-a-glance views.
You want… | Use |
Programmatic control: create/update/move/connect items, generate diagrams |
|
Visual board summaries, sticky color clusters, connector graphs rendered inline | |
Same in bash, CI, or a Makefile |
The MCP Apps pattern is TypeScript-only today (Go SDK has no ext-apps helpers), which is why this companion lives in a separate repo instead of bolting onto the Go server.
Token Efficiency
The full tool surface (110 tools) costs roughly 20.8K tokens of preload; the essentials profile trims that to ~2.8K. For sessions where that footprint matters, set MIRO_TOOLS_PROFILE=essentials in your client config; the server then registers a curated 14-tool subset (boards, list/find/search, sticky/text/frame/connector creation, list/get/update/delete items) plus one discovery meta-tool. Agents reach the rest via miro_tool_search on demand.
Profile | Tools | Preload tokens (est.) |
| 110 | ~20,795 |
| 15 | ~2,848 |
Savings: ~17,760 tokens (86.2% reduction) when you opt into essentials. Description tokens are exact (JSON-marshaled); schema cost is estimated at 200 bytes per tool. Reproduce locally with go run ./cmd/token-count/.
miro_tool_search(query?, category?, limit?) is registered in both profiles. It searches tool names, titles, descriptions, and categories with weighted keyword scoring (name 3×, title 2×, category 2.5×, description 1×), returns up to 50 matches, and never recommends itself. Use it when you don't know which tool to reach for, or to scope to a category before browsing. Empty query plus a category returns the category's tools alphabetically.
See CONFIG.md for the full env-var reference.
All 110 Tools
Tool | Description |
| List accessible boards with owner, team, and timestamps |
| Find board by name, with the same metadata as the listing |
| Get board details |
| Get board stats and item counts |
| Get all board content for AI analysis |
| Create a new board |
| Copy an existing board |
| Update board name/description |
| Delete a board |
Tool | Description |
| List users with access |
| Get member details |
| Share board via email (requires |
| Update member role (Destructive: prompts before role escalation) |
| Remove member from board |
Sharing and role-change tools are guarded for prompt-injection safety. See
SECURITY.mdandCONFIG.md.
Tool | Description |
| Create a sticky note |
| Create stickies in a grid layout |
| Create a shape (rectangle, circle, etc.) |
| Create flowchart shape (experimental API) |
| Create text element |
| Create a frame container |
| Create a card with due date |
| Create app card with custom fields |
| Add image from URL |
| Upload local image file |
| Upload local document file (PDF, DOCX, etc.) |
| Create Markdown document |
| Add document from URL |
| Embed YouTube, Figma, etc. |
| Connect two items with arrow |
| Group items together |
| Create mindmap node |
| Create multiple items at once |
Tool | Description |
| Get frame details |
| Update frame title/color/size |
| Delete a frame |
| List items inside a frame |
Tool | Description |
| Get node details |
| List all mindmap nodes |
| Delete a mindmap node |
Tool | Description |
| Add a syntax-highlighted code snippet |
| Get full source and settings |
| List widgets with code previews |
| Change code, language, title, or size |
| Move to a new position |
| Delete a code widget |
Tool | Description |
| Open a comment thread, optionally attached to an item |
| List threads with messages and resolved state |
| Get one thread with its full message history |
| Append a reply to a thread |
| Resolve a thread, or reopen with resolved=false |
Tool | Description |
| Render board items as an SVG document (computed locally); |
| Create items from SVG: shapes, text, stickies and frames ( |
| Apply an SVG diff keyed on |
Tool | Description |
| List items on a board |
| Get ALL items with auto-pagination |
| Get item details |
| Get image details and Miro-hosted URL |
| Get document details and Miro-hosted URL |
| Get app card details |
| Get Markdown document content |
| Search items by content |
| Introspect the access token: user, team, organization, application, scopes |
Tool | Description |
| Update item content/position/color |
| Update sticky note (shape, color) |
| Update shape (fill, text color, type) |
| Update text element |
| Update card fields |
| Update image properties |
| Replace image file on existing item |
| Update document properties |
| Replace document file on existing item |
| Update embed properties |
| Update group properties |
| Update app card fields |
| Update multiple items at once |
| Delete an item |
| Delete an app card |
| Update document content (full or find-and-replace) |
| Delete a Markdown document |
| Delete multiple items at once |
Tool | Description |
| Create a tag |
| List all tags on board |
| Get tag details by ID |
| Attach tag to item |
| Remove tag from item |
| Get tags on an item |
| Get all items with a specific tag |
| Update tag name/color |
| Delete a tag |
Tool | Description |
| List all connectors |
| Get connector details |
| Update connector style/caption |
| Delete a connector |
Tool | Description |
| List all groups on board |
| Get group details |
| List items in a group |
| Delete or ungroup a group |
Tool | Description |
| Get board thumbnail |
| Export to PDF/SVG (Enterprise) |
| Check export progress |
| Get download links |
Tool | Description |
| List tables (data_table_format) on a board |
| Get table metadata by ID |
Tool | Description |
| Find the right tool by keyword or category; registered in both profiles and the only gateway to the full surface in |
Tool | Description |
| Create diagram from Mermaid syntax |
| List native diagram items on a board |
| Get native diagram metadata by ID |
| Query THIS SERVER's local execution log |
| Query MIRO's org-wide audit log (Enterprise; |
| Query agent normalization patterns (what agents sent vs. what got auto-corrected) |
Diagram Generation
Create flowcharts and sequence diagrams from Mermaid syntax:
Flowchart:
flowchart TB
A[Start] --> B{Decision}
B -->|Yes| C[Success]
B -->|No| D[Retry]
D --> BSequence Diagram:
sequenceDiagram
Alice->>Bob: Hello Bob!
Bob-->>Alice: Hi Alice!Supported: flowchart/graph, sequenceDiagram, directions (TB/LR/BT/RL), shapes ([] rectangle, {} diamond, (()) circle), labeled edges.
Why This Server?
Feature | This Server | TypeScript alternatives |
Runtime | Single binary | Requires Node.js |
Size | ~14MB | 100MB+ with node_modules |
Startup | ~50ms | 500ms-2s |
Memory | ~10MB idle | ~50MB idle |
Diagram generation | Built-in Mermaid parser | AI-based |
Rate limiting | Automatic with backoff | Manual |
Caching | 2-minute TTL | None |
Circuit breaker | Yes | No |
Official vs Community
Miro released their official MCP server in December 2025 and has grown it substantially since. Comparison refreshed 09-09-2026 by enumerating the 61 tools the hosted server actually registers at mcp.miro.com, rather than counting the documented set — the docs lag the deployment in both directions: board_trash and space_delete, present on 17-08-2026, were gone the next day, leaving the surface with no hard-destructive verbs, and all five code_widget_* tools present on 18-08-2026 were gone by 09-09-2026, while canvas_search, canvas_load_format_skill and content_item_list_roles arrived. Recent additions come from their changelogs on new MCP tools and code widget endpoints.
Feature | This Server | Official Miro MCP |
Tools | 110 (or 15 in | 61 |
Transport | stdio + HTTP | HTTPS only (hosted at mcp.miro.com) |
Self-hosting | Yes | No |
Offline mode | Yes | No |
Auth | Token + OAuth2 | OAuth 2.1, dynamic client registration (Enterprise orgs need admin enablement) |
Board list metadata | id, owner, team, created/modified timestamps | name and URL |
Diagram generation | Mermaid, parsed locally; native diagram items readable via | Mermaid ( |
AI context | No | Yes ( |
Layout DSL | Composed from bulk create + the | Yes, but marked deprecated upstream in favour of the canvas tools |
Canvas as SVG | Read + create + update ( | Yes (read, create, update from SVG). Reads scope to a rectangle or a |
Spaces & sections | No | Yes (10 tools) — workspace-level grouping of boards, not board content |
Comments | Yes (create, list, get, reply, resolve; v2-experimental) | Yes (create, list, reply, resolve) |
Prototypes | No | Yes (read, create, upload URL) |
Code widgets | 6 tools incl. position move (v2-experimental) | None since 09-09-2026 (5 tools on 18-08-2026) |
Docs & Tables | Doc formats + table read | Doc create/update + table create/sync/history |
Images | Create, upload, update from file | Create, upload URL, get data/URL |
Bulk operations | Yes | Partial ( |
Mindmaps | Yes | No |
Tags & Groups | Yes | No |
Connectors CRUD | Yes | No |
Item-level CRUD | Yes (sticky, shape, text, card, image, document, embed, frame) | Layout DSL, not per-item verbs |
Board sharing / members | Yes (allowlist-gated) | Sharing, role updates and |
Export | Yes (PDF/SVG) | No |
Current user | Derived from board owner | Yes ( |
MCP Resources | 3 | No |
MCP Prompts | 5 workflows | Bundled agent skills (browse, code-review, diagram, doc, table) |
Runtime | Single Go binary | Hosted (closed-source) |
Rate limiting | Adaptive | N/A (hosted) |
Caching | Built-in (2min TTL) | N/A |
Metrics | Prometheus | No |
OpenTelemetry | Built-in (mcp-otel-go, OTel Registry) | No |
Where the differences come from. Spaces, sections, canvas-SVG and prototypes have no endpoints in the public REST API v2 — checked 13-08-2026 against the 114-path OpenAPI spec tracked in api-tracking/, and re-checked by probing the live API, since the spec omits endpoints Miro does ship. Those run on Miro-internal APIs. The reverse also holds: mindmaps, tags, groups, connectors and export are public REST surfaces the official server has not wrapped.
Board context is a design difference rather than a gap. context_get returns a server-side AI summary of a board; miro_get_board_content returns the structured content itself — items by type, frame hierarchy, connectors and tags — and lets the model already in your session do the summarizing, with no second inference hop.
When to use the official server: You want zero-setup via plugin marketplace, OAuth 2.1 enterprise security, spaces and sections, comments, board context extraction, or SVG/prototype workflows.
When to use this server: You need full REST coverage (110 tools, or a tunable 15-tool essentials mode), offline/self-hosted operation, richer board listing metadata, bulk ops, mindmaps, tags, connectors, or export.
Both can coexist — use different MCP server names in your config.
Performance
Caching: 2-minute TTL reduces API calls
Rate limiting: Adapts to Miro's rate limit headers
Circuit breaker: Isolates failing endpoints
Parallel bulk ops: Creates items concurrently
Token validation: Fails fast on startup with clear error
Transient error retry: Auto-retries 502/503/504 with backoff
OpenTelemetry: Built-in tracing and metrics via mcp-otel-go (OTel Registry)
See PERFORMANCE.md for optimization tips and benchmarks.
HTTP Mode Endpoints
When running with -http :8080:
Endpoint | Description |
| MCP protocol (Streamable HTTP) |
| Health check (JSON) |
| Deep health check (tests Miro API) |
| Prometheus metrics |
| SEP-2127 Server Card (JSON) via mcp-servercard-go |
Health check response:
{
"status": "healthy",
"server": "miro-mcp-server",
"version": "1.21.0",
"uptime": "2h30m",
"components": {
"config": {"status": "healthy"},
"miro_api": {"status": "healthy", "latency": "145ms"}
}
}Development
# Build
make build
# Run tests
make test
# Run with coverage
make test-cover
# Lint
make lint
# Build for all platforms
make build-all
# See all targets
make helpDocker Deployment
Quick start:
# Using Docker Compose
export MIRO_ACCESS_TOKEN=your-token
docker compose up -d
# Or build and run manually
docker build -t miro-mcp-server .
docker run -e MIRO_ACCESS_TOKEN=xxx -p 8080:8080 miro-mcp-serverdocker-compose.yml features:
Health checks configured
Resource limits template
Environment variable passthrough
Debugging with MCP Inspector
Test and debug the server interactively with MCP Inspector:
# Install and run (no setup required)
npx @modelcontextprotocol/inspector miro-mcp-server
# With environment variables
MIRO_ACCESS_TOKEN=your-token npx @modelcontextprotocol/inspector miro-mcp-serverOpen http://localhost:6274 to:
Browse all 110 tools with their schemas
Test tool calls interactively
View raw JSON-RPC messages
Debug parameter validation
See SETUP.md for more debugging options.
Supported Platforms
Platform | Binary |
macOS (Apple Silicon) |
|
macOS (Intel) |
|
Linux (x64) |
|
Linux (ARM64) |
|
Windows (x64) |
|
Docker |
|
Supported AI Tools
Tool | Status |
Claude Code | Tested |
Claude Desktop | Tested |
Cursor | Tested |
VS Code + GitHub Copilot | Supported |
Windsurf | Supported |
Replit | Supported |
Any MCP-compatible client | Supported |
See SETUP.md for configuration guides.
Account Compatibility
Account Type | Support |
Free | 106 tools |
Team | 106 tools |
Business | 106 tools |
Enterprise | All 110 tools |
Four tools need an Enterprise plan and fail with a hint saying so: the three PDF/SVG export tools (miro_create_export_job, miro_get_export_job_status, miro_get_export_job_results) and miro_get_org_audit_logs, which additionally needs the auditlogs:read scope. miro_get_board_picture works on every plan. Everything else works on any plan.
The 6 code widget tools and 5 comment tools use Miro's v2-experimental API; availability may vary by account or plan, and the endpoints may change before GA.
Like This Project?
If this server saved you time, consider giving it a ⭐ on GitHub. It helps others discover the project.
More MCP Servers
Check out my other MCP servers:
Server | Description | Stars |
Access GLEIF LEI database. Look up company identities, verify legal entities. | ||
Connect AI to any MediaWiki wiki. Search, read, edit wiki content. | ||
Access Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden. | ||
Talk to your ProductPlan roadmaps. Query OKRs, ideas, launches. | ||
Nordic grocery deal hunting. Find offers, plan meals, track spending. | ||
Go library for SEP-2127 Server Cards. Pre-connect discovery for MCP servers. |
License
MIT
Available Tools
88 toolsmiro_attach_tagA
Attach an existing tag to a sticky note or card. The tag must already exist; create it first with miro_create_tag if needed. Only sticky_note and card items support tags.
USE WHEN: "tag this sticky as Urgent", "add the Done label", "mark this card with Priority"
FAILS WHEN: tag_id doesn't exist on this board (list with miro_list_tags), item is not a sticky_note or card.
VOICE-FRIENDLY: "Tagged sticky with 'Urgent'"
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ID of the tag to attach | |
| item_id | Yes | ID of the item to tag (sticky note only) | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| tag_id | Yes | |
| item_id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description carries the behavioral burden. It reveals prerequisites (tag must exist), supported item types (sticky_note, card), and a voice-friendly output example. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences for core purpose, then structured USE WHEN, FAILS WHEN, and VOICE-FRIENDLY sections. Every sentence adds value with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisites, failure cases, and usage examples. With an output schema present, return values are handled separately. All necessary context for a simple attachment tool is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but the description adds context: tag_id must exist on the board, and item_id must be a sticky_note or card (schema restricts to sticky note, description adds card). This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool attaches an existing tag to a sticky note or card, specifying verb, resource, and target. It distinguishes from siblings like miro_create_tag and miro_detach_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage examples and failure conditions are provided. It explains when it fails (tag doesn't exist, wrong item type) and implies using miro_create_tag first. Could be slightly more explicit about alternatives like miro_detach_tag for removal, but overall clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_bulk_createA
Create multiple items at once (max 20). For creating only stickies in a grid, use miro_create_sticky_grid instead.
USE WHEN: "add these 5 stickies", "create items for each of these", "batch add"
VOICE-FRIENDLY: "Created 5 items on the board"
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Items to create (max 20) | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| created | Yes | |
| message | Yes | |
| item_ids | Yes | |
| item_urls | No | |
| failed_items | No | |
| retriable_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. Adds max-20 constraint but does not disclose atomicity, partial failure behavior, or side effects beyond 'Created 5 items on the board'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences each adding distinct value: purpose+limit, alternative, usage examples. No redundant text, front-loaded with core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has output schema so return values are covered. Missing mention of board existence prerequisite, but overall sufficient for a bulk create tool given schema and sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so all parameters are documented. Description adds max-20 limit and example usage but not extra semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create multiple items at once (max 20)' with a specific verb and resource, explicitly distinguishes from sibling miro_create_sticky_grid via naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not-to-use advice ('For creating only stickies in a grid, use miro_create_sticky_grid instead') and lists example user queries under 'USE WHEN'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_bulk_deleteADestructive
Delete multiple items at once (max 20).
WARNING: Cannot be undone. Use dry_run=true to preview first.
VOICE-FRIENDLY: "Deleted 5 items from the board"
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| board_id | Yes | Board ID | |
| item_ids | Yes | IDs of items to delete (max 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| deleted | Yes | |
| message | Yes | |
| item_ids | Yes | |
| failed_items | No | |
| retriable_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, description adds 'Cannot be undone' and advises dry_run for safety, fully disclosing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, with purpose and warning front-loaded. The voice-friendly line is extraneous but not distracting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects: purpose, limits, safety, and parameter hint. With output schema present, return values need not be explained. Sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers parameters (100% coverage), but description adds value by explaining dry_run's purpose and confirming the 20-item limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool deletes multiple items at once with a max of 20, distinguishing it from single-item delete or other bulk operations among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear warning about irreversibility and recommends using dry_run for preview, guiding safe usage. Could explicitly mention alternatives but not necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_bulk_updateA
Update multiple items at once (max 20). Only provide fields you want to change.
VOICE-FRIENDLY: "Updated 5 items on the board"
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Items to update (max 20) | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| message | Yes | |
| updated | Yes | |
| item_ids | Yes | |
| failed_items | No | |
| retriable_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fails to disclose behavioral traits beyond the obvious mutation (update). No annotations provide info on idempotency, permissions, or side effects. The VOICE-FRIENDLY snippet adds an example but no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a VOICE-FRIENDLY line, all concise and front-loaded. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, an output schema, and only 2 parameters, the description covers the key constraints (max 20, partial updates). It is mostly complete, though it could mention error handling for partially successful updates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameter descriptions, but the description adds semantic value by noting the partial update strategy ('Only provide fields you want to change') which is not captured in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update multiple items at once (max 20)', specifying the verb, resource, and constraint. The tool is distinct from siblings like miro_update_item by targeting multiple items in one call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance to 'Only provide fields you want to change' and notes the max 20 limit. While it doesn't explicitly exclude alternatives, the context implies this tool is for bulk updates, leaving single updates to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_copy_boardA
Copy an existing Miro board.
VOICE-FRIENDLY: "Copied board to 'Sprint Planning Copy'"
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the copy (defaults to 'Copy of {original}') | |
| team_id | No | Team ID to copy board to | |
| board_id | Yes | ID of the board to copy | |
| description | No | Description for the copy |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| message | Yes | |
| view_link | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no readOnlyHint or destructiveHint annotations, the description carries the burden of behavioral disclosure. It states 'Copy an existing Miro board', which implies a non-destructive read (the original is unchanged) and creates a new board (a write operation). However, it does not mention specific permissions required, rate limits, or what happens to the original board's content (e.g., dependencies on attached items). The description is adequate but minimally informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short: one sentence stating the purpose and a voice-friendly example. It is front-loaded with the essential information. The voice-friendly line, while not strictly necessary, provides a concrete illustration. The brevity is effective, though the example could be considered extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, all documented in schema) and the presence of an output schema (as per context signals), the description doesn't need to explain return values. It provides the core functionality. However, it could mention that the copy results in a new board with a new ID, or potential side effects like duplicating content. Still, for a copy operation, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description does not add any extra meaning beyond what the schema already provides (e.g., the name defaults to 'Copy of {original}'). Thus, the description adds no value over the schema, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Copy' and the resource 'existing Miro board', making the tool's purpose unmistakable. It distinguishes itself from sibling tools like miro_create_board (which creates a new board from scratch) and miro_find_board/search_board (which locate boards without creating copies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as miro_create_board for a new board or miro_share_board for sharing. There are no exclusions or context about prerequisites (e.g., the user must have access to the original board). The voice-friendly line is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_app_cardA
Create an app card with custom fields and status indicators. For simple cards with due dates, use miro_create_card instead.
USE WHEN: "create an app card", "add a card with fields", "create a custom card"
VOICE-FRIENDLY: "Created app card 'Integration Status'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| title | Yes | App card title | |
| width | No | Card width (default 320) | |
| fields | No | Custom fields (max 5) | |
| status | No | Status indicator: connected, disconnected, disabled | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID to place card in | |
| description | No | App card description |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| status | Yes | |
| message | Yes | |
| item_url | No | |
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal, so description carries full burden. It states creation but does not disclose side effects, permissions, or error conditions. Basic transparency but no extra context beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: two brief sentences plus targeted USE WHEN and VOICE-FRIENDLY examples. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, differentiation, and provides example usage. Output schema exists, so return value explanation not needed. Minor gap: no mention of required parameters like board_id, but schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description mentions 'custom fields and status indicators' but does not add meaning beyond the schema definitions. No additional parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates an app card with custom fields and status indicators, distinguishing it from miro_create_card for simple cards. The verb 'create' and resource 'app card' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool vs alternative: 'For simple cards with due dates, use miro_create_card instead.' Also provides 'USE WHEN' phrases, giving clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_boardB
Create a new Miro board.
VOICE-FRIENDLY: "Created board 'Sprint Planning'"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new board | |
| team_id | No | Team ID to create board in | |
| description | No | Board description |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| message | Yes | |
| view_link | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no readOnlyHint or destructiveHint, so the description carries full burden. It merely states creation without behavioral details like immediate effect, permissions, limits, or response structure. The VOICE-FRIENDLY gives a sample output but no deeper traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and includes a voice-friendly example. It is efficient, though it could be more structured to mention output schema or behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with 3 parameters (1 required) and an output schema, the description is minimally adequate. It lacks mention of return values, but output schema exists separately, so not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already described. The tool description adds no extra meaning beyond schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new Miro board' with a specific verb and resource. It distinguishes from sibling tools like miro_update_board or miro_delete_board. The VOICE-FRIENDLY example adds concrete context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as miro_copy_board or miro_find_board. No prerequisites, exclusions, or context for use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_cardA
Create a card on a Miro board. Cards have title, description, and due dates. For cards with custom fields and status, use miro_create_app_card.
USE WHEN: "add a card", "create a task card", "card with due date"
VOICE-FRIENDLY: "Created card 'Review design specs'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| title | Yes | Card title | |
| width | No | Card width (default 320) | |
| board_id | Yes | Board ID | |
| due_date | No | Due date in ISO 8601 format (e.g., 2024-12-31) | |
| parent_id | No | Frame ID to place card in | |
| description | No | Card description/body text |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title), so the description must carry the behavioral burden. It states 'Create' (a mutation) but does not disclose side effects, authentication needs, or rate limits. The mention of card features (title, description, due dates) is basic, not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences plus USE WHEN and VOICE-FRIENDLY examples. It is front-loaded with the core action and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage and an output schema (though not shown), the description is largely complete. It does not describe return values, but output schema likely covers that. It covers purpose, usage, and distinction from siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema; it only reiterates that cards have title, description, and due dates. No parameter-specific extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a card on a Miro board' with a specific verb and resource. It differentiates from the sibling tool miro_create_app_card by noting the latter is for cards with custom fields and status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit USE WHEN examples are given ('add a card', 'create a task card', 'card with due date'). It also specifies when not to use (for custom fields/status, use miro_create_app_card).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_connectorA
Create a connector line between two items. Styles: straight, elbowed (default), curved. Caps: none, arrow, stealth, diamond, filled_diamond, oval, filled_oval, triangle, filled_triangle.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Connector style: straight, elbowed, curved (default elbowed) | |
| caption | No | Text label on the connector | |
| end_cap | No | End arrow: none, arrow, filled_arrow, diamond, etc. | |
| board_id | Yes | Board ID | |
| start_cap | No | Start arrow: none, arrow, filled_arrow, diamond, etc. | |
| end_item_id | Yes | ID of the item to connect to | |
| start_item_id | Yes | ID of the item to connect from |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description reveals it creates a connector (mutation) and lists style/cap options, but does not disclose side effects, failure modes, or that items must be on the same board. No annotations provide behavioral hints, so the description carries the burden but falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states core purpose, second lists configurable options. No redundant words, front-loaded with critical action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters fully described in schema and an output schema present, the description covers the essential action and customization. Missing context about prerequisite item existence or board scope, but acceptable for a straightforward creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds detailed enumerations for style and caps (e.g., 'straight, elbowed (default), curved') beyond the schema's brief phrases, adding value for parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states 'Create a connector line between two items' with clear verb and resource. Lists style and cap options, distinguishing from sibling create tools like miro_create_shape or miro_create_card.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives, no prerequisites mentioned (e.g., items must exist on the board), and no exclusion criteria for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_docA
Create a rich text document on a Miro board from Markdown content.
USE WHEN: User says "add a document", "create a doc from markdown", "put markdown on the board"
PARAMETERS:
board_id: Required
content: Markdown text (required). Supports headings, lists, bold, italic, links, code blocks.
x, y: Position
parent_id: Frame ID to place doc in
EXAMPLE: {"board_id": "uXjVN1234", "content": "# Sprint Goals\n- Ship v2.0\n- Fix critical bugs"}
RELATED: Use miro_get_doc to read doc content. Use miro_delete_doc to remove. For URL-based documents, use miro_create_document instead.
VOICE-FRIENDLY: "Created doc format item on board"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| content | Yes | Markdown content for the document | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID to place document in |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title), so the description carries the transparency burden. It discloses the operation (create), supported Markdown elements, and a voice-friendly confirmation message. It does not mention authorization or side effects, but the context is straightforward for a create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (USE WHEN, PARAMETERS, EXAMPLE, RELATED, VOICE-FRIENDLY) and front-loaded main sentence. No redundant information, though sections like PARAMETERS partially overlap with schema. Efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description does not need to explain return values. It covers purpose, usage context, parameter behavior, examples, and related tools. Missing error handling or permission details, but sufficient for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by listing `board_id`, `content`, `x`, `y`, `parent_id` with brief meanings, notes that `content` supports specific Markdown features, and includes a concrete example. This exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create), resource (rich text document on Miro board), and input format (Markdown). It distinguishes from sibling 'miro_create_document' which is for URL-based documents, and 'miro_create_text' for plain text, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE WHEN' section listing typical user prompts like 'add a document' or 'create a doc from markdown', and a 'RELATED' section naming alternatives such as miro_get_doc, miro_delete_doc, and miro_create_document, clearly guiding when to use vs. other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_documentA
Add a document (PDF, etc.) to a Miro board from a URL. URL must be publicly accessible.
RELATED: To upload a local file instead, use miro_upload_document.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| url | Yes | URL of the document (PDF, etc.) to add | |
| title | No | Document title | |
| width | No | Document preview width | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID to place document in |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (e.g., readOnlyHint, destructiveHint), so the description must fully disclose behavior. It only says 'Add' (implying creation) but omits side effects, permission requirements, success/failure responses, or limits on file size/type. The output schema exists but the description does not reference what happens on completion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey the purpose, a key constraint, and an alternative tool. No redundant information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action and a critical condition, but given the parameter count (7) and the existence of an output schema, it could mention positioning (x, y), parent frame, or result details. It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds value beyond schema: it clarifies that the URL must be publicly accessible and specifies allowed document types ('PDF, etc.'). These constraints are not present in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add', the resource 'document', and the source 'from a URL'. It specifies document type (PDF, etc.) and the URL accessibility requirement. It distinguishes from the sibling tool miro_upload_document by indicating the alternative for local files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a key precondition (URL must be publicly accessible) and directly points to the alternative tool miro_upload_document for local file uploads. This provides clear guidance on when to use this tool versus its sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_embedA
Embed external content as a live preview on a Miro board. Supports YouTube, Vimeo, Figma, Google Docs, Loom, and other oEmbed providers. For static images from URL, use miro_create_image. For document references from URL, use miro_create_document.
USE WHEN: "embed this YouTube video", "add a Figma link", "embed Google Doc", "put a Loom video on the board"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| url | Yes | URL to embed (YouTube, Vimeo, Figma, Google Docs, etc.) | |
| mode | No | Display mode: inline (default) or modal | |
| width | No | Embed width (default 400) | |
| height | No | Embed height (default 300) | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID to place embed in |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| message | Yes | |
| item_url | No | |
| provider | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description clearly indicates a create operation (embedding), but lacks details on permissions or side effects. No annotations beyond title, so description is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded with purpose, uses bullet points for usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main use case and includes examples. With output schema present, return details are implicit. Minor gap: does not explicitly state that board_id and url are required, but schema handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds limited value beyond schema. It lists supported URL providers, which aids understanding but is not critical.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool embeds external content as live preview, lists specific providers, and distinguishes from sibling tools like miro_create_image and miro_create_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE WHEN' examples and alternatives, making it easy for an agent to decide when to use this tool versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_export_jobA
Export boards to PDF, SVG, or HTML. ENTERPRISE ONLY. Returns job ID; use miro_get_export_job_status to monitor.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format: pdf, svg, or html (default: pdf) | |
| org_id | Yes | Organization ID (Enterprise only) | |
| board_ids | Yes | Board IDs to export (max 50) | |
| request_id | No | Unique request ID for idempotency (auto-generated if empty) |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| message | Yes | |
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses async behavior (returns job ID for monitoring) and enterprise-only restriction. Annotations lack readOnlyHint/destructiveHint, so description compensates by implying non-destructive export. Could mention rate limits or auth details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two impactful sentences with no wasted words. Front-loads purpose and critical constraint (enterprise only).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, async behavior, enterprise restriction, and follow-up step. Output schema exists, so return value details not needed. Complete for a straightforward export job creation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes all 4 parameters with full coverage. Description adds no extra parameter details beyond schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Export' and resource 'boards', with specific formats (PDF, SVG, HTML). Differentiates from sibling create tools by focusing on export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes 'ENTERPRISE ONLY', guiding when not to use. Advises to monitor via miro_get_export_job_status, providing post-call guidance. Does not explicitly exclude alternatives, but no competing export tools exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_flowchart_shapeA
Create a flowchart shape using the experimental API. Supports additional stencil shapes beyond the standard shape tool.
USE WHEN: User says "create a flowchart shape", "add a process box", "draw a decision diamond for flowchart"
For standard shapes, use miro_create_shape instead. This tool uses the v2-experimental API for flowchart-specific stencil shapes.
PARAMETERS:
board_id: Required
shape: Shape type (required). Supports: rectangle, round_rectangle, circle, rhombus, parallelogram, trapezoid, pentagon, hexagon, star, flow_chart_predefined_process, wedge_round_rectangle_callout, etc.
content: Text inside the shape
x, y: Position
width, height: Size (default 200x200)
fill_color: Fill color (hex like #006400)
border_color: Border color (hex like #000000)
parent_id: Frame ID
NOTE: Uses v2-experimental API. Shape types may change when this moves to GA.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| shape | Yes | Flowchart shape type: rectangle, round_rectangle, circle, rhombus, parallelogram, trapezoid, pentagon, hexagon, star, flow_chart_predefined_process, wedge_round_rectangle_callout, etc. | |
| width | No | Width in pixels (default 200) | |
| height | No | Height in pixels (default 200) | |
| content | No | Text inside the shape | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID to place shape in | |
| fill_color | No | Fill/background color (hex like #006400) | |
| border_color | No | Border color (hex like #000000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| shape | Yes | |
| content | No | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title), so the description carries the burden. It discloses that the tool uses the v2-experimental API and that shape types may change when moving to GA. While it doesn't discuss permissions or side effects, the experimental warning adds important behavioral context. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: overall description, USE WHEN, PARAMETERS, and NOTE. It is concise with no redundant sentences, and each section is front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description need not explain return values. It covers purpose, usage guidelines, experimental API warning, and parameter details comprehensively. The description is complete for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by listing supported shape types, providing example hex values for fill_color and border_color, and mentioning default sizes. This goes beyond the schema descriptions, helping the agent understand valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: to create a flowchart shape using the experimental API, and it distinguishes from the sibling tool miro_create_shape by noting it supports additional stencil shapes beyond standard shapes. The verb 'create' and resource 'flowchart shape' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides 'USE WHEN' conditions, listing user phrases that should trigger this tool, and directly states that for standard shapes, use miro_create_shape instead. This gives clear guidance on when to use the tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_frameA
Create a frame container to group items visually. For logical grouping without a visual border, use miro_create_group.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| color | No | Background color | |
| title | No | Frame title | |
| width | No | Width (default 800) | |
| height | No | Height (default 600) | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only a title), so the description carries the burden. It discloses that a frame is a visual container, but does not discuss any behavioral traits such as destructive nature, authorization requirements, rate limits, or side effects. The behavior is predictable as a creation tool, but more detail would benefit the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences that are concise and front-loaded. Every word adds value, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that all parameters are described in the schema and there is an output schema, the description sufficiently covers the tool's purpose and differentiation from a sibling. It could mention the visual nature more explicitly, but overall it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 7 parameters, so the baseline is 3. The description does not add any parameter-specific meaning beyond what the schema already provides. It does not explain defaults (e.g., width=800, height=600) or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a frame container to group items visually', specifying the verb 'create', the resource 'frame container', and the purpose 'group items visually'. It also distinguishes from the sibling miro_create_group by noting the difference between visual and logical grouping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides guidance on when to use this tool versus miro_create_group for logical grouping without a visual border. However, it does not mention any other usage contexts, prerequisites, or scenarios where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_groupA
Group multiple items together logically (minimum 2). Grouped items move and resize together. For a visible container with a border and title, use miro_create_frame.
VOICE-FRIENDLY: "Grouped 4 items together"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID | |
| item_ids | Yes | IDs of items to group together (minimum 2) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| item_ids | Yes | |
| item_url | No | |
| item_urls | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only a title, so description carries burden. It discloses that grouped items move and resize together, but does not mention permissions, reversibility, or whether original items are modified. Some behavioral context is given but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a voice-friendly line. No filler, every sentence adds value. Action and key differentiator are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with full schema coverage and an existing output schema, the description is largely complete. It explains grouping behavior and differentiates from frame. Minor omission: no mention of whether groups can be nested or modified afterward, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (board_id and item_ids). Description does not add parameter-specific details beyond the schema. Baseline 3 per instructions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action: group items logically, and specifies that grouped items move and resize together. It differentiates from miro_create_frame by noting that frame provides a visible container with border and title. The verb 'group' and resource 'items' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly tells when not to use this tool (for a visible container, use miro_create_frame), providing a direct alternative. It also includes a voice-friendly example, guiding the agent on phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_imageA
Add an image to a Miro board from a URL.
USE WHEN: User says "add an image", "insert picture from URL", "put this image on the board"
PARAMETERS:
board_id: Required
url: Image URL (must be publicly accessible, required)
title: Alt text / title
width: Image width (preserves aspect ratio)
x, y: Position
NOTE: The image URL must be publicly accessible. Private URLs won't work.
RELATED: To upload a local file instead, use miro_upload_image.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| url | Yes | URL of the image to add (must be publicly accessible) | |
| title | No | Image title/alt text | |
| width | No | Image width (preserves aspect ratio) | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID to place image in |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavioral constraints (publicly accessible URLs) and aspect ratio preservation. Annotations are minimal, so description carries burden; could mention error handling or idempotency but covers key trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, front-loaded key info, no redundant sentences. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists (not needed in description), all 7 parameters covered, usage guidelines and behavioral note present. Complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions; description restates parameters without adding significant new meaning beyond the schema, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and resource 'image to a Miro board from a URL', distinguishing it from siblings like miro_upload_image for local files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'USE WHEN' trigger phrases and a 'RELATED' alternative (miro_upload_image), providing clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_mindmap_nodeA
Create a mindmap node. Omit parent_id for root; add parent_id for children. node_view: "text" (default) or "bubble".
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position (only for root nodes) | |
| y | No | Y position (only for root nodes) | |
| content | Yes | Text content of the node | |
| board_id | Yes | Board ID | |
| node_view | No | Node style: text (default) or bubble | |
| parent_id | No | ID of the parent node (omit for root node) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| content | Yes | |
| message | Yes | |
| item_url | No | |
| parent_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no hints (no readonly/destructive), so the description carries the burden. It states 'create' (mutation) and covers parent_id and node_view, but does not disclose error handling, limits, or side effects like ignored x/y for children. Acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, no filler. Every word adds value. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the tool's simplicity, the description covers core usage. It could mention board_id context or how to verify creation, but it's sufficient for a create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by explaining when to use parent_id (root vs child) and providing the default for node_view, going beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a mindmap node' with a specific verb and resource. It distinguishes from sibling tools like miro_create_card or miro_create_sticky by focusing on mindmap nodes. The details about root vs child nodes further clarify purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear instructions: 'Omit parent_id for root; add parent_id for children' and mentions node_view defaults. It does not explicitly compare to alternatives, but the context of mindmap-specific tools and the name itself guides usage adequately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_shapeA
Create a shape on a Miro board.
USE WHEN: User says "add a rectangle", "draw a circle", "create a box for X"
SHAPE TYPES:
Basic: rectangle, round_rectangle, circle, triangle, rhombus
Flow: parallelogram, trapezoid, pentagon, hexagon, star
Flowchart: flow_chart_predefined_process, wedge_round_rectangle_callout
PARAMETERS:
board_id: Required. Get from list_boards or find_board
shape: Shape type (required, default: rectangle)
content: Text inside shape
color: Fill color (e.g., "#FF5733" or color name)
x, y: Position (default: 0, 0)
width, height: Size (default: 200, 200)
RETURNS: Item ID, shape type, position, size, and view link.
RELATED: For flowchart-specific stencil shapes (experimental API), use miro_create_flowchart_shape instead.
EXAMPLE: {"board_id": "uXjVN1234", "shape": "circle", "content": "Start", "color": "green", "x": 0, "y": 0}
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| color | No | Fill/background color (hex like #006400) | |
| shape | Yes | Shape type: rectangle, circle, triangle, rhombus, round_rectangle, etc. | |
| width | No | Width in pixels (default 200) | |
| height | No | Height in pixels (default 200) | |
| content | No | Text inside the shape | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID | |
| text_color | No | Text color (hex like #ffffff for white) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| shape | Yes | |
| content | No | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations lack behavioral hints, so the description carries the burden. It describes the creation action, required parameters, and return values (item ID, shape type, position, size, view link). However, it does not mention permissions or side effects, which would be beneficial but not critical for a straightforward creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (USE WHEN, SHAPE TYPES, PARAMETERS, RETURNS, RELATED, EXAMPLE). It is concise yet informative, with no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters (2 required), the description covers all essential aspects: purpose, shape categories, parameter descriptions, defaults, return type, and a related tool. The example further aids understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by grouping shape types (Basic, Flow, Flowchart) and providing default values for width, height, x, y. It also includes an example showing parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a shape on a Miro board' and lists specific shape types. It distinguishes from sibling tool miro_create_flowchart_shape, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'USE WHEN' triggers (e.g., 'add a rectangle') and points to an alternative tool for flowchart-specific shapes, providing clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_stickyA
Create a sticky note on a Miro board. For multiple stickies in a grid, use miro_create_sticky_grid. For batch creation of mixed items, use miro_bulk_create.
USE WHEN: "add a sticky", "create note saying X", "put a yellow sticky"
VOICE-FRIENDLY: "Created yellow sticky 'Action item: Review design'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position (default 0) | |
| y | No | Y position (default 0) | |
| color | No | Sticky color: yellow, green, blue, pink, orange, etc. | |
| width | No | Width in pixels | |
| content | Yes | Text content of the sticky note | |
| board_id | Yes | Board ID | |
| parent_id | No | Frame ID to place sticky in |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| color | Yes | |
| content | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations beyond title, and description only says 'Create' without detailing side effects, permissions, or limitations. The voice-friendly example adds minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, front-loaded with core purpose, then alternatives and use cases. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-item creation tool with output schema, description covers purpose, alternatives, and examples. No gaps given tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage, so baseline 3. Description adds example color list and position defaults but no deeper semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create a sticky note on a Miro board' and distinguishes from sibling tools like miro_create_sticky_grid and miro_bulk_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit USE WHEN phrases and mentions alternatives, making it clear when to use this tool vs others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_sticky_gridA
Create multiple sticky notes arranged in a grid layout (max 50). For mixed item types, use miro_bulk_create.
USE WHEN: "add a grid of stickies", "create 6 stickies in rows", "make sticky notes for each idea"
VOICE-FRIENDLY: "Created 9 stickies in a 3x3 grid"
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Color for all stickies: yellow, green, blue, pink, orange, etc. | |
| columns | No | Number of columns in grid (default 3) | |
| spacing | No | Space between stickies in pixels (default 220) | |
| start_x | No | Starting X position (default 0) | |
| start_y | No | Starting Y position (default 0) | |
| board_id | Yes | Board ID | |
| contents | Yes | Text for each sticky note | |
| parent_id | No | Frame ID to place stickies in |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| columns | Yes | |
| created | Yes | |
| message | Yes | |
| item_ids | Yes | |
| item_urls | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals a key behavioral trait: max 50 stickies. The VOICE-FRIENDLY example hints at the output format. However, with no annotations beyond title, it could disclose more about potential side effects or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: only three sentences plus structured USE WHEN and VOICE-FRIENDLY sections. It is front-loaded with the core purpose and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose, usage guidelines, constraints, and an example output. With output schema existing, return values are covered. However, it omits details like grid layout behavior (e.g., row filling) and default parameter values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds little extra meaning beyond the schema, though the VOICE-FRIENDLY example indirectly references columns. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Create multiple sticky notes arranged in a grid layout (max 50).' It distinguishes itself from the sibling miro_bulk_create by advising 'For mixed item types, use miro_bulk_create.' The USE WHEN phrases further clarify the specific use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use scenarios via USE WHEN phrases and gives an alternative tool for mixed item types. While it doesn't mention miro_create_sticky, the grid layout implies it's for multiple items, and the max limit is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_tagB
Create a tag on a Miro board. Colors: red, magenta, violet, blue, cyan, green, yellow, gray, light_green, dark_green, dark_blue, dark_gray, black.
VOICE-FRIENDLY: "Created red tag 'Urgent'"
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Tag color: red, magenta, violet, blue, cyan, green, yellow, gray, light_green, dark_green, dark_blue, dark_gray, black | |
| title | Yes | Tag text (e.g., 'Urgent', 'Done', 'Review') | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| color | Yes | |
| title | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies mutation (create), lists allowed colors, and provides an example output. However, it does not disclose permission requirements, board-scoping, or whether the tag is created unattached. With no annotations, the description carries the burden but offers only minimal behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the action. The VOICE-FRIENDLY line is a minor addition but does not detract from clarity. It is efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and full parameter coverage, the description adequately covers the tool's purpose and inputs. It does not mention post-creation steps (attaching), but for a simple creation tool, it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds a list of colors (duplicating schema) and an example voice-friendly message, providing slight reinforcement but no new semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a tag on a Miro board' which is a specific verb and resource. It does not differentiate from siblings like miro_attach_tag, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as miro_attach_tag or miro_update_tag. The description lacks context on the typical workflow of creating and then attaching tags.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_create_textA
Add free-floating text to a Miro board with no background or border. For notes with colored backgrounds, use miro_create_sticky. For rich Markdown documents, use miro_create_doc.
USE WHEN: "add a title", "put heading text", "write a label", "add text saying X"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| color | No | Text color | |
| width | No | Text box width | |
| content | Yes | Text content | |
| board_id | Yes | Board ID | |
| font_size | No | Font size (default 14) | |
| parent_id | No | Frame ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| content | Yes | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title), providing no readOnlyHint or destructiveHint. The description does not disclose behavioral traits such as whether the tool is idempotent, required permissions, or side effects. Given the lack of annotation support, the description should have provided more context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a list of use cases. Every sentence provides distinct and valuable information without redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, 2 required), the description is fairly complete. It covers purpose, usage, and alternatives. The presence of an output schema reduces the need to explain return values. Minor lack of behavioral transparency prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 8 parameters described. However, the description adds no additional meaning beyond the schema's minimal descriptions (e.g., 'X position', 'Text color'). Baseline of 3 is appropriate as per guidelines when coverage is high but description adds no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Add free-floating text to a Miro board with no background or border.' It explicitly distinguishes this tool from siblings miro_create_sticky and miro_create_doc, providing specific differentiators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use alternatives: 'For notes with colored backgrounds, use miro_create_sticky. For rich Markdown documents, use miro_create_doc.' It also provides example user intents like 'add a title', 'put heading text', which guides the AI agent effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_app_cardADestructive
Delete an app card from a Miro board.
WARNING: Cannot be undone. Use dry_run=true to preview first.
VOICE-FRIENDLY: "App card deleted successfully"
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| item_id | Yes | App card item ID to delete | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| item_id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destruction; description adds 'Cannot be undone' and preview suggestion, which are behavioral traits beyond what destructiveHint provides. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, warning, voice-friendly confirmation. No filler, efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and schema covers all parameters, description is fairly complete. The warning and dry_run hint cover the most important behavioral context. Could optionally mention permissions or async behavior, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; description adds the dry_run use case (preview before delete) beyond schema, but no extra meaning for board_id or item_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with 'Delete an app card from a Miro board' — a specific verb+resource combination that clearly distinguishes it from sibling create and update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a warning about irreversibility and suggests using dry_run=true for preview, which guides usage, but lacks explicit comparison to other delete tools like miro_delete_item or miro_delete_board.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_boardADestructive
Delete a Miro board permanently.
WARNING: Cannot be undone. Use dry_run=true to preview first.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| board_id | Yes | ID of the board to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| success | Yes | |
| board_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond annotations: explains permanence and preview option. No contradiction with destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then essential warning. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main behavioral aspects (permanence, preview) and has output schema. Missing permissions or ownership requirements, but sufficient for a simple delete tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds emphasis on dry_run but no new semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Delete' and resource 'board permanently'. Distinguishes from sibling tools like miro_delete_item because it specifies deletion of the board itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns that the action cannot be undone and recommends using dry_run=true to preview. Does not compare to alternatives like miro_delete_item, but provides clear safety guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_connectorADestructive
Delete a connector from a Miro board.
WARNING: Cannot be undone. Use dry_run=true to preview first.
VOICE-FRIENDLY: "Connector deleted successfully"
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| board_id | Yes | Board ID | |
| connector_id | Yes | ID of the connector to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true. The description adds valuable context: 'Cannot be undone' and recommendation to use dry_run. However, it does not mention error handling (e.g., if connector not found) or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three sentences, includes a clear warning, and is front-loaded. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete tool with an output schema and three parameters, the description covers purpose, irreversible effect, and a preview option. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions dry_run in the warning but does not add additional meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a connector from a Miro board,' which is a specific verb+resource+scope. It easily distinguishes from sibling tools like miro_create_connector and miro_update_connector.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'WARNING: Cannot be undone. Use dry_run=true to preview first.' This tells when to use (with precaution) and suggests an alternative approach (dry_run) to test without consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_docADestructive
Delete a doc format item from a Miro board.
USE WHEN: User says "remove the document", "delete that doc"
PARAMETERS:
board_id: Required
item_id: Doc format item ID to delete (required)
dry_run: If true, returns preview without deleting (optional)
WARNING: This action cannot be undone. Use dry_run=true to preview what will be deleted before executing.
RELATED: Use miro_get_doc to inspect before deleting. Use miro_create_doc to create new documents.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| item_id | Yes | Doc format item ID to delete | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| item_id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true, and the description adds a clear warning that the action cannot be undone and recommends using dry_run=true to preview. This provides important behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for purpose, usage, parameters, warning, and related tools. It conveys all essential information in a concise, front-loaded format with no unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete operation, the description covers purpose, usage guidelines, parameters, and important warnings. Since an output schema exists, the lack of return value explanation is acceptable. The context is complete for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond what the schema already provides. The description lists parameters with similar wording, but does not add new semantic depth or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it deletes a doc format item from a Miro board, using a specific verb and resource. It distinguishes from sibling tools like miro_delete_item by specifying 'doc format item' and mentions related tools miro_get_doc and miro_create_doc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'USE WHEN' triggers such as 'remove the document' and 'delete that doc'. Provides warning about irreversibility, suggests dry_run for preview, and directs to miro_get_doc for inspection before deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_frameADestructive
Delete a frame from a Miro board. Items inside are NOT deleted; they become ungrouped.
WARNING: Cannot be undone. Use dry_run=true to preview first.
VOICE-FRIENDLY: "Frame deleted successfully"
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| board_id | Yes | Board ID | |
| frame_id | Yes | Frame ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds critical details beyond destructiveHint annotation: items are ungrouped, operation cannot be undone, and suggests dry_run preview. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences covering purpose, warning, and voice-friendly feedback with no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers behavior, safety, and usage; missing mention of prerequisites like valid board_id, but sufficient for a delete operation given output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters; description adds context for dry_run parameter, enhancing understanding beyond schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Delete a frame' and distinguishes behavior by noting items inside are not deleted but ungrouped, differentiating it from siblings like miro_delete_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides cautionary note about irreversibility and recommends dry_run=true for preview, but does not explicitly contrast with alternative deletion tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_groupADestructive
Delete a group. Set delete_items=true to also delete items (default: items are released to move independently).
USE WHEN: deleting a group OR ungrouping items. With delete_items=false (default), items are ungrouped and remain on the board. With delete_items=true, both the group and its items are permanently deleted.
WARNING: Deleting items (delete_items=true) cannot be undone. Use dry_run=true to preview first.
VOICE-FRIENDLY: "Group deleted, items ungrouped"
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| board_id | Yes | Board ID | |
| group_id | Yes | Group ID to delete | |
| delete_items | No | Also delete the items in the group (default: false, items are ungrouped) |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| success | Yes | |
| group_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant value beyond the destructiveHint annotation by explaining the default behavior (items released), warning that item deletion is irreversible, and suggesting a dry_run preview. All behavioral traits are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet comprehensive, organized into clear sections (USE WHEN, WARNING, VOICE-FRIENDLY). Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All necessary aspects are covered: purpose, usage, parameter behavior, and important warnings. The description is complete for confident tool invocation, given the supporting schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description enhances understanding by clarifying the effect of delete_items (default false) and how dry_run works, providing practical context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a group' and distinguishes between two modes: deleting only the group (ungrouping items) or deleting both group and items. This differentiates from sibling tools like miro_delete_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage scenarios ('USE WHEN: deleting a group OR ungrouping items') and explains the behavior of the delete_items parameter with default values. While it doesn't mention alternatives explicitly, the guidance is clear and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_itemADestructive
Delete an item from a Miro board.
WARNING: Cannot be undone. Use dry_run=true to preview first.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| item_id | Yes | Item ID to delete | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| item_id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the destructiveHint annotation by explicitly stating 'Cannot be undone' and recommending dry_run for preview. No contradiction with annotations (destructiveHint: true is consistent).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first efficiently states the purpose, and the second adds a critical warning. Every sentence is necessary and front-loaded, with no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with an output schema, the description covers the essential purpose, irreversible nature, and dry_run option. However, it could be more complete by clarifying its scope relative to sibling tools (e.g., for generic items vs. specific types), but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the description does not add meaning beyond what the schema already provides. The mention of dry_run in the description aligns with its schema description but doesn't add new information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it deletes an item from a Miro board, using a specific verb and resource. Among siblings with many specific delete tools (e.g., delete_app_card, delete_board), this tool is for generic items, distinguishing it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a warning about irreversibility and recommends using dry_run, but it does not provide guidance on when to use this tool versus alternatives like miro_bulk_delete or other specific delete tools. Usage context is implied but not explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_mindmap_nodeADestructive
Delete a mindmap node. Deleting a parent may affect children. Uses v2-experimental API.
WARNING: Cannot be undone. Use dry_run=true to preview first.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, returns preview without deleting | |
| node_id | Yes | Mindmap node ID to delete | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description goes beyond annotations by revealing cascading effects on children ('Deleting a parent may affect children'), the destructive irreversible nature ('Cannot be undone'), a preview option, and the experimental API version, though it omits authorization or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is two sentences and a warning, front-loaded with core action, but could be more compact without losing nuance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return value explanation is unnecessary. Description covers destructive nature, side effects, and dry_run option adequately for a simple deletion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so description adds marginal value by reinforcing dry_run usage, but does not provide novel semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Delete a mindmap node' with a specific verb and resource. It also adds context about parent-child effects, but does not explicitly distinguish from sibling delete tools (e.g., miro_delete_app_card).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions using dry_run=true to preview, which provides usage guidance, but does not explicitly specify when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_delete_tagADestructive
Delete a tag from a board. Removes the tag from all items.
WARNING: Cannot be undone. Use dry_run=true to preview first.
VOICE-FRIENDLY: "Tag deleted successfully"
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ID of the tag to delete | |
| dry_run | No | If true, returns preview without deleting | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| tag_id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses that the tag is removed from all items (a key side effect) and emphasizes irreversibility, adding valuable behavioral context not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three short sentences covering action, warning, and voice-friendly response. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature, the description covers essential context: what it does, side effects (removes from items), irreversibility, and a safe usage tip. With an existing output schema, return value details are unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for all three parameters (100% coverage). The description only reiterates the dry_run usage, adding no new semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete a tag from a board) and the scope (removes from all items), distinguishing it from siblings like miro_create_tag, miro_attach_tag, and miro_update_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description warns that the action cannot be undone and suggests using dry_run=true to preview, giving practical usage guidance. However, it does not explicitly contrast with alternative tag tools or specify when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_detach_tagA
Remove a tag from a sticky note or card. The tag stays on the board for reuse; to delete it entirely, use miro_delete_tag.
USE WHEN: "remove the Urgent tag", "untag this card", "take off the Done label"
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ID of the tag to remove | |
| item_id | Yes | ID of the item to untag | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| tag_id | Yes | |
| item_id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tag remains on the board for reuse, which is a key behavioral trait beyond the minimal annotations (only title). It does not mention permissions or idempotency, but for a simple detach operation, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a usage line, no redundancy, front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, full schema coverage, and presence of output schema, the description covers all necessary context: what the tool does, how it differs from sibling (miro_delete_tag), and example commands.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so the parameters are already well-documented. The description adds no additional parameter-level details beyond usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and resource 'tag from a sticky note or card'. It distinguishes from deletion by noting the tag stays on the board, and provides example usage phrases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'USE WHEN' section with concrete examples and explicitly directs to miro_delete_tag for full deletion, providing clear guidance on when to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_find_boardARead-only
Find a Miro board by name (case-insensitive, partial match). Returns board ID for subsequent operations. For listing all boards, use miro_list_boards.
USE WHEN: "find board named X", "get the Design Sprint board"
VOICE-FRIENDLY: "Found 'Design Sprint' board - ready to work on it"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Board name to search for (case-insensitive, supports partial matching) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| message | Yes | |
| view_link | Yes | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and description adds that it performs case-insensitive partial matching, returns board ID. No contradiction; description adds useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is short and front-loaded with key purpose. Includes usage examples efficiently. Could be slightly more structured but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple parameter, output schema exists, and clear purpose, the description is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with schema coverage 100%. Description repeats case-insensitivity and partial match already in schema, adding no new meaning. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it finds a Miro board by name with case-insensitive and partial match, returns board ID, and distinguishes from miro_list_boards which lists all boards. Verb and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE WHEN' examples and a voice-friendly response example. Mentions miro_list_boards as alternative for listing all boards, but does not cover edge cases like no match or ambiguous names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_generate_diagramA
Generate diagram on Miro from Mermaid code. Creates shapes and connectors with auto-layout.
USE WHEN: "create flowchart", "generate diagram", "draw process flow", "sequence diagram"
TYPES: flowchart/graph, sequenceDiagram FLOWCHART: A[rect] --> B{diamond} -->|label| C((circle)) SEQUENCE: participant A; A->>B: sync; A-->>B: async
| Name | Required | Description | Default |
|---|---|---|---|
| diagram | Yes | Diagram code in Mermaid format (flowchart/graph syntax) | |
| start_x | No | Starting X position (default: 0) | |
| start_y | No | Starting Y position (default: 0) | |
| board_id | Yes | Board ID to create the diagram on | |
| parent_id | No | Parent frame ID to create diagram inside | |
| node_width | No | Width of each node (default: 180) | |
| output_mode | No | Output mode: 'discrete' (default) returns individual items, 'grouped' groups all items together for easy move/delete, 'framed' creates a frame containing all items | |
| use_stencils | No | Use professional flowchart stencils instead of basic shapes. Provides better visual styling with proper flowchart symbols (terminator, process, decision, I/O). |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| node_ids | Yes | |
| frame_ids | No | |
| node_urls | No | |
| diagram_id | No | |
| frame_urls | No | |
| diagram_url | No | |
| output_mode | No | |
| total_items | No | |
| diagram_type | No | |
| connector_ids | Yes | |
| diagram_width | Yes | |
| nodes_created | Yes | |
| connector_urls | No | |
| diagram_height | Yes | |
| frames_created | Yes | |
| connectors_created | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes creation and auto-layout, but no annotations about safety or destructiveness. Limited detail on side effects, limitations, or Mermaid version compatibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with purpose front-loaded. Uses list and code examples efficiently. Minor improvement could group usage guidance more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main purpose and param usage, but does not explain output schema or return values. Lacks details on auto-layout behavior, though schema coverage is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with clear descriptions; the description adds value by providing Mermaid syntax examples and explaining output modes, enriching beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate diagram on Miro from Mermaid code' with examples of use cases and syntax. It differentiates from siblings like miro_create_shape by focusing on bulk diagram generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE WHEN' phrases covering common diagramming tasks. However, lacks guidance on when not to use it or alternatives like individual item creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_app_cardBRead-only
Get details of a specific app card by ID.
VOICE-FRIENDLY: "App card 'API Status' shows 3 custom fields"
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | App card item ID | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| fields | No | |
| status | Yes | |
| message | Yes | |
| geometry | No | |
| position | No | |
| created_at | No | |
| description | Yes | |
| modified_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds no additional behavioral context beyond the annotation, so it meets the baseline but does not exceed it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and direct, with one main sentence and a voice-friendly example. It is concise, though the voice-friendly part may be unnecessary for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and simple parameters, the description is minimally complete. However, it lacks context to differentiate from similar getter tools or explain when to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the input schema. The description adds no extra meaning beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get details of a specific app card by ID,' which uses a specific verb and resource, distinguishing it from sibling tools like create, delete, or update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool instead of alternatives like miro_get_item or miro_get_board_content, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_audit_logARead-only
Query local audit log for MCP tool executions (this session only). Filter by time range, tool, board, action type, or success/failure.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Filter by tool name (e.g., miro_create_sticky) | |
| limit | No | Maximum events to return (default 50, max 500) | |
| since | No | Return events after this time (ISO 8601, e.g., 2024-01-01T00:00:00Z) | |
| until | No | Return events before this time (ISO 8601, e.g., 2024-01-02T00:00:00Z) | |
| action | No | Filter by action type: create, read, update, delete, export, auth | |
| success | No | Filter by success status (true/false) | |
| board_id | No | Filter by board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| events | Yes | |
| message | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds the session scope, which is valuable behavioral context. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, well-structured sentence front-loading the verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers the purpose, scope, and filterable fields. With an output schema present, the lack of return format details is acceptable. The session-scope is clearly highlighted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description only rephrases the filter options already present in the schema, adding no new semantic insight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Query' and the resource 'local audit log for MCP tool executions' with scope 'this session only'. No sibling tool has a similar audit function, so it is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the scope ('this session only'), which helps the agent understand it is for local debugging. It does not provide when-not-to-use or alternatives, but since no other sibling is an audit tool, the lack of exclusion is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_boardARead-only
Get board metadata: name, description, owner, creation date, and sharing policy.
USE WHEN: "who owns this board?", "when was this board created?", "board settings", "tell me about this board"
NOT FOR: Board content overview with item counts (use miro_get_board_summary). Full content export for AI analysis (use miro_get_board_content).
PARAMETERS:
board_id: Required. Get from miro_list_boards or miro_find_board.
RETURNS: Board name, description, owner info, creation/modification timestamps, sharing policy, and view link.
VOICE-FRIENDLY: "Board 'Sprint Planning' owned by Jane, created Jan 15"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| team | No | |
| owner | No | |
| picture | No | |
| viewLink | No | |
| createdAt | No | |
| item_count | No | |
| modifiedAt | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds useful context about what metadata is returned and provides a voice-friendly example, but does not significantly expand beyond annotation. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, parameter details, return info, and a voice-friendly example. Every sentence serves a purpose with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given existence of output schema, description appropriately covers purpose, usage, parameter sourcing, and return types. Complements sibling context and annotations fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single parameter board_id with description 'Board ID to retrieve'. Description adds value by stating it is required and suggesting sources (miro_list_boards or miro_find_board).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves board metadata (name, description, owner, creation date, sharing policy) and explicitly distinguishes from sibling tools miro_get_board_summary and miro_get_board_content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit USE WHEN examples ('who owns this board?', etc.) and NOT FOR cases with specific alternative tools (miro_get_board_summary, miro_get_board_content).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_board_contentARead-only
Get all board content for AI analysis and documentation generation. Returns items by type, frame hierarchy, connectors, and tags. For a quick summary, use miro_get_board_summary instead.
USE WHEN: "analyze this board", "generate documentation from board", "describe everything on this board"
VOICE-FRIENDLY: "Retrieved full content for 'Design Sprint': 26 items across 3 frames, 5 connectors, 2 tags"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID to analyze | |
| max_items | No | Maximum items to fetch (default 500, max 2000) | |
| include_tags | No | Include tag data and usage (default true) | |
| include_connectors | No | Include connector relationships (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| tags | No | |
| frames | No | |
| message | Yes | |
| truncated | Yes | |
| view_link | Yes | |
| connectors | No | |
| created_at | No | |
| description | No | |
| item_counts | Yes | |
| modified_at | No | |
| total_items | Yes | |
| items_by_type | Yes | |
| content_summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true. The description adds context about what is returned (items by type, frame hierarchy, connectors, tags) and includes a voice-friendly output example, complementing the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences plus a USE WHEN phrase and a voice-friendly example. Information is front-loaded, every sentence adds value, and there is no unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values. It covers purpose, usage, alternative, and gives a sample output. Could mention pagination or limits, but max_items parameter addresses that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not significantly add beyond the schema. It implies the boolean parameters by mentioning connectors and tags, but does not explain max_items or provide additional parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get all board content' and the resource, and distinguishes from sibling 'miro_get_board_summary' by specifying that this is for full content for AI analysis and documentation generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit USE WHEN phrases like 'analyze this board', 'generate documentation', and provides an alternative: 'For a quick summary, use miro_get_board_summary instead.' This tells the agent exactly when to invoke this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_board_memberARead-only
Get details of a specific board member.
VOICE-FRIENDLY: "John Smith has editor access"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID | |
| member_id | Yes | Member ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | No | |
| role | Yes | |
| No | ||
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true; description aligns with 'Get details' but adds no extra behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence for purpose plus a voice-friendly example. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read-only nature, 100% schema coverage, and presence of output schema, the description provides sufficient context for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions; description does not add additional meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get details of a specific board member' with a specific verb and resource, distinguishing it from sibling tools like miro_list_board_members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as miro_list_board_members for listing all members or miro_update_board_member for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_board_pictureARead-only
Get the preview image URL for a board. Works for all Miro plans. For full PDF/SVG exports, use the Enterprise export tools.
VOICE-FRIENDLY: "Got preview image for the board"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID to get picture for |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| board_id | Yes | |
| image_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true, so description focuses on additional context: works for all Miro plans and a voice-friendly confirmation. Adds value without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a voice-friendly line. No fluff, information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity, annotations, and output schema, description covers purpose, scope, and alternatives. Sufficient for agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with board_id description. Description does not add parameter details beyond schema, but hints at output type (preview image URL). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get' and resource 'preview image URL for a board'. Distinguishes from sibling tools like miro_get_board that return board data, not image URL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: get preview image only. Provides alternative for full exports: 'For full PDF/SVG exports, use the Enterprise export tools.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_board_summaryARead-only
Get board overview with item counts and statistics. For full content export, use miro_get_board_content instead.
USE WHEN: "summarize this board", "board stats", "what's the overview"
VOICE-FRIENDLY: "Design Sprint has 15 stickies, 8 shapes, and 3 frames - 26 items total"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID to summarize |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| message | Yes | |
| view_link | Yes | |
| description | No | |
| item_counts | Yes | |
| total_items | Yes | |
| recent_items | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, and the description adds that it returns counts and statistics. Slightly unclear on what 'statistics' includes, but overall good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, front-loaded with action, alternative, use cases, and example - no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool with one param and an output schema, the description covers purpose and usage well, but could detail output format more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (board_id) with 100% schema coverage; description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a board overview with item counts and statistics, and distinguishes it from miro_get_board_content for full content export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use this tool via trigger phrases and directs to an alternative for different needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_connectorARead-only
Get full details of a specific connector by ID.
VOICE-FRIENDLY: "This connector links Item A to Item B with a curved arrow"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID | |
| connector_id | Yes | Connector ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| color | No | |
| style | No | |
| caption | No | |
| end_cap | No | |
| message | Yes | |
| start_cap | No | |
| created_at | No | |
| created_by | No | |
| end_item_id | Yes | |
| modified_at | No | |
| modified_by | No | |
| start_item_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, which is the key behavioral trait. The description adds a voice-friendly example of output content but does not elaborate on other behaviors like error handling or response format. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: one clear purpose statement and one voice-friendly note. It is compact, front-loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with a clear purpose, 2 parameters, and an output schema (not shown but present), the description and schema together provide sufficient context. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (board_id and connector_id) with 100% coverage. The tool description does not add any extra meaning or usage guidance for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details of a specific connector by ID. This distinguishes it from siblings like miro_list_connectors (listing) and miro_create_connector (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: when you need details of a single connector by ID. It does not explicitly exclude cases or name alternatives, but the purpose is clear enough among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_desire_pathsARead-only
Query desire path normalizations. Shows what agents tried to send and how it was auto-corrected (URLs in ID fields, camelCase keys, string numbers, etc.). USE WHEN reviewing tool usage patterns to improve descriptions or schemas.
Filter by tool name or normalizer rule. Returns top patterns and recent events.
| Name | Required | Description | Default |
|---|---|---|---|
| rule | No | Filter by normalizer rule: url_to_id, camel_to_snake, string_to_numeric, whitespace, boolean_coercion | |
| tool | No | Filter by tool name (e.g., miro_get_board) | |
| limit | No | Maximum recent events to return (default 20, max 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| by_rule | Yes | |
| by_tool | Yes | |
| message | Yes | |
| by_param | Yes | |
| top_patterns | Yes | |
| recent_events | Yes | |
| total_normalizations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true. Description adds behavioral context about the nature of corrections (URLs in ID fields, camelCase keys, etc.) and what is returned (top patterns and recent events), going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus an imperative usage directive. Every sentence adds value, and the purpose is front-loaded. No redundant or vague language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and parameters are well documented, the description explains the concept sufficiently. It could mention pagination or format, but with output schema, it's not strictly necessary. Complete for a query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents parameters. The description mentions filtering by tool or rule, aligning with parameters, but does not add new meaning beyond implying their use. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries 'desire path normalizations' and shows auto-corrections of tool inputs. It uses specific verbs and resources ('query', 'normalizations', 'auto-corrected'), and distinguishes it from CRUD siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'USE WHEN reviewing tool usage patterns to improve descriptions or schemas,' providing clear context. However, it does not explicitly state when not to use or list alternatives, though the sibling tools list provides implicit contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_docARead-only
Get details of a doc format item by ID.
USE WHEN: User asks "show me that document", "what's in this doc", "read the document"
PARAMETERS:
board_id: Required
item_id: Doc format item ID (required)
RETURNS: Document content (Markdown), position, timestamps.
RELATED: Use miro_create_doc to create new documents. Use miro_delete_doc to remove.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Doc format item ID | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| id | Yes | |
| content | No | |
| message | Yes | |
| created_at | No | |
| created_by | No | |
| modified_at | No | |
| modified_by | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and description adds return type (Markdown, position, timestamps). No contradictions; additional behavioral detail is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear sections (purpose, usage, parameters, returns, related). Some redundancy with schema parameter descriptions, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description covers key return values and usage context. Lacks explanation of 'doc format item' vs other item types, but sibling list provides related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully described in the schema. Description adds no extra meaning beyond labeling them as required, which is already indicated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves a doc format item by ID, with specific verb and resource. However, does not explicitly differentiate from sibling miro_get_document, which may cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE WHEN' examples and mentions related tools (miro_create_doc, miro_delete_doc) for context. Does not include when-not-to-use, but sufficient for typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_documentARead-only
Get details of a document on a Miro board, including its Miro-hosted URL and title. For image items, use miro_get_image instead.
USE WHEN: "get document details", "what document is this", "document URL"
VOICE-FRIENDLY: "Document 'Q4 Report' hosted at Miro"
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Document item ID | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | No | |
| y | No | |
| id | Yes | |
| title | No | |
| width | No | |
| height | No | |
| message | Yes | |
| parent_id | No | |
| document_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, so the description's behavioral disclosure is less critical. It adds context by stating it returns URL and title, and includes a voice-friendly example. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three sentences covering purpose, usage, and a voice-friendly example. No redundant words; front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not detail return values. It covers purpose, usage, and alternative tools sufficiently. Slightly lacking in edge-case information but complete for a straightforward get tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add parameter meaning beyond what the schema provides. Baseline 3 is appropriate as no additional param details are offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get details of a document on a Miro board, including its Miro-hosted URL and title,' using a specific verb and resource. It distinguishes from the sibling tool miro_get_image by explicitly noting when to use that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'USE WHEN' phrases such as 'get document details', 'what document is this', and 'document URL', guiding the agent on appropriate contexts. Also indicates when not to use (for image items).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_export_job_resultsARead-only
Get download links for completed export. ENTERPRISE ONLY. Links expire in 15 min; call again to regenerate.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Export job ID | |
| org_id | Yes | Organization ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| boards | Yes | |
| job_id | Yes | |
| status | Yes | |
| message | Yes | |
| expires_in | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: enterprise restriction, link expiration, and regeneration. Annotations already indicate read-only (readOnlyHint=true), which is consistent. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences. First states purpose, second adds critical details. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key behavioral aspects (enterprise only, expiration) and the existence of an output schema reduces need to explain return values. However, it doesn't mention prerequisites like a completed job, which is slightly implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions ('Export job ID', 'Organization ID'). The description does not add further semantics, but schema coverage is 100%, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves download links for a completed export, using the verb 'Get' and specifying the resource 'download links for completed export'. It distinguishes from siblings like miro_get_export_job_status and miro_create_export_job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides key usage context: 'ENTERPRISE ONLY' and 'Links expire in 15 min; call again to regenerate.' It implies when to use (after export completion) and that expiration is handled by re-calling. It doesn't explicitly state when not to use or provide alternatives, but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_export_job_statusARead-only
Check export job progress. ENTERPRISE ONLY.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Export job ID | |
| org_id | Yes | Organization ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| message | Yes | |
| progress | No | |
| created_at | No | |
| finished_at | No | |
| boards_total | No | |
| boards_exported | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds the enterprise restriction, which is important behavioral context. It does not mention error cases (e.g., invalid job_id), but for a simple status check this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The first sentence states the purpose; the second adds a critical constraint. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) explaining return values. The description covers purpose and enterprise restriction. For a polling tool, it might be helpful to mention retry behavior, but it's not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with basic descriptions. The description adds no extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check' and the resource 'export job progress', distinguishing it from sibling tools like miro_create_export_job and miro_get_export_job_results. The 'ENTERPRISE ONLY' addition provides specific scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests it's for enterprise use only but does not explicitly state when to use this tool versus miro_get_export_job_results or other polling alternatives. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_frameARead-only
Get full details of a specific frame by ID. To get items inside the frame, use miro_get_frame_items.
VOICE-FRIENDLY: "Frame 'Sprint Planning' is 800x600 with 12 items inside"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID | |
| frame_id | Yes | Frame ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| id | Yes | |
| color | No | |
| title | No | |
| width | Yes | |
| height | Yes | |
| message | Yes | |
| created_at | No | |
| created_by | No | |
| child_count | Yes | |
| modified_at | No | |
| modified_by | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is clear. The description adds that it returns 'full details', and the voice-friendly example hints at output content (size, item count). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise: two main sentences plus a one-line voice-friendly example. Every sentence adds value: purpose, sibling guidance, and a concrete output example. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 required params, output schema present, annotations provided), the description is complete. It explains the purpose, directs to sibling, and provides an example. No missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with clear parameter descriptions. The description reinforces that frame_id is for a 'specific frame' but does not add new semantic details beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Get full details of a specific frame by ID'. It uses a specific verb ('Get') and resource ('frame'), and distinguishes from sibling tool 'miro_get_frame_items' by explicitly directing to that tool for items inside.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (get frame details) and provides a clear alternative for a different use case: 'To get items inside the frame, use miro_get_frame_items'. This helps the agent select the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_frame_itemsARead-only
Get all items contained within a specific frame. Filterable by type. For items in a logical group, use miro_get_group_items.
VOICE-FRIENDLY: "Frame has 8 items: 5 stickies, 2 shapes, 1 text"
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by item type: sticky_note, shape, text, card, image | |
| limit | No | Max items to return (default 50, max 100) | |
| cursor | No | Pagination cursor | |
| board_id | Yes | Board ID | |
| frame_id | Yes | Frame ID to get items from | |
| detail_level | No | Response detail level: 'minimal' (default) returns basic fields, 'full' includes style, geometry, timestamps, and creator info |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| cursor | No | |
| message | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only; description adds no behavioral details beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three sentences plus a voice-friendly example, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description covers essential aspects; missing minor guidance on pagination but schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions; description adds no new parameter insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves items within a frame, with filtering ability, and distinguishes from miro_get_group_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one alternative (miro_get_group_items) but lacks guidance on when to use this versus other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_groupARead-only
Get details of a specific group by ID.
VOICE-FRIENDLY: "This group contains 4 items"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID | |
| group_id | Yes | Group ID to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| items | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true, so the description adds minimal behavioral context beyond the voice-friendly snippet, which hints at response content but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence followed by a voice-friendly example, all front-loaded and without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and simple parameters, the description is sufficient for a straightforward retrieval tool, though it could optionally note error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with clear descriptions for both parameters; the description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get details of a specific group by ID', using a specific verb and resource, and differentiating from siblings like miro_get_group_items and miro_list_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to use miro_list_groups instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_group_itemsARead-only
Get items in a group with their details. For items inside a visual frame, use miro_get_frame_items.
VOICE-FRIENDLY: "Group has 4 items: 2 stickies, 1 shape, 1 text"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to return (default 50) | |
| cursor | No | Pagination cursor | |
| board_id | Yes | Board ID | |
| group_id | Yes | Group ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| message | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only behavior (readOnlyHint=true). The description adds context by mentioning 'with their details' and a voice-friendly example, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise: two sentences plus a voice-friendly note. Front-loaded with the primary purpose, then an alternative. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage guidance, and provides an example output. With an output schema present, return values are not needed. Complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the schema. The description adds minimal parameter-specific value beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves items in a group with their details, using specific verb and resource. It also distinguishes from a sibling (miro_get_frame_items) explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names an alternative tool for frame items, providing clear guidance on when to use this tool vs. others. No when-not-to-use conditions, but the sibling differentiation is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_imageARead-only
Get details of an image on a Miro board, including its Miro-hosted URL, title, and dimensions. Use the image_url to download or reference the image. For document items, use miro_get_document instead.
USE WHEN: "get image URL", "what image is this", "image details"
VOICE-FRIENDLY: "Image 'Logo' is 800x600 at position (100, 200)"
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Image item ID | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | No | |
| y | No | |
| id | Yes | |
| title | No | |
| width | No | |
| height | No | |
| message | Yes | |
| image_url | Yes | |
| parent_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, so the description doesn't need to restate idempotency, but it adds little behavioral context beyond mentioning that image_url can be used for downloading. It could mention permissions or pagination but overall meets minimum adequacy given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two main sentences plus brief examples. No redundant information, and the key purpose is stated upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-details tool with an output schema, the description provides enough context: what it returns, when to use it, and an alternative. It misses nothing critical, though it could mention authentication requirements for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not elaborate on the parameters beyond what is in the schema. Baseline 3 is appropriate since the schema describes both board_id and item_id sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and resource 'image details' including specific outputs (URL, title, dimensions). It explicitly distinguishes from sibling tool 'miro_get_document' for document items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'USE WHEN' section provides concrete examples like 'get image URL' and 'image details', and the 'VOICE-FRIENDLY' example shows a natural query. It also mentions an alternative tool for documents, though it could be more explicit about when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_itemARead-only
Get full details of a specific item by ID. If you don't have the item ID, use miro_search_board to find it or miro_list_items to browse.
VOICE-FRIENDLY: "That sticky says 'Review Q4 goals' and was created by John yesterday"
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Item ID to retrieve | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| id | Yes | |
| type | Yes | |
| color | No | |
| shape | No | |
| title | No | |
| width | No | |
| height | No | |
| content | No | |
| parent_id | No | |
| created_at | No | |
| created_by | No | |
| modified_at | No | |
| modified_by | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds that it retrieves 'full details', but does not disclose additional behavioral traits like permissions or rate limits. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two purposeful sentences plus a voice-friendly line. No wasted text; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with an output schema, the description covers how to obtain the item ID and provides a usage example. No missing context given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters. The description does not add any extra parameter information beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full details of a specific item by ID', using a specific verb and resource, and distinguishes from sibling tools like miro_list_items and miro_search_board.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use alternatives: 'If you don't have the item ID, use miro_search_board to find it or miro_list_items to browse.' Also includes a voice-friendly example for natural language queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_items_by_tagARead-only
Get all items on a board that have a specific tag attached.
USE WHEN: User asks "show items tagged Urgent", "what's labeled Done", "find all items with this tag"
PARAMETERS:
board_id: Required
tag_id: Tag ID to filter by (required). Get tag IDs from list_tags.
limit: Max items (default 50, max 50)
offset: Pagination offset
RETURNS: List of items with IDs, types, and content that have the specified tag.
RELATED: Use miro_list_tags to get tag IDs. Use miro_get_item_tags for the reverse lookup (tags on a specific item). Use miro_attach_tag / miro_detach_tag to manage tag assignments.
VOICE-FRIENDLY: "Found 7 items tagged 'Urgent'"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to return (default 50, max 50) | |
| offset | No | Offset for pagination | |
| tag_id | Yes | Tag ID to filter by | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| tag_id | Yes | |
| message | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds that it returns a list of items with IDs, types, and content, and mentions pagination (limit/offset). It does not contradict annotations. Could mention permission requirements, but overall adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (USE WHEN, PARAMETERS, RETURNS, RELATED). Informationally dense but no unnecessary fluff. Minor redundancy (limit max 50 appears twice) but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (so return details are covered), the description covers purpose, parameters, related tools, use cases, and even provides a voice-friendly example. Very complete given the tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage. The description adds value by explaining default/max values for limit, clarifying tag_id is required and how to get it via miro_list_tags, and noting offset is for pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all items with a specific tag on a board, with concrete examples ('show items tagged Urgent'). It distinguishes from sibling tools like miro_get_item_tags (reverse lookup) and miro_attach_tag/detach_tag (management).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a 'USE WHEN' section with relevant user queries. Guides the agent to miro_list_tags for obtaining tag IDs and notes alternatives like miro_get_item_tags for reverse lookup, providing clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_item_tagsARead-only
List tags attached to a specific item.
USE WHEN: User asks "what tags are on this sticky", "show labels for this item"
PARAMETERS:
board_id: Required
item_id: Item ID (required)
RETURNS: List of tags attached to the item.
RELATED: For the reverse lookup (all items with a specific tag), use miro_get_items_by_tag.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ID of the item | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| tags | Yes | |
| count | Yes | |
| item_id | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's added value is minimal. It discloses the return type (list of tags) but no further behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very concise, using clear sections (USE WHEN, PARAMETERS, RETURNS, RELATED). Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context signal), the description sufficiently covers the tool's purpose and usage. No gaps for a simple read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with descriptions. The description only restates required status without adding extra semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List tags attached to a specific item', providing a specific verb and resource. It distinguishes from siblings like miro_get_items_by_tag (reverse lookup) and miro_list_tags (all tags).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes 'USE WHEN' section with clear example queries ('what tags are on this sticky', 'show labels for this item'), and explicitly mentions related tool for reverse lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_mindmap_nodeARead-only
Get mindmap node details including content, hierarchy, and position. Uses v2-experimental API.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Mindmap node ID to retrieve | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| id | Yes | |
| content | Yes | |
| is_root | Yes | |
| message | Yes | |
| child_ids | No | |
| node_view | No | |
| parent_id | No | |
| created_at | No | |
| modified_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by noting it uses a 'v2-experimental API', which informs the agent of potential instability or differences. It does not contradict annotations and provides useful context about the tool's backend.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences with no redundant information. The first sentence states the core purpose, and the second adds the API version note. Every part is necessary and helps the agent understand the tool quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two required params, output schema present, read-only annotation), the description is mostly complete. It could optionally mention that node_id is obtained from list_mindmap_nodes, but that's a minor gap. The experimental API note adds important context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage for both parameters (board_id and node_id). The description does not add additional meaning or clarify parameter formats beyond what the schema provides, which is acceptable given the high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'mindmap node', and specifies the details included (content, hierarchy, position). It effectively distinguishes itself from sibling tools like miro_create_mindmap_node and miro_list_mindmap_nodes by indicating it retrieves a single node's details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. However, the purpose is clear enough that an agent can infer its use for retrieving a specific node's data, while listing or creating nodes are handled by siblings. No explicit when-not-to-use or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_get_tagARead-only
Get details of a specific tag by ID.
VOICE-FRIENDLY: "Tag 'Urgent' is red"
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | ID of the tag to retrieve | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| color | Yes | |
| title | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals the tool is a read operation, which aligns with the readOnlyHint annotation. No contradiction. However, it adds minimal behavioral context beyond the annotation, such as what fields are returned or any error handling, though output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence plus a short voice-friendly example. No superfluous words, every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with good schema, annotations, and output schema, the description is mostly complete. It covers the basic purpose and parameters, but lacks guidance on error handling or what happens if the tag doesn't exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions ('Board ID', 'ID of the tag to retrieve'). The description does not add meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Get details of a specific tag by ID', using a specific verb and resource. It distinguishes from sibling tools like miro_list_tags (list all tags) and miro_get_items_by_tag (get items by tag), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single tag's details by ID, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives like miro_list_tags for listing all tags.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_all_itemsARead-only
Retrieve ALL items from a board with automatic pagination (up to 10000). For quick lookups (max 50), use miro_list_items instead.
USE WHEN: "get everything on board", "list all items", "export board contents"
VOICE-FRIENDLY: "Retrieved 847 items in 9 pages"
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by item type: sticky_note, shape, text, connector, frame, card, image, document, embed | |
| board_id | Yes | Board ID | |
| max_items | No | Maximum total items to fetch across all pages (default 500, max 10000) | |
| detail_level | No | Response detail level: 'minimal' (default) returns basic fields, 'full' includes style, geometry, timestamps, and creator info |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| message | Yes | |
| truncated | Yes | |
| total_pages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses automatic pagination, a maximum of 10000 items, and provides a voice-friendly example. Since annotations already include readOnlyHint=true, the description adds further behavioral context (pagination behavior and limits) without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three main sentences plus a usage phrase and a voice-friendly mock output. Every sentence provides necessary information, and the key action is front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and thorough annotations, the description is complete. It covers the tool's purpose, usage guidelines, behavioral traits (pagination, limit), and provides a sample output. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by highlighting the automatic pagination and the max_items limit (up to 10000), which reinforces the parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves ALL items from a board with automatic pagination up to 10000, and explicitly contrasts with the sibling tool miro_list_items for quick lookups (max 50). This provides a specific verb+resource+scope and distinguishes from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('get everything on board', 'list all items', 'export board contents') and when not to (for quick lookups max 50, use miro_list_items instead), providing clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_board_membersARead-only
List all users who have access to a board.
VOICE-FRIENDLY: "This board has 5 members: 2 editors, 3 viewers"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max members to return (default 50) | |
| offset | No | Pagination cursor | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| members | Yes | |
| message | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm readOnlyHint=true. The description doesn't elaborate on pagination behavior (limit/offset) or potential performance implications, though it's consistent with the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but includes a VOICE-FRIENDLY line that adds minor value; it could be more concise without it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema and annotations, the description is fairly complete. However, it lacks notes on error conditions (e.g., invalid board_id) or pagination specifics, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters (board_id, limit, offset) are fully documented in the schema. The description adds no extra semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action is to list users with board access. It clearly distinguishes from sibling tools like miro_get_board_member (singular) and miro_remove_board_member.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like miro_get_board_member. The VOICE-FRIENDLY line offers a human-readable format hint but doesn't clarify usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_boardsARead-only
List Miro boards accessible to the user. Use board ID for subsequent operations. For a specific board by name, use miro_find_board instead.
VOICE-FRIENDLY: "Found 5 boards: Design Sprint, Product Roadmap, Team Retro..."
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max boards to return (default 20, max 50) | |
| query | No | Search boards by name | |
| offset | No | Pagination cursor | |
| team_id | No | Filter by team ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| boards | Yes | |
| offset | No | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and description reinforces safe reading behavior. It adds context about board ID reuse and includes a voice-friendly example, but does not disclose pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences plus a short example—no redundant words. Front-loaded with core purpose and immediate differentiation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with optional parameters and an output schema, the description covers essential context (scope, sibling differentiation, example). Could mention pagination behavior, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for all 4 parameters, so description does not need to add parameter details. The mention of 'board ID' is useful but not param-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('List') and resource ('Miro boards'), and distinguishes from sibling 'miro_find_board' by specifying that for a specific board by name, the alternative should be used.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use `miro_find_board` for name-based search, implying this tool is for general listing. However, it does not cover when to use other listing tools (e.g., `miro_get_board` for single board details).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_connectorsBRead-only
List all connectors (lines/arrows) on a Miro board.
VOICE-FRIENDLY: "Found 12 connectors on the board"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max connectors to return (default 50, max 100) | |
| cursor | No | Pagination cursor | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| cursor | No | |
| message | Yes | |
| has_more | Yes | |
| connectors | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds minimal behavioral context beyond the fact that it lists connectors. It does not mention pagination behavior (cursor/limit) or that it returns a list, which would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences, including a voice-friendly example. Every sentence is relevant and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description does not need to detail return values. It covers the core action of listing connectors on a board. A small mention of pagination would improve completeness, but it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (limit, cursor, board_id). The description adds no new parameter meaning beyond what the schema provides, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'connectors (lines/arrows) on a Miro board'. It distinguishes from siblings like miro_create_connector and miro_get_connector by focusing on listing all connectors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., miro_get_connector for a single connector, miro_get_board_content for broader content). The description does not provide when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_groupsARead-only
List all groups on a Miro board.
VOICE-FRIENDLY: "Found 3 groups on the board"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max groups to return (default 50) | |
| cursor | No | Pagination cursor | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| cursor | No | |
| groups | Yes | |
| message | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's 'List' aligns. The voice-friendly example adds a minor behavioral cue about output presentation, but it does not disclose pagination limits or other operational traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single sentence and a voice-friendly example—with no unnecessary words. It is well-structured and easily parseable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed. However, the description lacks mention of pagination behavior, edge cases (e.g., no groups found), or ordering, which are not covered by the schema or annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the parameters. The description adds no additional meaning or context to the parameters (board_id, limit, cursor) beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all groups on a Miro board,' specifying the action (list) and resource (groups on a board). It is distinguishable from sibling tools like miro_create_group and miro_delete_group, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as other list tools (e.g., miro_list_items) or filtering options. No context about prerequisites or exclusion criteria is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_itemsARead-only
List items on a Miro board (max 50). For ALL items with auto-pagination, use miro_list_all_items. For text search, use miro_search_board.
USE WHEN: "what's on the board", "show all stickies", "list shapes"
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by item type: sticky_note, shape, text, connector, frame | |
| limit | No | Max items to return (default 50, max 100) | |
| cursor | No | Pagination cursor | |
| board_id | Yes | Board ID | |
| detail_level | No | Response detail level: 'minimal' (default) returns basic fields, 'full' includes style, geometry, timestamps, and creator info |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| items | Yes | |
| cursor | No | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds that items are listed with a max of 50 and supports pagination via cursor, but does not detail response sorting or ordering. Consistent and informative enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a brief 'USE WHEN' line. Every part adds value without redundancy, and the key info is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema (100% coverage), output schema, and annotations, the description covers purpose, limitations, and alternatives. It doesn't mention response ordering, but that is not critical for tool selection. Adequate for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-described in the input schema. The description reiterates the limit but adds no new meaning beyond what the schema provides. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists items on a Miro board with a maximum of 50 items. It distinguishes itself from siblings 'miro_list_all_items' (auto-pagination) and 'miro_search_board' (text search), making purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: use 'miro_list_all_items' for all items with auto-pagination and 'miro_search_board' for text search. The 'USE WHEN' line gives practical examples, aiding correct tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_mindmap_nodesARead-only
List all mindmap nodes on a board. Returns flat list; use parent_id to reconstruct hierarchy. Uses v2-experimental API.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max nodes to return (default 50, max 100) | |
| cursor | No | Pagination cursor | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| nodes | Yes | |
| cursor | No | |
| message | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description adds that it uses a v2-experimental API and returns a flat list. This adds value beyond annotations by disclosing the API version and output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each serving a distinct purpose: listing the action, explaining output structure, and noting the API version. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (pagination, hierarchy reconstruction), the description covers purpose, output format, and API version. An output schema exists, so return values are not needed. Complete for the task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add new information about parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool lists mindmap nodes on a board, which is a specific verb and resource. It clarifies that the output is flat and how to reconstruct hierarchy, distinguishing it from other listing tools like miro_list_tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on using parent_id to reconstruct hierarchy but does not explicitly state when to use this tool over alternatives or when not to use it. Sibling tools are not directly comparable, so implied usage is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_list_tagsARead-only
List all tag definitions on a board with IDs, titles, and colors. Use tag IDs from this response with miro_attach_tag, miro_detach_tag, and miro_get_items_by_tag.
USE WHEN: "show all tags", "what tags exist", "list labels", or before attaching a tag to get its ID
VOICE-FRIENDLY: "Board has 8 tags: Urgent (red), Done (green), Review (blue)..."
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max tags to return (default 50) | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| tags | Yes | |
| count | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true; description adds return content details and usage patterns (IDs used with other tools), enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-loaded with core purpose, followed by usage guidance and voice-friendly example; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple list operation, description covers return fields, usage with siblings, and has output schema; no gaps for an agent to correctly select and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions; description does not add further semantics beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verb 'List' and resource 'tag definitions on a board' with clear output fields (IDs, titles, colors). Distinguishes from siblings by focusing on listing tags only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides USE WHEN examples ('show all tags', 'what tags exist') and a concrete scenario (before attaching a tag to get its ID), aiding correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_remove_board_memberADestructive
Remove a member from a board.
WARNING: This revokes the member's access to the board.
VOICE-FRIENDLY: "Removed member from board"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID | |
| member_id | Yes | Member ID to remove |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| success | Yes | |
| member_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true, and the description adds a specific warning about revoking access, which goes beyond the annotation by clarifying the real-world consequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with purpose, but the voice-friendly phrase is unnecessary for a non-voice context, adding minor bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple operation (two params, output schema present, annotations provided), the description covers purpose and key consequence. It could mention return value but output schema handles that, so it's sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with basic descriptions for board_id and member_id. The tool description does not add any additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and resource 'member from a board', distinguishing it from sibling tools like miro_update_board_member which is for updating, not removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a warning but no explicit context on when to use this tool vs alternatives (e.g., miro_update_board_member). Usage is implied through the destructive nature, but no when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_search_boardARead-only
Search for items containing specific text on a board (case-insensitive). For listing without search, use miro_list_items.
USE WHEN: "find items about X", "search for budget", "which stickies mention deadline"
VOICE-FRIENDLY: "Found 3 stickies mentioning 'budget'"
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by item type: sticky_note, shape, text, frame | |
| limit | No | Max results (default 20, max 50) | |
| query | Yes | Text to search for in item content | |
| board_id | Yes | Board ID to search |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| matches | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context: search is case-insensitive. Annotations already indicate read-only. No contradictions. While it doesn't detail limits or errors, the added voice-friendly example and case-insensitivity are helpful beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two sentences plus a usage block and voice-friendly example. No wasted words, well-structured with clear sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are covered. The description covers purpose, usage guidelines, behavioral context, and provides examples. It is complete for a search tool with good sibling distinction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description does not add significant new semantic details beyond what the schema provides, making the contribution marginal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (search), resource (items on a board), and distinguishes from sibling tool miro_list_items for listing without search. The description is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use examples ('find items about X', 'search for budget') and an explicit alternative for non-search listing. Also includes a voice-friendly output example, guiding the agent on expected response format.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_app_cardC
Update an app card's title, description, status, or custom fields.
VOICE-FRIENDLY: "Updated app card status to 'connected'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| title | No | New title | |
| width | No | New width | |
| fields | No | Updated custom fields (max 5) | |
| status | No | Status: connected, disconnected, disabled | |
| item_id | Yes | App card item ID | |
| board_id | Yes | Board ID | |
| description | No | New description |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| status | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title), so the description must disclose behavioral traits. It only says 'Update', implying mutation, but does not mention permissions, idempotency, side effects, or any constraints. The 'VOICE-FRIENDLY' example adds noise rather than clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with two clear sentences. The 'VOICE-FRIENDLY' line is somewhat extraneous but does not significantly detract. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, all described in schema, the description covers only a subset (title, description, status, custom fields) and ignores x, y, width. An output schema exists but is not referenced. The tool has many siblings; the description fails to provide complete context for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by listing updatable fields (title, description, status, custom fields) but omits x, y, width. This partial addition justifies a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'app card', listing specific fields (title, description, status, custom fields). It distinguishes from siblings like miro_update_card by specifying 'app card', though not explicitly contrasting them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., miro_update_card, miro_update_item). The description simply states what it does, omitting context about prerequisites or situational use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_boardAIdempotent
Update a Miro board's name or description. At least one field must be provided.
VOICE-FRIENDLY: "Updated board name to 'Sprint Planning Q1'"
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the board | |
| board_id | Yes | Board ID to update | |
| description | No | New description for the board |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| message | Yes | |
| view_link | Yes | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotency, and the description adds the 'at least one field' requirement. However, it does not discuss error cases, authentication needs, or side effects beyond the basic update. The information is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, delivered in two sentences and an example. Every element serves a purpose, and the key information is front-loaded, making it efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (three params, one required) and the presence of an output schema and annotations, the description covers the essential aspects. It might lack details on error handling, but overall it is sufficient for a straightforward update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents each parameter. The description adds value by stating the 'at least one field' constraint and providing a concrete example, enhancing usability beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a Miro board's name or description', specifying the action, resource, and fields involved. Among siblings like miro_update_card or miro_update_frame, this one uniquely targets the board itself, providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the important constraint 'At least one field must be provided' and gives a voice-friendly example. Although it does not explicitly list when to use this tool versus others, the sibling tools cover different entity types, making usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_board_memberAIdempotent
Update a board member's role (viewer, commenter, or editor).
VOICE-FRIENDLY: "Updated John's role to editor"
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | New role: viewer, commenter, or editor | |
| board_id | Yes | Board ID | |
| member_id | Yes | Member ID to update |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | No | |
| role | Yes | |
| No | ||
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
IdempotentHint is already in annotations; description adds a voice-friendly example but does not disclose potential side effects, error handling, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two short sentences, no fluff, and front-loaded purpose. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with complete schema, output schema, and annotations, description adequately covers purpose and provides a practical example; missing only minor behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters fully (100% coverage); description adds only a minor illustration without new semantic depth, meeting baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Update a board member's role' with allowed roles listed, distinguishing it from siblings like remove_board_member or update_board.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs siblings like miro_remove_board_member or other update tools, leaving agents to infer context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_cardCIdempotent
Update a card (title, description, due_date, position).
VOICE-FRIENDLY: "Updated card title to 'Review PR'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| title | No | New card title | |
| width | No | New width | |
| item_id | Yes | Card ID to update | |
| board_id | Yes | Board ID | |
| due_date | No | New due date (ISO 8601) or empty to remove | |
| parent_id | No | Move to frame (empty string removes from frame) | |
| description | No | New card description/body |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | No | |
| message | Yes | |
| due_date | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as idempotent. The description does not add behavioral details beyond listing updatable fields; it lacks information about error states, partial updates, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences, front-loading the purpose. The voice-friendly example is an extra but not essential. Some restructuring could improve clarity, but overall it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and an output schema, the description is too minimal. It does not explain partial update semantics (e.g., omitting a field leaves it unchanged), prerequisites, or the effect of null values. The output schema exists, but the description lacks operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description lists some parameters (title, description, due_date, position) but omits x, y, width, parent_id. The voice-friendly example adds limited value. Baseline 3 is appropriate since schema covers details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a card and lists updatable fields (title, description, due_date, position). It is specific to cards, distinguishing it from generic sibling tools like miro_update_item, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like miro_update_item or miro_update_sticky. There is no mention of prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_connectorAIdempotent
Update a connector's style (straight/elbowed/curved), caps, caption, or color.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Connector line color (hex) | |
| style | No | Connector style: straight, elbowed, curved | |
| caption | No | Text label on the connector | |
| end_cap | No | End arrow: none, arrow, filled_arrow, diamond, etc. | |
| board_id | Yes | Board ID | |
| start_cap | No | Start arrow: none, arrow, filled_arrow, diamond, etc. | |
| connector_id | Yes | ID of the connector to update |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation provides idempotentHint=true, indicating safe retries. The description adds no further behavioral details beyond listing updatable fields. It does not disclose side effects, permissions, or partial update behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and key attributes without any redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterized update tool with a comprehensive input schema and output schema present, the description is sufficient. It could mention partial update behavior, but overall it provides the essential information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with well-described parameters. The description merely restates what the schema already provides (e.g., 'style (straight/elbowed/curved)'), adding no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'connector', and lists specific properties (style, caps, caption, color), distinguishing it from siblings that update different Miro items like boards or cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not indicate prerequisites, conditions, or scenarios where other tools would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_documentBIdempotent
Update a document (title, url, position, width).
VOICE-FRIENDLY: "Updated document title"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| url | No | New document URL | |
| title | No | New document title | |
| width | No | New preview width | |
| item_id | Yes | Document ID to update | |
| board_id | Yes | Board ID | |
| parent_id | No | Move to frame (empty string removes from frame) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | No | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The idempotentHint annotation already signals safe retries. The description adds minimal context beyond stating the update action. It does not describe side effects, required permissions, or behavior for null fields. With annotations covering idempotency, a score of 3 reflects adequate but not enhanced transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short: one sentence plus a voice-friendly phrase. It is front-loaded and wastes no words. However, the voice-friendly line is somewhat redundant and could be omitted without loss, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 8 parameters and an output schema, the description does not explain critical behavior like partial updates (only non-null fields are updated) or the effect of parent_id. The tool's complexity is higher than what the brief description conveys, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all parameters. The description reiterates a subset (title, url, position, width) but adds no new semantic detail beyond the schema. Baseline 3 is appropriate as the description does not compensate beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates a document and lists specific fields (title, url, position, width). The verb-resource pair is unambiguous. However, it does not explicitly differentiate from sibling tools like miro_update_item or miro_update_document_from_file, though the name implies a distinct resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or exclusions (e.g., that other item types have dedicated update tools). This forces the agent to rely solely on naming conventions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_document_from_fileA
Replace the file on an existing document item with a new local document file.
USE WHEN: User says "replace this document", "update the PDF", "swap the file on this document". Use this to change the file on an existing document item without creating a new one. For updating metadata only (title, position), use miro_update_document instead.
PARAMETERS:
board_id: Required
item_id: Required. The existing document item to update.
file_path: Absolute path to the new document file (required). Supports: pdf, doc, docx, ppt, pptx, xls, xlsx, txt, rtf, csv. Max 6 MB.
title: New document title
x, y: New position
parent_id: Frame ID to move document into
NOTE: The item must already exist as a document. The file must exist on the local filesystem.
RELATED: To create a new document from file, use miro_upload_document. To update metadata only, use miro_update_document.
VOICE-FRIENDLY: "Replaced document file on item"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| title | No | New document title | |
| item_id | Yes | Document item ID to update | |
| board_id | Yes | Board ID | |
| file_path | Yes | Absolute path to the new document file on disk | |
| parent_id | No | Frame ID to move document into |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | No | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title). The description adds useful behavioral context: file must exist locally, supported formats, max 6 MB, and that the item must already be a document. However, it does not disclose whether the operation is destructive or reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (USE WHEN, PARAMETERS, NOTE, RELATED, VOICE-FRIENDLY). Front-loaded with purpose, no irrelevant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters (3 required) and an output schema exists, the description covers purpose, parameter constraints, usage context, and related tools thoroughly. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by specifying supported file formats and max size for file_path, and clarifying that item_id refers to an existing document item. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it replaces the file on an existing document item with a new local file. It distinguishes from siblings (miro_update_document for metadata only, miro_upload_document for creating new).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'USE WHEN' examples (replace this document, update the PDF, swap the file) and explicitly contrasts with alternative tools for different use cases (metadata updates, creation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_embedCIdempotent
Update an embed (url, mode: inline/modal, dimensions, position).
VOICE-FRIENDLY: "Updated embed settings"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| url | No | New embed URL | |
| mode | No | Display mode: inline or modal | |
| width | No | New embed width | |
| height | No | New embed height | |
| item_id | Yes | Embed ID to update | |
| board_id | Yes | Board ID | |
| parent_id | No | Move to frame (empty string removes from frame) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | No | |
| message | Yes | |
| provider | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the annotations. The idempotentHint annotation is present but not referenced. The description adds no information about error handling, side effects, or the effect of omitting optional parameters. The VOICE-FRIENDLY note is not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with one sentence plus a VOICE-FRIENDLY note. It front-loads the verb and key attributes, but the structure could be improved (e.g., bullet list). There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic purpose but lacks context on behavior (e.g., that unspecified fields remain unchanged) and usage relative to sibling tools. An output schema exists, so return values are not needed. Given the tool's complexity (9 parameters), more context would be beneficial, but the description is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so the schema already explains each parameter. The description repeats 'url, mode: inline/modal, dimensions, position' but adds no extra meaning. Baseline score of 3 is appropriate as the description provides no additional semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Update' and the resource 'an embed', listing updatable attributes (url, mode, dimensions, position). It is specific but does not explicitly differentiate from sibling update tools for other Miro item types. However, the tool name itself implies the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or context for choosing this over sibling tools like miro_update_card or miro_update_sticky.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_frameAIdempotent
Update a frame's title, position, size, or color. At least one field must be provided.
VOICE-FRIENDLY: "Updated frame title to 'Q1 Goals'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| color | No | New background color | |
| title | No | New frame title | |
| width | No | New width | |
| height | No | New height | |
| board_id | Yes | Board ID | |
| frame_id | Yes | Frame ID to update |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool is a mutation (update) and notes the required constraint. Annotations already provide idempotentHint=true, and the description adds context about the VOICE-FRIENDLY format. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences plus a VOICE-FRIENDLY example. Every sentence adds value, and it is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with full schema coverage and an output schema, the description is sufficient. It covers allowed fields and a key constraint, leaving no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds the constraint 'At least one field must be provided', which goes beyond the schema's required parameters and clarifies usage. This extra guidance justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a frame's title, position, size, or color, specifying the verb 'update' and the resource 'frame'. It distinguishes from sibling tools like miro_update_sticky by being specific to frames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a guideline that at least one optional field must be provided, which helps avoid invalid calls. It does not explicitly compare to alternatives, but the context of frames is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_groupAIdempotent
Update a group's member items. Replaces all members; include existing IDs to keep them. Minimum 2 items.
VOICE-FRIENDLY: "Updated group with 5 items"
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | Board ID | |
| group_id | Yes | Group ID to update | |
| item_ids | Yes | New list of item IDs for the group (replaces current items) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| message | Yes | |
| item_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the operation is a complete replacement and imposes a minimum item constraint. Annotations already indicate idempotency; description adds behavioral detail without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with no wasted words. Uses two sentences plus a voice-friendly confirmation example. Information is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (3 parameters, straightforward replacement), the description fully covers the behavior and constraints. An output schema exists, so return values are documented elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaningful context beyond the schema: explains the replacement behavior and minimum item requirement for item_ids. Schema already covers parameter names and descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update a group's member items') and resource, distinguishing it from sibling update tools for different Miro items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides key usage guidance: replacing all members and including existing IDs to keep them, plus a minimum item count. Does not explicitly state when not to use or name alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_imageCIdempotent
Update an image (title, url, position, width).
VOICE-FRIENDLY: "Updated image title to 'Logo'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| url | No | New image URL | |
| title | No | New image title/alt text | |
| width | No | New width (preserves aspect ratio) | |
| item_id | Yes | Image ID to update | |
| board_id | Yes | Board ID | |
| parent_id | No | Move to frame (empty string removes from frame) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | No | |
| title | No | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint but no readOnlyHint or destructiveHint. The description does not disclose behavioral traits beyond stating it's an update, lacking details on side effects, required permissions, or concurrency behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short with no redundant words. The two lines convey purpose and an example efficiently. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema, the description lacks context about the effect of updating an image (e.g., replacement vs modification), failure conditions, or relationship to sibling tools. It is incomplete for a tool with 8 parameters and many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds minimal meaning beyond listing field names. Baseline 3 is appropriate as the description summarizes but does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an image and lists specific fields (title, url, position, width). However, it does not differentiate this tool from sibling tools like miro_update_image_from_file, which also updates an image but from a file source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no context about appropriate usage scenarios. The voice-friendly example adds no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_image_from_fileA
Replace the file on an existing image item with a new local image file.
USE WHEN: User says "replace this image", "swap the screenshot", "update the image file". Use this to change the file on an existing image item without creating a new one. For updating metadata only (title, position), use miro_update_image instead.
PARAMETERS:
board_id: Required
item_id: Required. The existing image item to update.
file_path: Absolute path to the new image file (required). Supports: png, jpg, jpeg, gif, webp, svg.
title: New image title/alt text
x, y: New position
parent_id: Frame ID to move image into
NOTE: The item must already exist as an image. The file must exist on the local filesystem.
RELATED: To create a new image from file, use miro_upload_image. To update metadata only, use miro_update_image.
VOICE-FRIENDLY: "Replaced image file on item"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| title | No | New image title/alt text | |
| item_id | Yes | Image item ID to update | |
| board_id | Yes | Board ID | |
| file_path | Yes | Absolute path to the new image file on disk | |
| parent_id | No | Frame ID to move image into |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | No | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title; no behavioral hints. Description clarifies the operation is a replacement (destructive), requires the item to already exist, and requires the file to be on the local filesystem. Could be more explicit about side effects on the old file, but sufficiently transparent for the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise and well-structured: front-loaded with core action, followed by usage guidelines, parameter list with brief explanations, notes, related tools, and a voice-friendly summary. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, parameters, and related tools. With an output schema present, return values need not be described. Lacks explicit error handling or file validation details, but is otherwise complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds supported file formats for file_path (png, jpg, jpeg, gif, webp, svg) and clarifies parameter roles (e.g., title as alt text, parent_id as frame to move into), providing value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Replace the file on an existing image item with a new local image file,' providing a specific verb and resource. It distinguishes from siblings by explicitly naming miro_update_image (for metadata only) and miro_upload_image (for creating new images).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a 'USE WHEN' section with example user phrases and clear alternatives: 'For updating metadata only, use miro_update_image instead' and 'To create a new image from file, use miro_upload_image.' Provides precise context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_itemAIdempotent
Update any item's content, position, or style. For sticky-specific options (color, shape), use miro_update_sticky. For card fields, use miro_update_card. For shape styling, use miro_update_shape.
USE WHEN: "change sticky text", "move this item", "update the color"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| color | No | New color | |
| width | No | New width | |
| height | No | New height | |
| content | No | New content text | |
| item_id | Yes | Item ID to update | |
| board_id | Yes | Board ID | |
| parent_id | No | Move to new frame |
Output Schema
| Name | Required | Description |
|---|---|---|
| item_id | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, so the safety profile is known. The description adds minimal behavioral context beyond what's in the schema, such as that it updates general attributes without discussing side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences plus a USE WHEN line, front-loaded with purpose, no unnecessary words. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and an output schema, the description adequately covers the general update functionality and points to specialized siblings. It is complete enough for an AI agent to understand when to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully documented in the schema. The description does not add additional meaning beyond paraphrasing 'content, position, or style'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates any item's content, position, or style, and distinguishes itself from siblings by specifying when to use miro_update_sticky, miro_update_card, and miro_update_shape.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when-to-use and when-not-to-use guidance with specific sibling tool names and a dedicated 'USE WHEN' section with example natural language triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_shapeAIdempotent
Update a shape with type-specific options (fill_color, text_color, shape type). For generic updates, use miro_update_item.
VOICE-FRIENDLY: "Updated shape to blue circle"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| color | No | New fill color (hex like #006400) | |
| width | No | New width | |
| height | No | New height | |
| content | No | New text inside shape | |
| item_id | Yes | Shape ID to update | |
| board_id | Yes | Board ID | |
| parent_id | No | Move to frame (empty string removes from frame) | |
| shape_type | No | New shape type: rectangle, circle, triangle, rhombus, round_rectangle, parallelogram, trapezoid, pentagon, hexagon, star, flow_chart_predefined_process, etc. | |
| text_color | No | New text color (hex like #ffffff) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| content | No | |
| message | Yes | |
| shape_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include idempotentHint=true, but the description does not add behavioral details such as side effects or permissions. No contradiction, but no added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a voice-friendly line; no fluff, effectively front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description focuses on type-specific options, but schema includes generic fields (position, size, parent). This could mislead agents into thinking only shape-specific fields are updatable via this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3); description adds value by highlighting key type-specific parameters and providing a concrete voice-friendly example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a shape with type-specific options and distinguishes it from the sibling tool miro_update_item for generic updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool (type-specific shape updates) and when to use miro_update_item (generic updates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_stickyAIdempotent
Update a sticky note with type-specific options (shape: square/rectangle, sticky colors). For generic updates, use miro_update_item.
USE WHEN: "change sticky color", "update sticky to square", "resize sticky note"
VOICE-FRIENDLY: "Updated sticky to yellow square"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| color | No | Sticky color: gray, light_yellow, yellow, orange, light_green, green, dark_green, cyan, light_pink, pink, violet, red, light_blue, blue, dark_blue, black | |
| shape | No | Sticky shape: square or rectangle | |
| width | No | New width | |
| content | No | New text content | |
| item_id | Yes | Sticky note ID to update | |
| board_id | Yes | Board ID | |
| parent_id | No | Move to frame (empty string removes from frame) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| color | No | |
| shape | No | |
| content | No | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include idempotentHint; description does not disclose side effects, permission requirements, or whether updates are partial/overwrite. Could add more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Succinct three-line format with clear sections (description, USE WHEN, VOICE-FRIENDLY); no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks information on prerequisites, error scenarios, and impact on unmentioned fields. Output schema exists but could be more complete for a 9-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions; the description highlights shape and color but adds no novel semantics beyond highlighting type-specificity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates a sticky note with type-specific options like shape and color, and explicitly distinguishes from the generic miro_update_item sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not guidance ('For generic updates, use miro_update_item') and lists example use cases via 'USE WHEN' phrases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_tagAIdempotent
Update a tag's title or color. At least one must be provided.
VOICE-FRIENDLY: "Updated tag to 'Done' with green color"
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | New tag color: red, magenta, violet, blue, cyan, green, yellow, gray, light_green, dark_green, dark_blue, dark_gray, black | |
| title | No | New tag text | |
| tag_id | Yes | ID of the tag to update | |
| board_id | Yes | Board ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| color | Yes | |
| title | Yes | |
| message | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true, consistent with the update operation. The description adds the constraint that at least one of title or color must be provided, which is beyond annotations. No contradictions or missing behavioral details for the simple operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a voice-friendly example. Every sentence adds value: purpose, constraint, and an example for voice interfaces. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 params, 2 required, 100% schema coverage, output schema exists), the description is fully adequate. It covers purpose, constraint, and provides an example. Siblings are differentiated by object type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented. The description adds the cross-parameter constraint that at least one of title or color must be provided, which is not obvious from the schema alone. This adds meaningful guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it updates a tag's title or color, which is a specific verb and resource. It clearly distinguishes from sibling tools like miro_list_tags (listing) and other update tools (different object types).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage constraint ('At least one must be provided') but lacks explicit guidance on when to use this tool versus alternatives. Sibling names provide implicit differentiation, but no when-not-to-use or explicit comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_update_textBIdempotent
Update a text element (content, font_size, color, position).
VOICE-FRIENDLY: "Updated text to 'New Title'"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| color | No | New text color (hex like #1a1a1a) | |
| width | No | New width | |
| content | No | New text content (supports basic HTML: <p>, <a>, <b>, <strong>, <i>, <em>, <u>, <s>) | |
| item_id | Yes | Text item ID to update | |
| board_id | Yes | Board ID | |
| font_size | No | New font size (10-288, default 14) | |
| parent_id | No | Move to frame (empty string removes from frame) | |
| text_align | No | Text alignment: left, center, right |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| content | No | |
| message | Yes | |
| font_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Update' terminology is consistent with the idempotentHint annotation. No additional behavioral traits are disclosed beyond the annotation, which is acceptable but adds no extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with two lines. The first line effectively states purpose, but the second line (voice-friendly example) is marginal and could be removed for better conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions only a subset of parameters (content, font_size, color, position) while omitting others like text_align, width, and parent_id. Given the tool has 10 parameters and an output schema exists, the description should cover all updatable attributes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 10 parameters. The description only lists parameter names without adding new meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Update) and resource (text element) along with specific attributes (content, font_size, color, position), distinguishing it from sibling tools that update other item types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like miro_update_shape or miro_update_sticky is provided. The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_upload_documentA
Upload a local document file to a Miro board.
USE WHEN: User says "upload this document", "add PDF to board", "upload spreadsheet/presentation file". Use this for document files (pdf, doc, docx, ppt, pptx, xls, xlsx, txt, rtf, csv). For images (png, jpg, gif), use miro_upload_image instead.
PARAMETERS:
board_id: Required
file_path: Absolute path to the document file (required). Supports: pdf, doc, docx, ppt, pptx, xls, xlsx, txt, rtf, csv. Max 6 MB.
title: Document title
x, y: Position
parent_id: Frame ID to place document in
NOTE: The file must exist on the local filesystem. For remote documents, use miro_create_document with a URL instead.
RELATED: To upload a local image instead, use miro_upload_image.
VOICE-FRIENDLY: "Uploaded document 'report.pdf' to board"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| title | No | Document title | |
| board_id | Yes | Board ID | |
| file_path | Yes | Absolute path to the document file on disk | |
| parent_id | No | Frame ID to place document in |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | No | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description bears responsibility. It discloses file size limit (6 MB), supported formats, requirement for local file, and notes about remote documents. While it could mention what happens on failure or permissions, it reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: main sentence, USE WHEN, PARAMETERS, NOTE, RELATED, VOICE-FRIENDLY. It is informative without being verbose, every section adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and presence of an output schema, the description covers all necessary aspects: purpose, parameter details, usage context, file constraints, alternatives, and expected feedback. It is complete for an AI agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by specifying valid file formats and size limit for file_path, noting x/y as position, and parent_id as frame. This enriches understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Upload a local document file to a Miro board'), clearly indicating the verb, resource, and scope. It differentiates from siblings like miro_upload_image (for images) and miro_create_document (for remote URLs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'USE WHEN' section listing user phrases such as 'upload this document', and explicitly tells when to use alternatives (miro_upload_image for images, miro_create_document for remote URLs). This provides clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miro_upload_imageA
Upload a local image file to a Miro board.
USE WHEN: User says "upload this image", "add screenshot to board", "upload png/jpg/gif/svg file". Use this for image files (png, jpg, gif, webp, svg). For documents (pdf, docx, pptx), use miro_upload_document instead.
PARAMETERS:
board_id: Required
file_path: Absolute path to the image file (required). Supports: png, jpg, jpeg, gif, webp, svg.
title: Image title/alt text
x, y: Position
parent_id: Frame ID to place image in
NOTE: The file must exist on the local filesystem. For remote images, use miro_create_image with a URL instead.
RELATED: To upload a document file (pdf, docx, etc.), use miro_upload_document.
VOICE-FRIENDLY: "Uploaded image 'screenshot.png' to board"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position | |
| y | No | Y position | |
| title | No | Image title/alt text | |
| board_id | Yes | Board ID | |
| file_path | Yes | Absolute path to the image file on disk | |
| parent_id | No | Frame ID to place image in |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | No | |
| message | Yes | |
| item_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations beyond title, the description carries full burden. It reveals that the tool uploads a local file (mutation), supports specific image formats, requires file existence on filesystem, and is distinct from document/remote uploads. Lacks details on overwrite behavior or error outcomes, but sufficient for safe selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with clear sections (USE WHEN, PARAMETERS, NOTE, RELATED, VOICE-FRIENDLY). Each sentence adds value, no fluff. Front-loaded with main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, an output schema, and sibling tools, the description covers usage context, parameter details, constraints (local file only, formats), and relationships to other tools. Very complete for an upload tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions, so baseline is 3. The description adds value by listing supported extensions for file_path, clarifying title as alt text, and providing overall context for each parameter. This extra detail justifies a score above 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it uploads a local image file to a Miro board, and explicitly differentiates from miro_upload_document (for documents) and miro_create_image (for remote images), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit USE WHEN phrases ('upload this image', 'add screenshot to board'), distinguishes between image vs document uploads, and mentions alternative for remote images (miro_create_image). Also includes a RELATED section.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.22.0- Added
miro_attach_tag - Added
miro_bulk_delete - Added
miro_create_export_job - Added
miro_create_flowchart_shape - Added
miro_create_frame - Added
miro_delete_frame
6 tool updates
v1.22.0- Removed
miro_attach_tag - Removed
miro_bulk_delete - Removed
miro_create_export_job - Removed
miro_create_flowchart_shape - Removed
miro_create_frame - Removed
miro_delete_frame
88 tool updates
v1.21.1- Added
miro_attach_tag - Added
miro_bulk_create - Added
miro_bulk_delete - Added
miro_bulk_update - Added
miro_copy_board - Added
miro_create_app_card - Added
miro_create_board - Added
miro_create_card - Added
miro_create_connector - Added
miro_create_doc - Added
miro_create_document - Added
miro_create_embed - Added
miro_create_export_job - Added
miro_create_flowchart_shape - Added
miro_create_frame - Added
miro_create_group - Added
miro_create_image - Added
miro_create_mindmap_node - Added
miro_create_shape - Added
miro_create_sticky - Added
miro_create_sticky_grid - Added
miro_create_tag - Added
miro_create_text - Added
miro_delete_app_card - Added
miro_delete_board - Added
miro_delete_connector - Added
miro_delete_doc - Added
miro_delete_frame - Added
miro_delete_group - Added
miro_delete_item - Added
miro_delete_mindmap_node - Added
miro_delete_tag - Added
miro_detach_tag - Added
miro_find_board - Added
miro_generate_diagram - Added
miro_get_app_card - Added
miro_get_audit_log - Added
miro_get_board - Added
miro_get_board_content - Added
miro_get_board_member - Added
miro_get_board_picture - Added
miro_get_board_summary - Added
miro_get_connector - Added
miro_get_desire_paths - Added
miro_get_doc - Added
miro_get_document - Added
miro_get_export_job_results - Added
miro_get_export_job_status - Added
miro_get_frame - Added
miro_get_frame_items - Added
miro_get_group - Added
miro_get_group_items - Added
miro_get_image - Added
miro_get_item - Added
miro_get_item_tags - Added
miro_get_items_by_tag - Added
miro_get_mindmap_node - Added
miro_get_tag - Added
miro_list_all_items - Added
miro_list_board_members - Added
miro_list_boards - Added
miro_list_connectors - Added
miro_list_groups - Added
miro_list_items - Added
miro_list_mindmap_nodes - Added
miro_list_tags - Added
miro_remove_board_member - Added
miro_search_board - Added
miro_share_board - Added
miro_update_app_card - Added
miro_update_board - Added
miro_update_board_member - Added
miro_update_card - Added
miro_update_connector - Added
miro_update_document - Added
miro_update_document_from_file - Added
miro_update_embed - Added
miro_update_frame - Added
miro_update_group - Added
miro_update_image - Added
miro_update_image_from_file - Added
miro_update_item - Added
miro_update_shape - Added
miro_update_sticky - Added
miro_update_tag - Added
miro_update_text - Added
miro_upload_document - Added
miro_upload_image
88 tool updates
v1.20.1- Removed
miro_attach_tag - Removed
miro_bulk_create - Removed
miro_bulk_delete - Removed
miro_bulk_update - Removed
miro_copy_board - Removed
miro_create_app_card - Removed
miro_create_board - Removed
miro_create_card - Removed
miro_create_connector - Removed
miro_create_doc - Removed
miro_create_document - Removed
miro_create_embed - Removed
miro_create_export_job - Removed
miro_create_flowchart_shape - Removed
miro_create_frame - Removed
miro_create_group - Removed
miro_create_image - Removed
miro_create_mindmap_node - Removed
miro_create_shape - Removed
miro_create_sticky - Removed
miro_create_sticky_grid - Removed
miro_create_tag - Removed
miro_create_text - Removed
miro_delete_app_card - Removed
miro_delete_board - Removed
miro_delete_connector - Removed
miro_delete_doc - Removed
miro_delete_frame - Removed
miro_delete_group - Removed
miro_delete_item - Removed
miro_delete_mindmap_node - Removed
miro_delete_tag - Removed
miro_detach_tag - Removed
miro_find_board - Removed
miro_generate_diagram - Removed
miro_get_app_card - Removed
miro_get_audit_log - Removed
miro_get_board - Removed
miro_get_board_content - Removed
miro_get_board_member - Removed
miro_get_board_picture - Removed
miro_get_board_summary - Removed
miro_get_connector - Removed
miro_get_desire_paths - Removed
miro_get_doc - Removed
miro_get_document - Removed
miro_get_export_job_results - Removed
miro_get_export_job_status - Removed
miro_get_frame - Removed
miro_get_frame_items - Removed
miro_get_group - Removed
miro_get_group_items - Removed
miro_get_image - Removed
miro_get_item - Removed
miro_get_item_tags - Removed
miro_get_items_by_tag - Removed
miro_get_mindmap_node - Removed
miro_get_tag - Removed
miro_list_all_items - Removed
miro_list_board_members - Removed
miro_list_boards - Removed
miro_list_connectors - Removed
miro_list_groups - Removed
miro_list_items - Removed
miro_list_mindmap_nodes - Removed
miro_list_tags - Removed
miro_remove_board_member - Removed
miro_search_board - Removed
miro_share_board - Removed
miro_update_app_card - Removed
miro_update_board - Removed
miro_update_board_member - Removed
miro_update_card - Removed
miro_update_connector - Removed
miro_update_document - Removed
miro_update_document_from_file - Removed
miro_update_embed - Removed
miro_update_frame - Removed
miro_update_group - Removed
miro_update_image - Removed
miro_update_image_from_file - Removed
miro_update_item - Removed
miro_update_shape - Removed
miro_update_sticky - Removed
miro_update_tag - Removed
miro_update_text - Removed
miro_upload_document - Removed
miro_upload_image
TDQS
Scored across 88 tools
Despite 88 tools, each has a very specific purpose and detailed descriptions clarify differences. Some overlap exists between similar creation tools (e.g., miro_create_doc vs miro_create_text), but the descriptions effectively guide selection. Overall, an agent can distinguish tools with reasonable confidence.
All tools follow a consistent 'miro_verb_noun' snake_case pattern. This makes the tool set predictable and easy to navigate. There are no deviations or mixing of conventions.
With 88 tools, the server is far beyond the typical well-scoped range of 3-15. This extreme number suggests over-fragmentation and could overwhelm agents, increasing selection complexity and cognitive load.
The server covers virtually all Miro board operations: CRUD for every item type, board management, member management, export, search, bulk operations, tagging, auditing, and diagram generation. No obvious gaps exist; the surface is fully featured for the domain.
Maintenance
Related MCP Connectors
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
Official Miro MCP server - Supports context to code and creating diagrams, docs, and data tables.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server to connect to the MIRO Whiteboard Application. Allows Board manipulation, sticky creation, bulk operations and more.49 npm112Apache 2.0
- AlicenseBqualityCmaintenanceMiro MCP server, exposing all functionalities available in official Miro SDK.97210 npm66Apache 2.0
- AlicenseAqualityAmaintenanceMCP server for MediaWiki wikis. Search, read, edit, and manage wiki content from AI assistants. Includes formatting, link checking, revision history, and markdown conversion.4320MIT
- AlicenseNot gradedqualityDmaintenanceThis repository contains an implementation of an Miro Universal MCP (Model Context Protocol) server. It provides a standardized interface for interacting with Miro's tools and services through a unified API.1MIT