Skip to main content
Glama
Youn-17

OmniGraffle BindCraft

by Youn-17

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.sh

The 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 build

Add 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.md
npm run build

Add 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.md
npm run build

Add 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 cairosvg

Quick 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_info

Get document name, path, canvases

create_document

Create new document (optionally from template)

save_document

Save current document

list_templates

List all available OmniGraffle templates

create_canvas

Create a new canvas

list_canvases

List all canvases

switch_canvas

Switch to a canvas by index

set_canvas_size

Set canvas dimensions

Shapes (6)

Tool

Description

create_shape

Create a shape with type, position, size, text, and full styling

create_shapes_batch

Create multiple shapes in one call

update_graphic

Update any property of an existing graphic

delete_graphics

Delete graphics by ID

get_graphics

List all graphics with properties

clear_canvas

Remove all graphics from canvas

Connections (4)

Tool

Description

connect_shapes

Connect two shapes with styled, auto-routed line

connect_shapes_batch

Batch connect with smart routing (line_type: "auto")

create_line

Create a standalone line between points

set_magnets

Set connection points on a shape for clean arrow distribution

Layout & Organization (6)

Tool

Description

auto_layout

Apply automatic layout

align_graphics

Align graphics (left/center/right/top/bottom)

create_layer

Create a new layer

list_layers

List all layers

group_graphics

Group graphics together

ungroup

Ungroup a group

Icons (5)

Tool

Description

search_icons

Search 2658 IconPark icons by keyword

list_icon_categories

List all 38 icon categories

suggest_icons

Get icon suggestions for a scientific context

insert_icon

Insert a colored icon onto the canvas

create_node_with_icon

Create a labeled shape with an icon inside

Palettes & Templates (4)

Tool

Description

list_palettes

List all 6 scientific color palettes

get_palette

Get a palette's full color values

list_diagram_templates

List all 6 diagram templates

get_diagram_template

Get a template's nodes, icons, and palette

Export & Scripting (4)

Tool

Description

export_canvas

Export to PNG, PDF, or SVG

run_omni_js

Execute Omni Automation JavaScript

run_jxa

Execute JXA code

run_applescript

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)

straight

Clean vertical drop

Same row (Δy < 30px)

straight

Direct horizontal

Cross-column & cross-row

orthogonal

Right-angle turns

Target above source

curved

Avoids overlap with forward flow

All connections automatically get HopType.Round for clean crossing arcs.

Color palettes

Palette

Best for

Style

nature

General science papers

Clean, high-contrast, colorblind-safe

science

Bold research graphics

Vivid but balanced

cell

Biology, life sciences

Elegant muted tones

lancet

Clinical, medical

Professional ocean blue + orange

minimal

Grayscale print

Maximum print compatibility

vibrant

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 7

Development

npm run dev    # Watch mode — recompiles on changes
npm run build  # One-time build
npm start      # Run the server directly

License

MIT

Credits

Available Tools

37 tools
align_graphicsC

Align multiple graphics relative to each other

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesIDs of graphics to align
alignmentYesAlignment direction

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoText label on the line
head_typeNoArrow at target end (default: "FilledArrow")
line_typeNoLine routing style
source_idYesSource shape ID
tail_typeNoArrow at source end (default: "" = none)
target_idYesTarget shape ID
stroke_colorNo
stroke_thicknessNo

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionsYesArray of connections to create

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCanvas name

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
templateNoTemplate name, e.g. "图表/层级化流程图". Use get_document_info on an existing doc to discover available templates.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name
visibleNoLayer visibility (default: true)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
pointsYesArray of points the line passes through
head_typeNoArrow head/tail type: "FilledArrow", "Arrow", "DoubleArrow", "Bar", "FilledCircle", "Circle", "FilledDiamond", "Diamond", "Crowfoot", "StickArrow", or "" for none
tail_typeNo
stroke_colorNo
stroke_thicknessNo

TDQS

B3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position
yYesY position
labelYesNode label text
widthNoNode width (default 160)
heightNoNode height (default 80)
font_nameNo
icon_nameYesIconPark icon name
text_sizeNo
fill_colorNo
icon_colorNoIcon color as hex
shape_typeNoShape type (default "RoundedRectangle")
text_colorNo
corner_radiusNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position in points
yYesY position in points
nameNoGraphic name for identification
textNoText label inside the shape
widthYesWidth in points
heightYesHeight in points
shadowNoDraw shadow
font_nameNoFont name, e.g. "Helvetica-Bold"
text_sizeNoFont size in points
fill_colorNoRGBA color with components from 0 to 1
shape_typeYesShape type: "Rectangle", "RoundedRectangle", "Circle", "Diamond", "HorizontalCylinder", "VerticalCylinder", "RightTriangle", "Star", "Hexagon", "Octagon", "Cloud", "Arrow", "DoubleArrow", etc.
text_colorNoRGBA color with components from 0 to 1
layer_indexNoTarget layer index
stroke_colorNoRGBA color with components from 0 to 1
corner_radiusNoCorner radius (for RoundedRectangle)
stroke_thicknessNoStroke width in points

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapesYesArray of shapes to create

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesArray of graphic IDs to delete

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoExport scope (default: "current canvas")
formatYesExport format
output_pathYesAbsolute path for the output file, e.g. /Users/you/Desktop/diagram.png

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
templateYesTemplate name

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_indexNoCanvas index (default: current)

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
paletteYesPalette name

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesIDs of graphics to group

TDQS

C2.9/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position
yYesY position
sizeNoIcon size in points (default 48)
colorNoIcon color as hex, e.g. "#2563eb". Default is black.
png_sizeNoPNG render resolution (default 128px for crisp display)
icon_nameYesIcon name from search_icons, e.g. "database", "chart-line"

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesAppleScript code to execute

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesJXA code. Access OmniGraffle via Application("OmniGraffle"). Return a result as the last expression.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesOmni 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

A4.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
queryYesSearch keyword, e.g. "database", "chart", "brain", "network"

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesCanvas width in points
heightYesCanvas height in points
canvas_indexNoCanvas index (default: current)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShape ID
magnetsYesMagnet 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

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescription of the diagram element, e.g. "data processing step" or "machine learning model"

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesCanvas index (0-based)

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGroup graphic ID

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoNew X position
yNoNew Y position
idYesGraphic ID
nameNo
textNoNew text
widthNoNew width
heightNoNew height
rotationNoRotation in degrees
font_nameNo
text_sizeNo
fill_colorNoRGBA color with components from 0 to 1
shape_typeNoNew shape type
text_colorNoRGBA color with components from 0 to 1
stroke_colorNoRGBA color with components from 0 to 1
corner_radiusNo
stroke_thicknessNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

B3.3/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityStale
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables 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.
    13
    91
    1,455
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    10
    9
    AGPL 3.0

Latest Blog Posts

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