OmniGraffle BindCraft
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OmniGraffle BindCraftCreate a flowchart for user login process"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
omnigraffle-bindcraft
OmniGraffle automation skill + MCP server for AI coding agents. Create publication-quality scientific diagrams, flowcharts, and architecture diagrams via natural language.
Features
36 MCP tools for full OmniGraffle control: shapes, connections, layout, export
Smart arrow routing — auto-selects straight / orthogonal / curved based on shape positions; hop-over arcs at crossings
6 journal color palettes — Nature, Science, Cell, Lancet, Minimal, Vibrant
6 diagram templates — experimental workflow, data pipeline, PRISMA, system architecture, ML pipeline, clinical trial
2658 IconPark icons across 38 categories
Batch operations — create dozens of shapes and connections in single calls
Hub magnets — distribute connection points to prevent arrow pile-ups
Dual automation — Omni Automation JS + JXA/AppleScript
Related MCP server: Draw.io MCP Server
Requirements
macOS (OmniGraffle is macOS-only)
OmniGraffle 7 (Pro recommended for full scripting support)
Node.js >= 18
Python 3 with
cairosvg— for icon SVG-to-PNG conversion (optional, only needed for icons)
Installation
Quick install (auto-detects runtime)
git clone https://github.com/Youn-17/omnigraffle-bindcraft.git
cd omnigraffle-bindcraft
npm install
bash scripts/install.shThe install script auto-detects Claude Code, Codex, and WorkBuddy, then:
Builds the project
Adds the MCP server to each runtime's config
Copies the skill file to each runtime's skills directory
Manual install
npm run buildAdd to ~/.claude/settings.json:
{
"mcpServers": {
"omnigraffle": {
"command": "node",
"args": ["/absolute/path/to/omnigraffle-bindcraft/dist/index.js"]
}
}
}Install the skill:
cp .claude/skills/sci-diagram.md ~/.claude/skills/omnigraffle-bindcraft.mdnpm run buildAdd to ~/.workbuddy/.mcp.json:
{
"mcpServers": {
"omnigraffle": {
"command": "node",
"args": ["/absolute/path/to/omnigraffle-bindcraft/dist/index.js"]
}
}
}Install the skill:
cp .claude/skills/sci-diagram.md ~/.workbuddy/skills/omnigraffle-bindcraft.mdnpm run buildAdd to ~/.codex/config.json:
{
"mcpServers": {
"omnigraffle": {
"command": "node",
"args": ["/absolute/path/to/omnigraffle-bindcraft/dist/index.js"]
}
}
}Any agent supporting the Model Context Protocol can use this server. Add the MCP entry to your agent's config — the format is the same across runtimes.
Set up IconPark icons (optional)
git clone https://github.com/bytedance/IconPark.git resources/iconpark
pip install cairosvgQuick start
Once installed, just describe what you want in natural language:
Create a RAG pipeline diagram in OmniGraffle with 10 components:
User Query, Query Analyzer, Intent Router, Knowledge Retrieval,
LLM Reasoning Core, Tool Executor, Evidence Checker,
Response Generator, Safety Filter, Final Response.
Use Nature palette. Export to Desktop.See examples/demo_rag_pipeline.md for a full walkthrough.
Tools (36)
Document & Canvas (8)
Tool | Description |
| Get document name, path, canvases |
| Create new document (optionally from template) |
| Save current document |
| List all available OmniGraffle templates |
| Create a new canvas |
| List all canvases |
| Switch to a canvas by index |
| Set canvas dimensions |
Shapes (6)
Tool | Description |
| Create a shape with type, position, size, text, and full styling |
| Create multiple shapes in one call |
| Update any property of an existing graphic |
| Delete graphics by ID |
| List all graphics with properties |
| Remove all graphics from canvas |
Connections (4)
Tool | Description |
| Connect two shapes with styled, auto-routed line |
| Batch connect with smart routing ( |
| Create a standalone line between points |
| Set connection points on a shape for clean arrow distribution |
Layout & Organization (6)
Tool | Description |
| Apply automatic layout |
| Align graphics (left/center/right/top/bottom) |
| Create a new layer |
| List all layers |
| Group graphics together |
| Ungroup a group |
Icons (5)
Tool | Description |
| Search 2658 IconPark icons by keyword |
| List all 38 icon categories |
| Get icon suggestions for a scientific context |
| Insert a colored icon onto the canvas |
| Create a labeled shape with an icon inside |
Palettes & Templates (4)
Tool | Description |
| List all 6 scientific color palettes |
| Get a palette's full color values |
| List all 6 diagram templates |
| Get a template's nodes, icons, and palette |
Export & Scripting (4)
Tool | Description |
| Export to PNG, PDF, or SVG |
| Execute Omni Automation JavaScript |
| Execute JXA code |
| Execute AppleScript |
Smart arrow routing
The connect_shapes_batch tool supports line_type: "auto" which automatically picks the best routing:
Shape relationship | Auto-selected type | Why |
Same column (Δx < 60px) |
| Clean vertical drop |
Same row (Δy < 30px) |
| Direct horizontal |
Cross-column & cross-row |
| Right-angle turns |
Target above source |
| Avoids overlap with forward flow |
All connections automatically get HopType.Round for clean crossing arcs.
Color palettes
Palette | Best for | Style |
| General science papers | Clean, high-contrast, colorblind-safe |
| Bold research graphics | Vivid but balanced |
| Biology, life sciences | Elegant muted tones |
| Clinical, medical | Professional ocean blue + orange |
| Grayscale print | Maximum print compatibility |
| Posters, presentations | High-saturation, eye-catching |
Architecture
AI Agent <── MCP Protocol ──> MCP Server (Node.js)
│
┌─────────────┼─────────────┐
│ │ │
Omni Automation JXA/AS IconPark
(evaluateJS) (osascript) (cairosvg)
│ │ │
└──────┬──────┘ SVG → PNG
│
OmniGraffle 7Development
npm run dev # Watch mode — recompiles on changes
npm run build # One-time build
npm start # Run the server directlyLicense
MIT
Credits
IconPark by ByteDance — 2658 high-quality SVG icons
OmniGraffle by The Omni Group
Model Context Protocol by Anthropic
Available Tools
37 toolsalign_graphicsC
Align multiple graphics relative to each other
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | IDs of graphics to align | |
| alignment | Yes | Alignment direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states the purpose, omitting details like whether it modifies graphics in place, requires selection, or produces side effects. This is insufficient given the lack of 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, well-front-loaded sentence that immediately conveys the tool's core action. Every word earns its place with no fluff.
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 good schema coverage, the description lacks information on return values, error conditions, or behavioral details (e.g., whether the operation is undoable). A minimal viable description would include such context for a mutation 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?
The input schema already provides clear descriptions for both parameters ('ids' and 'alignment'), achieving 100% coverage. The description adds no extra meaning beyond what the schema states, 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 states the specific action 'align' and resource 'multiple graphics' with 'relative to each other', clearly indicating the operation. It is distinct from siblings like 'auto_layout' which implies automatic arrangement, but does not explicitly differentiate.
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 'auto_layout' or 'group_graphics'. No context on prerequisites or limitations, leaving the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_layoutA
Apply automatic layout to the current canvas. OmniGraffle will arrange all connected shapes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states that the tool arranges connected shapes, but does not mention side effects (e.g., permanent modification, undoability, or impact on unconnected elements).
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 with no wasted words. Every sentence adds value: the first states the action, the second clarifies scope.
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 zero parameters and no output schema, the description is adequate for a simple action. However, it could be more complete by specifying whether the layout applies to all shapes or only selected ones, and whether it uses a specific algorithm.
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 tool has zero parameters and the schema coverage is 100%, so there is no param information to add. The description meets the baseline of 4 by being clear about the action, though it could optionally explain implicit behavior or defaults.
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 'apply' and the resource 'automatic layout', and specifies that it arranges all connected shapes on the current canvas. This distinguishes it from sibling tools like connect_shapes or align_graphics, which have different purposes.
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. There is no mention of prerequisites, edge cases, or situations where other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_canvasA
Remove all graphics from the current canvas
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the effect but lacks details about irreversibility, confirmation prompts, or whether the action is undoable. However, it is straightforward and not misleading.
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?
A single sentence that efficiently conveys the tool's purpose 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 there are no parameters and no output schema, the description is complete enough for a simple clearing tool. It could mention any return value or confirmation, but this is minor.
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 no parameters, so schema description coverage is 100%. The description does not need to add parameter information, and 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 action ('Remove all graphics') and the target ('from the current canvas'), distinguishing it from sibling tools like delete_graphics which remove specific graphics.
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 use when clearing the entire canvas, but it does not explicitly state when to use this tool versus siblings like delete_graphics, nor does it provide context 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.
connect_shapesB
Connect two shapes with a line/arrow. The line automatically routes between the shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Text label on the line | |
| head_type | No | Arrow at target end (default: "FilledArrow") | |
| line_type | No | Line routing style | |
| source_id | Yes | Source shape ID | |
| tail_type | No | Arrow at source end (default: "" = none) | |
| target_id | Yes | Target shape ID | |
| stroke_color | No | ||
| stroke_thickness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description mentions auto-routing but lacks detail on mutation behavior, permissions, or side effects. For a tool that modifies a diagram, more transparency is needed.
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 with no unnecessary words. Front-loaded key action and 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?
With 8 parameters, a nested object, and no output schema, the description is incomplete. It does not explain return values, error conditions, or full behavior.
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 75%, and the description does not add any additional meaning beyond what the schema provides. 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 connects two shapes with a line/arrow and notes automatic routing. It uses a specific verb ('connect') and resource ('shapes'), and distinguishes from siblings like connect_shapes_batch and create_line.
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 connect_shapes_batch or create_line. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_shapes_batchA
Connect multiple pairs of shapes at once with full styling. Supports auto-routing: when line_type is 'auto', picks straight for vertical/horizontal neighbors, orthogonal for cross-column, curved for feedback loops.
| Name | Required | Description | Default |
|---|---|---|---|
| connections | Yes | Array of connections to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It transparently explains auto-routing behavior, which is a key trait beyond basic connection. It does not mention permissions, side effects, or error handling, but the described behavior is sufficient for a 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 extremely concise with two sentences. The first sentence states the core purpose, and the second provides specific behavioral detail on auto-routing. 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?
Given no output schema, the description adequately covers the main operation and key behavioral aspect (auto-routing). It could mention return values or limitations, but for a batch creation tool with good schema, it is fairly 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?
With 100% schema coverage, baseline is 3. The description adds value by explaining the auto-routing logic for 'line_type' (e.g., straight for vertical/horizontal neighbors) which is not detailed in the schema. This enhances understanding 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 the tool connects multiple pairs of shapes with full styling, using specific verbs and resource. It distinguishes from sibling tools like 'connect_shapes' (single) and 'create_line' (different operation) by emphasizing batch and styling.
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 on when to use 'auto' line_type with routing examples (straight for vertical/horizontal neighbors, etc.). However, it does not explicitly state when to prefer this tool over alternatives like 'connect_shapes' or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_canvasB
Create a new canvas in the current document
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Canvas name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It only states 'Create', implying mutation, but offers no details about side effects, permissions, 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?
Single, efficient sentence with no waste. However, it is overly brief and could include additional context without losing 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?
For a simple creation tool with one parameter and no output schema, the description is adequate but minimal. Missing details like return value or effect on the current document state.
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%. The description adds no meaning beyond the schema's 'Canvas name' for the 'name' parameter, so baseline 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 the verb 'Create', the resource 'canvas', and the scope 'in the current document'. It distinguishes from sibling tools like 'create_document' and 'create_layer'.
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, no prerequisites or exclusions mentioned. The description is purely functional without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_documentA
Create a new OmniGraffle document, optionally from a built-in template
| Name | Required | Description | Default |
|---|---|---|---|
| template | No | Template name, e.g. "图表/层级化流程图". Use get_document_info on an existing doc to discover available templates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the creation action but does not disclose side effects (e.g., whether it opens a new window), permissions needed, or return behavior. The behavior is straightforward, but transparency is minimal.
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 is front-loaded with the main action and includes the key optional feature 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?
For a simple tool with one optional parameter and no output schema, the description covers the core purpose. It could explicitly mention that omitting template creates a blank document, but it is still 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%, and the schema parameter description provides adequate detail (example, discovery method). The overall description adds the 'optionally from a built-in template' context, but this is already implied by the optional parameter. 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 'create' and the resource 'new OmniGraffle document', with the optional template feature. It distinguishes from sibling tools like create_shape and create_canvas by focusing on the document level.
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. The parameter description suggests using get_document_info to discover templates, but there is no discussion of exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_layerB
Create a new layer on the current canvas
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Layer name | |
| visible | No | Layer visibility (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description only states the basic action. Does not disclose side effects (e.g., whether the new layer becomes active, its position in the layer stack, or any prerequisites).
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 sentence with clear verb and object. Front-loaded and zero 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?
Given the tool's simplicity and full schema coverage, the description is adequate but could mention the result (e.g., layer added to canvas) or default behavior. No output schema, so missing return info is acceptable.
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 minimal value beyond parameter names. No additional context about parameter behavior (e.g., default visibility, name uniqueness) is provided.
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 specific action ('create') and resource ('layer') with context ('on current canvas'), clearly distinguishing from sibling tools like create_canvas or create_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?
No guidance on when to use this tool versus alternatives (e.g., when to create a layer vs. a shape). No explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lineB
Create a standalone line between two points (not attached to shapes)
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| points | Yes | Array of points the line passes through | |
| head_type | No | Arrow head/tail type: "FilledArrow", "Arrow", "DoubleArrow", "Bar", "FilledCircle", "Circle", "FilledDiamond", "Diamond", "Crowfoot", "StickArrow", or "" for none | |
| tail_type | No | ||
| stroke_color | No | ||
| stroke_thickness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only mentions 'standalone line between two points (not attached to shapes)' and does not disclose behavioral traits such as default styling, layer placement, or whether the line can have more than two points (despite the schema allowing multiple points). This is insufficient for a tool with 6 parameters.
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, concise sentence that front-loads the core purpose. No unnecessary words or redundant information. It 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?
Given the tool's complexity (6 parameters, nested objects, no output schema), the description is severely incomplete. It does not explain return values, default behaviors, or constraints like the number of points. The user would need to inspect the schema extensively to understand 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?
The schema description coverage is only 33%, and the description adds no information about any of the 6 parameters. It does not explain the meaning or usage of parameters like label, head_type, tail_type, stroke_color, or stroke_thickness. The description fails to compensate for the low schema 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 action (create) and the resource (standalone line), and distinguishes it from shapes by specifying 'not attached to shapes', which differentiates it from sibling tools like connect_shapes and create_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 hints at when to use this tool—for lines not attached to shapes—but does not explicitly provide when-not or alternative tools. With siblings like connect_shapes, the user might need more explicit guidance. The context is implied but not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_node_with_iconB
Create a labeled shape with an icon inside — perfect for scientific diagram nodes. The icon is placed above the text label within the shape.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X position | |
| y | Yes | Y position | |
| label | Yes | Node label text | |
| width | No | Node width (default 160) | |
| height | No | Node height (default 80) | |
| font_name | No | ||
| icon_name | Yes | IconPark icon name | |
| text_size | No | ||
| fill_color | No | ||
| icon_color | No | Icon color as hex | |
| shape_type | No | Shape type (default "RoundedRectangle") | |
| text_color | No | ||
| corner_radius | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the layout (icon above text) but omits important behavioral traits like defaults (e.g., width, height, shape_type), what happens if parameters are missing, whether the shape is added to a canvas, or any potential side effects. With no annotations, the description carries the full 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?
The description is two sentences, front-loaded with purpose, and contains no extraneous information. 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 13 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, error conditions, or interaction with the canvas. More context is needed for a complex 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?
The description adds only a hint about icon placement relative to text. For parameters like x, y, font_name, etc., the description provides no additional meaning beyond the schema. With 62% schema coverage, the description should compensate more but does not.
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 'create' and the resource 'labeled shape with an icon inside', and specifies a use case 'perfect for scientific diagram nodes'. This distinguishes it from sibling tools like create_shape (which may not include icons) and insert_icon (which is separate).
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 create_shape or create_shapes_batch. The description does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_shapeC
Create a shape on the current canvas with position, size, text, and styling
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X position in points | |
| y | Yes | Y position in points | |
| name | No | Graphic name for identification | |
| text | No | Text label inside the shape | |
| width | Yes | Width in points | |
| height | Yes | Height in points | |
| shadow | No | Draw shadow | |
| font_name | No | Font name, e.g. "Helvetica-Bold" | |
| text_size | No | Font size in points | |
| fill_color | No | RGBA color with components from 0 to 1 | |
| shape_type | Yes | Shape type: "Rectangle", "RoundedRectangle", "Circle", "Diamond", "HorizontalCylinder", "VerticalCylinder", "RightTriangle", "Star", "Hexagon", "Octagon", "Cloud", "Arrow", "DoubleArrow", etc. | |
| text_color | No | RGBA color with components from 0 to 1 | |
| layer_index | No | Target layer index | |
| stroke_color | No | RGBA color with components from 0 to 1 | |
| corner_radius | No | Corner radius (for RoundedRectangle) | |
| stroke_thickness | No | Stroke width in points |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description fully responsible. It only mentions creation without disclosing behavior like return values, error handling, or side effects. Does not explain what happens if shape_type is invalid or if creation succeeds.
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 sentence that is front-loaded and to the point. No unnecessary words. Earns its place by summarizing the tool's 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?
Despite 16 parameters and 5 required, the description provides minimal context. No explanation of 'current canvas', return values, or error scenarios. Output schema missing. Agent likely needs more info 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 description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond summarizing parameters ('position, size, text, and styling'), but does not explain relationships or constraints 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?
The description clearly states 'Create a shape on the current canvas' with key attributes. It distinguishes from sibling tools like 'create_line' and 'create_node_with_icon' implicitly, but does not explicitly differentiate.
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., 'create_line', 'create_shapes_batch'). No when/when-not context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_shapes_batchA
Create multiple shapes at once. Returns an array of created shape IDs. More efficient than calling create_shape multiple times.
| Name | Required | Description | Default |
|---|---|---|---|
| shapes | Yes | Array of shapes to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions return value but omits crucial behavioral traits like atomicity, error handling, batch limits, or ordering, which are important for a batch mutation 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?
Two sentences with no filler: clearly states purpose, return value, and efficiency benefit. Very concise 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?
While the description covers basic purpose and return, it lacks information on batch limits, atomicity, and potential errors. Given the complexity of the batch operation and no output schema, more detail would be beneficial.
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 in the schema. The tool description adds no additional meaning beyond the schema, meeting the baseline but not exceeding it.
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 multiple shapes at once'), specifies the resource ('shapes'), and distinguishes from the sibling 'create_shape' by emphasizing batching and efficiency.
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 suggests using this tool when efficiency matters over multiple calls to 'create_shape', but does not state when not to use it (e.g., single shape creation or non-batch contexts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_graphicsB
Delete one or more graphics by ID
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Array of graphic IDs to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'delete', omitting details on reversibility, effects on related objects, or batch behavior like atomicity.
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 sentence conveys purpose without waste; appropriately concise.
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?
Adequate for a simple deletion tool, but lacks mention of return values or error cases; no output schema to compensate.
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 description for 'ids' parameter; tool description adds 'by ID' but does not elaborate beyond 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?
Description clearly states the action (delete), resource (graphics), and method (by ID), distinguishing it from sibling tools like update_graphic or create_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?
No guidance on when to use this tool versus alternatives, no prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_canvasB
Export the current canvas to an image file (PNG, PDF, or SVG)
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Export scope (default: "current canvas") | |
| format | Yes | Export format | |
| output_path | Yes | Absolute path for the output file, e.g. /Users/you/Desktop/diagram.png |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It does not disclose side effects such as file overwrite behavior, required permissions, or error handling. Basic write operation details are missing.
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 sentence, front-loaded with key information. Efficient, but could expand slightly on scope without significant 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?
For a file export tool with no output schema and no annotations, the description lacks behavioral details (overwrite, error handling) and does not mention the 'all canvases' option. Despite low param count, more completeness is needed.
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 baseline is 3. The description adds format and path examples but no additional meaning beyond the schema for scope.
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 'Export' and the resource 'current canvas', with specific formats (PNG, PDF, SVG). It distinguishes from sibling tools, none of which are export-related.
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 exporting the current canvas, but does not mention the scope parameter (all canvases) or provide guidance on when to use over alternatives like save_document. No explicit when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diagram_templateA
Get full details of a diagram template including nodes, suggested icons, and palette
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes | Template name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It correctly states it returns details, but lacks information on mutability, authorization needs, or any side effects. For a simple retrieval tool, the description is adequate but not exceptional.
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 concise sentence that front-loads the key action and output. Every word 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 absence of an output schema, the description partly compensates by listing returned elements. However, it does not detail the structure or format of the response, leaving some context incomplete for an AI 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 the schema already fully documents the 'template' parameter with its enum values. The description does not add additional semantic meaning or examples 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 uses a specific verb 'Get full details of a diagram template' and lists included content (nodes, suggested icons, palette), clearly distinguishing this from tools like list_diagram_templates that merely list template names.
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 use after listing templates, but does not explicitly state when to use this tool versus alternatives like list_diagram_templates or list_templates. No 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_infoA
Get information about the current OmniGraffle document: name, canvases, current canvas, and graphics count
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It correctly indicates a read-only information retrieval operation with no side effects. It doesn't mention permissions or latency but is adequate for the simple nature of the 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?
One sentence, front-loaded with the main action, and lists specifics efficiently. 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?
The tool is simple with no parameters and no output schema. The description fully covers what the tool does and what it returns, making it complete for an agent to understand and invoke 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?
No parameters exist, so baseline is 4. The description adds value by specifying what information is returned, which exceeds the schema coverage of 100% (trivially for no params).
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 information about the current OmniGraffle document' and specifies the exact data returned (name, canvases, current canvas, graphics count). It is distinct from sibling tools which are action-oriented (create, delete, align).
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 when to use this tool (when you need document metadata) but does not explicitly state alternatives or when not to use it. However, given its unique read-only nature among siblings, the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_graphicsA
List all graphics on the current canvas with their properties (ID, type, position, size, text, style)
| Name | Required | Description | Default |
|---|---|---|---|
| canvas_index | No | Canvas index (default: current) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states what is listed but does not mention if there are side effects (likely none), permissions, rate limits, or behavior on empty canvas. Insufficient for a read 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?
Single sentence, no wasted words, front-loaded with the action and resource. 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?
For a simple list tool with no output schema, the description lists the properties returned (ID, type, position, size, text, style), which is helpful. Could detail format of position/size, 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 description coverage is 100% for the single parameter (canvas_index). The tool description adds no additional meaning beyond the schema's description. 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 uses a specific verb 'List' and resource 'graphics on the current canvas', and lists the returned properties. It clearly distinguishes from sibling tools like align_graphics or delete_graphics.
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 when to use (needing to see all graphics on current canvas) but does not specify when not to use or mention alternatives explicitly. It's adequate but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paletteB
Get a specific color palette with all color values ready to use
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | Palette name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states 'ready to use' but does not describe the return format, side effects, or authentication needs. The behavioral details are insufficient for an agent to fully understand what happens.
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 with no wasted words. It is front-loaded and direct, though a slightly more structured format (e.g., listing what is returned) would improve usability.
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 no output schema, the description should hint at the return value. It says 'all color values' but lacks specifics on format or structure. The tool is simple with one parameter, so the description is minimally adequate but not fully 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?
The schema covers 100% of parameters with an enum and description. The description adds 'all color values ready to use' but does not elaborate on the parameter beyond its name. Schema already provides sufficient meaning, 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 'Get', the resource 'specific color palette', and the outcome 'with all color values ready to use'. It differentiates from sibling 'list_palettes' which likely lists palette names, 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?
The description implies use when you have a palette name and want its colors, but does not explicitly state when to use this tool vs 'list_palettes' or other siblings. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
group_graphicsC
Group multiple graphics together
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | IDs of graphics to group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It merely states 'Group multiple graphics together' without disclosing side effects (e.g., whether grouping is reversible, if it creates a new container, or if it affects canvas state). This is insufficient for a mutation 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 extremely concise at five words, front-loading the key information. No wasted text, though it could arguably include more context without losing 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?
Given low complexity (1 parameter, no output schema), the description is too brief. It does not explain the result of grouping (e.g., behavior of the group, how to ungroup, or error handling), leaving the agent with an incomplete 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?
The input schema has 100% coverage with a clear description for the 'ids' parameter. The tool description adds no additional meaning beyond what the schema provides, meeting the 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?
The description 'Group multiple graphics together' uses a specific verb ('Group') and resource ('graphics'), clearly indicating the action and distinguishing it from the sibling tool 'ungroup'. It is unambiguous and concise.
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., when to group vs. align or connect shapes). The description does not mention exclusions or prerequisites, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_iconA
Insert an IconPark icon onto the OmniGraffle canvas as an image. The icon is rendered as a PNG with optional color customization.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X position | |
| y | Yes | Y position | |
| size | No | Icon size in points (default 48) | |
| color | No | Icon color as hex, e.g. "#2563eb". Default is black. | |
| png_size | No | PNG render resolution (default 128px for crisp display) | |
| icon_name | Yes | Icon name from search_icons, e.g. "database", "chart-line" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden. It states the icon is rendered as PNG with optional color customization, but omits details like how the canvas is affected, whether the icon replaces existing elements, or if any selection occurs. Given the complexity of canvas operations, more disclosure is warranted.
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, no redundant words. Every part earns its place: action, resource, rendering output, and customization option.
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 core purpose and rendering, but lacks context for a 6-parameter tool: no mention of icon source coupling (search_icons), coordinate system, or interaction with other canvas objects. It is adequate but not 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 coverage is 100%, so baseline is 3. The description adds minimal value beyond the schema, only reinforcing 'PNG' and 'color customization'. It does not explain coordinate system, default behavior for size/png_size, or validation rules for icon_name.
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 verb 'Insert', the resource 'OmniGraffle canvas', and the specific type of icon (IconPark) as an image rendered as PNG. This clearly differentiates from sibling tools like create_node_with_icon, which likely creates a node shape rather than an image.
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 inserting icons as images but does not explicitly state when to prefer this tool over siblings like create_node_with_icon or suggest_icons. No guidance on prerequisites (e.g., document must be open) or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_canvasesA
List all canvases in the current document with their graphics count
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description indicates a read-only listing operation, which is adequate but does not disclose any potential side effects, limits, or return format. It adds the graphics count detail but is minimal.
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, concise sentence that immediately conveys the action and scope. Every word 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 simple list operation with no parameters and no output schema, the description is adequate. It states what is listed and the included information, though it could clarify 'current document' 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?
With zero parameters, the tool does not require parameter documentation. The description adds no parameter-specific meaning, but baseline 4 applies per rubric.
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 specifies a clear verb 'List' and resource 'canvases', and adds the distinct feature 'with their graphics count', differentiating it from siblings like 'create_canvas' or 'list_layers'.
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 'list_layers' or 'get_graphics'. The description implies its function but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diagram_templatesB
List available scientific diagram templates with their node structures and suggested palettes/icons
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool lists templates with node structures and palettes/icons, implying a read operation. However, it does not explicitly state that it is read-only, nor does it mention any potential side effects or limitations.
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, efficient sentence with no wasted words. It front-loads the key 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 list tool with no parameters, the description is adequate. However, it omits details like whether results are paginated, any default ordering, or how it differs from sibling 'list_templates'. Given the existence of other list tools, more context would help.
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?
There are no parameters, so the baseline is 4. The description adds value by specifying what is listed (node structures, palettes/icons), which goes beyond the empty 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 lists scientific diagram templates with node structures and palettes/icons. The verb 'List' and specific resource 'scientific diagram templates' make the purpose clear. However, it does not explicitly distinguish this from sibling 'list_templates', which might be more general, causing potential 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?
No guidance is provided on when to use this tool over alternatives such as 'list_templates' or 'get_diagram_template'. There is no mention of context, prerequisites, 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.
list_icon_categoriesA
List all IconPark icon categories with their icon counts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, but it only states that the tool lists categories and counts. It does not disclose any behavioral traits like pagination, rate limits, or side effects, though the tool is a simple read operation, so this is adequate but minimal.
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, clear sentence with no unnecessary words. Every part earns its place, providing the essential verb, resource, and scope.
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 no parameters, no output schema, and low complexity, the description adequately explains what it does. It does not describe the return format, but for a simple listing tool, this 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?
The input schema has zero parameters, so schema coverage is 100%. Per guidelines, baseline is 4 for 0 params, and the description does not need to add parameter info. It provides no additional parameter semantics, but that is acceptable.
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 all IconPark icon categories with their icon counts, specifying the verb 'list' and the resource 'IconPark icon categories', which distinguishes it from siblings like search_icons or insert_icon.
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 search_icons or suggest_icons. The description does not mention any prerequisites or contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_layersA
List all layers on the current canvas
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states the action without mentioning side effects (likely read-only), output format, or any constraints. This is insufficient for full 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 a single sentence that conveys the purpose efficiently 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 no parameters, no output schema, and the tool's simplicity, the description is adequate but could benefit from mentioning the return format or that it is a 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?
There are zero parameters, so the baseline is 4. The description does not need to add parameter meaning, and the schema coverage is 100%.
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 'layers' with a specific scope ('on the current canvas'). This distinguishes it from sibling tools like list_canvases or get_graphics.
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 this tool is for retrieving all layers on the current canvas, but it provides no explicit guidance on when to use it versus alternatives, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_palettesA
List available scientific color palettes (Nature, Science, Cell, Lancet, Minimal, Vibrant)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, but the description accurately states the tool lists palettes—a safe, read-only operation. It adds no details beyond the action, but for a straightforward list, this 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?
A single informative sentence that includes examples, with no wasted words 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 zero parameters and a simple action, the description fully covers what the tool does. No output schema needed.
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?
There are no parameters, so the baseline is 4. The description adds no parameter info, but it is not needed.
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 uses a specific verb 'List' and explicitly names the resource 'available scientific color palettes' with examples (Nature, Science, etc.), clearly distinguishing it from sibling tools like 'get_palette' which retrieves a specific palette.
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: call this to see available palettes before using 'get_palette'. It does not explicitly state when not to use or mention alternatives, but the sibling list makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesA
List all available OmniGraffle templates
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description's claim of listing templates implies a read-only operation, but it does not explicitly state side effects or safety. The behavior is straightforward, so a mid-score is appropriate.
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, clear sentence with no wasted words. It is perfectly concise 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?
For a simple list tool with no parameters or output schema, the description is nearly complete. However, the lack of differentiation from 'list_diagram_templates' slightly undermines 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?
There are no parameters, and the schema coverage is 100%. The description adds no parameter info, which is acceptable given the baseline of 4 for zero 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 lists all available OmniGraffle templates, using a specific verb and resource. However, it does not differentiate between this and the sibling 'list_diagram_templates', 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?
No guidance is provided on when to use this tool versus alternatives like 'list_diagram_templates'. The description lacks context for selection, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_applescriptA
Execute AppleScript code. Use for operations that work better with AppleScript syntax.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | AppleScript code to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only says 'Execute AppleScript code' without disclosing behavioral traits like error handling, side effects, security implications, or result format, which is a significant gap for a code execution 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 extremely concise with two sentences, front-loading the core purpose, and contains no redundant 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 absence of an output schema and the potentially powerful nature of AppleScript, the description lacks sufficient detail on return values, error behavior, and limitations, making it incomplete for an agent to use safely and effectively.
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 covers 100% of parameters, and the description doesn't add meaning beyond what the schema provides. 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 'Execute AppleScript code' (verb+resource) and distinguishes from siblings like run_jxa and run_omni_js by specifying the scripting language.
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 phrase 'Use for operations that work better with AppleScript syntax' provides a clear context for when to choose this tool over alternatives, though it doesn't explicitly state 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.
run_jxaA
Execute JXA (JavaScript for Automation) code via osascript. Use for operations that need the macOS scripting bridge, such as file system access combined with OmniGraffle control.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | JXA code. Access OmniGraffle via Application("OmniGraffle"). Return a result as the last expression. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions using osascript and accessing OmniGraffle, and hints at return values, but does not discuss potential side effects, permissions, or system impact.
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, no filler, front-loaded with purpose. 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 single-parameter tool with full schema and sibling tools, the description covers purpose, usage, and basic behavior. Could include more on error handling or output, but adequate overall.
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 a clear parameter description. The description adds some context (e.g., 'Return a result as the last expression') but does not significantly exceed the schema's already good description.
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 executes JXA code via osascript and gives a specific use case (file system access combined with OmniGraffle control), distinguishing it from siblings like run_applescript and run_omni_js.
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 says when to use it ('operations that need the macOS scripting bridge'), but does not explicitly mention when not to use it or name alternatives, though siblings exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_omni_jsA
Execute arbitrary Omni Automation JavaScript inside OmniGraffle. The code runs in OmniGraffle's JS context with access to the full Omni Automation API. Use for operations not covered by other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Omni Automation JavaScript code. Has access to `document`, `app`, `Canvas`, `Shape`, `Line`, `Color`, `Rect`, `Point`, `Size`, etc. Return a result by making the last expression a string (e.g. JSON.stringify({...})). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions code has access to the full Omni Automation API and lists available objects, but lacks warnings about potential destructive side effects or error behavior. Adequate but could be more 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?
Two sentences, zero waste. The first sentence states the purpose, the second provides usage guidance and return hint. Efficiently packaged.
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 is simple with one parameter and no output schema. The description covers purpose, when to use, and parameter details. It does not mention error handling or security implications, but for a code execution tool, it is reasonably complete. Loses one point for missing potential behavioral notes.
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% (one parameter), baseline 3. The description adds significant value beyond the schema by listing available globals (document, app, Canvas, etc.) and explaining how to return a result (last expression as string).
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 executes arbitrary Omni Automation JavaScript inside OmniGraffle, specifying the verb 'execute' and resource. It also distinguishes from siblings by noting it's for operations not covered by other 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?
Explicit guidance to use this tool for operations not covered by other tools, implying when not to use (i.e., if another tool exists for the operation). This effectively addresses when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_documentA
Save the current OmniGraffle document
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behavioral details. It does not explain whether the save prompts for a location, overwrites unsaved changes, or requires an existing file path.
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, concise sentence with no extraneous information, earning its place with efficient wording.
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 a save action and no parameters or output schema, the description is minimally adequate but lacks context on save behavior (e.g., silent vs. dialog, file path 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?
There are no parameters, so the description does not need to add parameter semantics. The baseline for zero parameters is 4, and the description adds no unnecessary detail.
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 ('Save') and the resource ('the current OmniGraffle document'), distinguishing it from siblings like create_document or export_canvas.
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 explicit guidance on when to use this tool versus alternatives, but the simple action and name imply its basic use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_iconsA
Search IconPark icons by keyword. Returns matching icon names that can be used with insert_icon. 2658 icons available across 38 categories.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| query | Yes | Search keyword, e.g. "database", "chart", "brain", "network" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description transparently states the output (icon names) and provides scope (2658 icons, 38 categories). It lacks details on pagination or error handling but is sufficient for a search 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 two sentences, front-loading the core action and purpose. Every sentence adds value, with no redundant 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?
For a simple search tool with two parameters and no output schema, the description covers usage, output type, and contextual details (icon count, categories). It is complete enough for an agent to understand when and how to invoke 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 coverage is 100%, so the schema already defines parameters. The description adds value with example keywords for 'query' and clarifies the 'limit' maximum (50) and default (20), beyond the schema's minimum/maximum.
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-resource combination: 'Search IconPark icons by keyword.' It distinguishes this tool from siblings like suggest_icons and list_icon_categories by focusing on keyword search and mentioning compatibility with insert_icon.
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 context by noting the tool returns icon names for use with insert_icon and mentions the total count and categories. However, it does not explicitly exclude scenarios or compare with similar tools like suggest_icons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_canvas_sizeC
Set the size of the current canvas
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Canvas width in points | |
| height | Yes | Canvas height in points | |
| canvas_index | No | Canvas index (default: current) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It does not mention side effects (e.g., whether existing canvas content is preserved), permissions needed, or constraints beyond schema. For a mutation tool, this is insufficient.
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 single-sentence description is concise and front-loaded with the key action. No wasted words, though slightly more detail could improve without harming 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 lacks information about return values or side effects, especially important since no output schema exists. Sibling tools exist, making it incomplete for an agent to understand the full 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 description coverage is 100%, with clear descriptions for width, height, and canvas_index. The description adds no extra meaning beyond the schema, meeting the baseline 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 'Set the size of the current canvas' clearly states the verb (set) and resource (canvas size), making the purpose obvious. It does not explicitly differentiate from sibling tools like 'create_canvas' or 'switch_canvas', but the action is distinct enough.
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 'create_canvas' or 'switch_canvas'. No conditions, prerequisites, or exclusions are mentioned, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_magnetsA
Set magnet (connection) points on a shape. Magnets define where lines can attach.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Shape ID | |
| magnets | Yes | Magnet positions relative to shape center. Use (0, -0.5) for top, (0, 0.5) for bottom, (-0.5, 0) for left, (0.5, 0) for right. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states 'set' but does not disclose whether magnets are replaced or appended, any side effects, or permissions required. This leaves ambiguity about the mutation 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?
Two sentences, no fluff, front-loaded with the core action. Every word is necessary and earned.
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 tool with 2 parameters and no output schema, the description is brief but missing context on whether magnets replace or add to existing ones, and whether the shape must exist. This gap reduces 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?
The input schema has 100% description coverage, with detailed examples for magnet positions. The tool description itself adds no extra semantic value beyond 'Set magnet points', so the schema does the heavy lifting.
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 sets magnet points on a shape, which are attachment points for lines. It uses specific verb 'Set' and resource 'magnet points on a shape', distinguishing it from sibling tools like connect_shapes.
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 when-to-use or when-not-to-use guidance is given. The purpose implies it is for defining attachment points before connecting lines, but alternatives are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_iconsB
Get icon suggestions for a scientific diagram context. Provide a description and get relevant icon names.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Description of the diagram element, e.g. "data processing step" or "machine learning model" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavior. It states the tool returns 'icon names' but does not mention the number of suggestions, potential latency, or whether it requires external resources. The description lacks details on side effects or permissions, which are important for a tool that likely performs a read 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 a single concise sentence that efficiently conveys the core function. It is front-loaded and contains no redundant information. However, it could be slightly more informative without sacrificing conciseness, 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?
Given the tool's simplicity (one parameter, no output schema), the description is incomplete. It does not explain the return format (e.g., list of names, maybe with relevance scores) or any pagination or limits. Without an output schema, the description should provide more detail on what the agent can expect as a result.
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% description coverage for the single parameter 'context', with a clear example. The tool description adds no additional meaning beyond what the schema already provides. Hence, the description meets the baseline for a well-documented parameter but does not exceed it.
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: 'Get icon suggestions for a scientific diagram context'. It specifies the action (suggest icons), the input (a description), and the output (icon names). This distinguishes it from sibling tools like 'search_icons' and 'insert_icon', which have different functions.
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 when one needs icon suggestions from a description, but it does not explicitly compare with alternatives like 'search_icons' or state when not to use it. There is no guidance on prerequisites or limitations, leaving the agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_canvasB
Switch to a different canvas by index (0-based)
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Canvas index (0-based) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose what happens if the index is out of bounds or if the canvas is already active. It only implies a state change.
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 with no wasted words, achieving maximum 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?
For a simple tool with one parameter and no output schema, the description covers the essential purpose and parameter. It lacks mention of return value or error handling but is generally complete given the simplicity.
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 adds little beyond the schema's own description of the parameter. '0-based' is already in the schema. No additional semantics provided.
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 ('Switch'), the resource ('canvas'), and the method ('by index (0-based)'). It distinguishes from sibling tools like 'create_canvas' or 'list_canvases'.
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. For instance, it doesn't mention that index must be valid or that switching by name might be achieved via other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ungroupB
Ungroup a group graphic
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Group graphic ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose behavioral traits like mutability, side effects, or permissions. It does not mention that ungrouping is destructive or what happens to child elements.
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 short sentence that directly states the action 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?
For a mutation tool with no output schema, the description fails to explain the result or behavior after ungrouping, leaving an incomplete picture for the 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?
The input schema provides 100% coverage with a clear description for the 'id' parameter. The tool 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 'Ungroup a group graphic' uses a specific verb and resource, clearly distinguishing from sibling tools like 'group_graphics' and 'update_graphic'.
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 the tool is used to ungroup a group graphic but provides no explicit guidance on when to use it versus alternatives, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_graphicC
Update properties of an existing graphic by ID
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position | |
| y | No | New Y position | |
| id | Yes | Graphic ID | |
| name | No | ||
| text | No | New text | |
| width | No | New width | |
| height | No | New height | |
| rotation | No | Rotation in degrees | |
| font_name | No | ||
| text_size | No | ||
| fill_color | No | RGBA color with components from 0 to 1 | |
| shape_type | No | New shape type | |
| text_color | No | RGBA color with components from 0 to 1 | |
| stroke_color | No | RGBA color with components from 0 to 1 | |
| corner_radius | No | ||
| stroke_thickness | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully convey behavioral traits. It only states 'Update properties', implying mutation, but fails to disclose side effects, permissions, error conditions, or that it performs a partial update. This is insufficient for safe and correct usage.
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 with no fluff, but it is too brief for a tool with 16 parameters. It is appropriately concise for the purpose but sacrifices important context, making it minimally adequate.
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 lack of output schema and the large number of parameters, the description is incomplete. It does not clarify that only specified properties are updated, the required 'id' parameter, or the result of the update. The tool's complexity demands more detail.
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 69%, below the 80% threshold, so the description needs to add meaning. It only mentions 'by ID' and 'Update properties', adding no semantics beyond the schema for the 16 parameters. The description does not compensate for the uncovered 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 action 'Update' and the resource 'graphic by ID', providing a specific verb and resource. However, it does not differentiate from sibling tools that also act on graphics, such as 'create_shape' or 'delete_graphics', limiting its clarity in a multi-tool 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?
The description offers no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or related tools like create_shape for creating graphics, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes, but some overlap exists (e.g., connect_shapes vs connect_shapes_batch, run_* tools) that could cause minor confusion. Descriptions help differentiate, but an agent might still select the wrong tool occasionally.
The majority of tools follow verb_noun pattern (create_shape, list_canvases), but a few deviate (auto_layout, ungroup) and run_applescript/run_jxa use different casing. Overall consistent and readable.
37 tools is on the higher side, covering many features of OmniGraffle and including auxiliary tools (icon search, palettes). While each serves a purpose, the set feels somewhat heavy and could be streamlined by removing rarely-used scripting tools.
The tool set covers core CRUD operations, layout, grouping, exporting, and includes batch operations and scripting. Minor gaps like missing import or full shape modification properties, but generally well-rounded for diagram creation and automation.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create and edit architecture diagrams from your AI agent; get an SVG and a live editable canvas.
AI agent draws editable hand-drawn diagrams (flowchart, ER, architecture) via MCP, not static images
Create, read and live-edit visual boards, Kanban plans, Gantt timelines and diagrams with AI agents.
Build and run visual creative-production workflows from your AI agent.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables AI agents to programmatically create, modify, and analyze Draw.io diagrams through the Model Context Protocol. Supports generating architectural diagrams, flowcharts, and visualizations with bidirectional communication between AI systems and Draw.io.13911,455MIT
- AlicenseAqualityBmaintenanceEnables AI agents to generate, view, and analyze engineering diagrams (RF, PCB, EMC) in draw.io using natural language prompts, with auto-layout and 269 engineering stencils.109AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to create, modify, and analyze diagrams using Draw.io (Diagrams.net) through MCP commands.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Youn-17/omnigraffle-bindcraft'
If you have feedback or need assistance with the MCP directory API, please join our Discord server