SVG Lab
Server Details
SVG Lab MCP: the Design Engine for AI. App screens, icons, illustrations and charts as SVG.
- Status
- Healthy
- Uptime
- 44.1% over 41 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- ottoman9/svglab-mcp
- GitHub Stars
- 0
- Server Listing
- svglab
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 90 tools
The 90 tools include many adjacent operations that are easy to confuse: align vs align_to_artboard vs distribute vs snap_to_grid; fit_to_box vs fit_to_children vs resize; create_path vs create_shapes vs pencil vs draw_svg; and inspect_layout vs check_contacts. The detailed descriptions help, but an agent still faces unclear boundaries among layout, path, measurement, and export tools.
Names are consistently lowercase snake_case, but they follow mixed patterns: pure verbs (align, distribute, group), verb_noun forms (create_layout, set_text), and noun/status names (docs, account_status, current_project). The set is readable, but there is no single predictable naming convention.
Ninety tools is far beyond a practical, scannable toolset and creates high selection overhead even for a broad vector design application. Many narrow operations could be consolidated into fewer higher-level tools.
The surface covers a wide design lifecycle: projects, artboards, shapes, paths, text, symbols, layouts, styles/tokens, assets/photos, inspection, illustration, and several export formats. Some lifecycle conveniences such as undo/redo or project deletion are not obvious, but the coverage is otherwise strong.
Available Tools
90 toolsaccount_statusCheck account accessARead-onlyIdempotentInspect
Report the plan, access, SVG Lab credits left and what actions cost.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so safety is covered. The description adds real value beyond them by enumerating the report's contents, which is important since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, leading with the verb and listing the exact fields returned. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no params and no output schema, the description must carry the return-value burden, and it does list the reported items. It could go slightly further on format or when status should be re-checked, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document beyond what the schema shows; baseline 4 applies and no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (report) and enumerates the concrete content: plan, access, SVG Lab credits, action costs. Clearly distinct from every sibling (which are drawing/layout/project operations), though 'access' is a slightly vague term.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/when-not statement or named alternatives. Usage is only implied: the mention of 'credits left and what actions cost' hints it should be consulted before spending credits, but the agent must infer that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_artboardAdd artboardBInspect
Add a screen, slide, page or post (preset sizes it). What a control opens (dropdown, filter, menu) is add_hidden_ui.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | No | ||
| tone | No | base, inverse (a dark page) or accent (a page in the accent colour), in the project's own palette: a deck's rhythm of light, dark and colour slides. | |
| width | No | ||
| height | No | ||
| preset | No | A page size by name: slide_16x9 (1920 x 1080), slide_4x3, a4_portrait, a4_landscape, letter, letter_landscape, poster_a3, poster_18x24, ig_feed (1080 x 1350), ig_square, ig_story (1080 x 1920), x_post, linkedin, youtube_thumb. In place of width and height. | |
| background | No | ||
| show_background | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose write semantics (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so safety is covered externally. The description adds the behavioral fact that preset drives sizing and overrides explicit dimensions, but says nothing about which project/artboard it lands in, defaults for name or position, or what it returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action first and the sibling exclusion second — zero padding. The parenthetical '(preset sizes it)' is terse to the point of being slightly cryptic about precedence over width/height.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter creation tool with no required params and no output schema, the description omits critical call-time context: default naming, default placement, background visibility behavior, and the target project. An agent could call it but would be guessing on most parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 22% (only tone and preset documented), so the description must carry the rest and largely doesn't. It clarifies the preset-versus-width/height relationship, which is genuinely helpful, but leaves x, y, name, background, and show_background entirely unexplained, including what happens when position is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Add') and enumerates the resource in user-facing terms (screen, slide, page, post), which maps onto 'artboard'. It also clarifies that presets supply dimensions in place of width/height. The only gap is that it never literally says 'artboard', leaning on the tool name to bridge that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly excludes a nearby sibling: anything a control opens (dropdown, filter, menu) belongs to add_hidden_ui, not here. That is a real routing rule. But it doesn't say when to use this versus set_artboard or create_layout, so the guidance is useful but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_textureAdd textureBInspect
Add hatch, stipple, facet or strata marks clipped to a shape of a drawing on its "Drawing · " board. On a screen the marks are refused as a picture drawn onto it.
| Name | Required | Description | Default |
|---|---|---|---|
| ink | No | ||
| kind | Yes | ||
| name | No | ||
| seed | No | ||
| angle | No | ||
| color | No | ||
| width | No | ||
| jitter | No | ||
| opacity | No | ||
| spacing | No | ||
| coverage | No | ||
| shape_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that this is a non-read-only, non-destructive, non-idempotent mutation. The description adds useful behavioral context by saying the marks are clipped to a shape and refused on a screen. It does not explain what the mutation actually creates, how repeated calls behave, or other operational constraints, but with annotations covering the safety profile a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the action, but the second sentence is awkward and unclear ('On a screen the marks are refused as a picture drawn onto it'). It is concise without being structurally complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no output schema and 0% schema description coverage, the description is too thin. It leaves most parameters unexplained and does not describe the result of the operation, so an agent would need to infer heavily from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters. The description only names four of the five kind values and implies shape_id via 'clipped to a shape'; it does not explain ink, seed, angle, color, width, jitter, opacity, spacing, coverage, name, or the crosshatch kind. This is far from compensating for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: add hatch/stipple/facet/strata marks clipped to a shape on a drawing board. This is more than a restatement of the title, but it does not explicitly distinguish the tool from siblings such as set_pattern or scatter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides implied usage context by naming the drawing board and noting that marks are refused on a screen, which is a when-not condition. However, it gives no explicit alternatives or guidance on when to choose this tool over related tools like set_pattern or scatter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alignAlign shapesCDestructiveIdempotentInspect
Align shapes to a shared edge or centre.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is a destructive, idempotent mutation, but the description does not add any behavioral context beyond the surface purpose. It does not say that shapes are moved or that their positions change, nor does it warn about destructive effects. There is no contradiction with annotations, but the description adds little.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is terse, but structurally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, the description omits key context: how many shapes are required, what happens to the shapes' positions, and how it differs from 'align_to_artboard'. It leaves an agent with too little operational detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not mention 'shape_ids' or explain the 'mode' options. 'Shared edge or centre' loosely hints at the mode enum, but it does not clarify parameter meaning enough to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb, 'Align', and resource, 'shapes', plus the alignment target, 'shared edge or centre'. It does not explicitly distinguish itself from the sibling 'align_to_artboard', so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'align_to_artboard' or 'distribute'. It also does not state prerequisites like needing multiple shapes selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
align_to_artboardAlign to artboardCDestructiveIdempotentInspect
Position shapes relative to their artboard.
| Name | Required | Description | Default |
|---|---|---|---|
| vertical | No | ||
| shape_ids | Yes | ||
| horizontal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that this is a destructive, idempotent mutation, but the description adds no behavioral context such as what positioning does to existing layout, whether it can be undone, or permission requirements. It also does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler. However, it is arguably too terse for a destructive operation with three undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a destructive mutation with no output schema and zero schema description coverage, the description should do more to explain effects and parameters. It states the high-level purpose but leaves an agent without enough context to invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters, but it only implies shapes and artboards. It does not explain `shape_ids`, the meaning of `vertical`, or how `horizontal` interacts with artboard alignment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource: position shapes relative to their artboard. The artboard-relative scope helps distinguish it from the sibling `align`, which likely aligns shapes to each other, though it does not explicitly name that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the tool aligns shapes to artboards but gives no guidance on when to use it instead of `align`, `distribute`, or `fit_to_children`. There are no exclusions, prerequisites, or alternative-selection cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_layout_fixesApply layout alignment fixesCDestructiveIdempotentInspect
Move misaligned layout children to their suggested positions.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| target | No | ||
| artboard | No | ||
| shape_ids | No | ||
| containment | No | ||
| ignore_pairs | No | ||
| min_font_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, so the agent knows this mutates the document, but the description adds nothing about what is altered, whether changes can be undone, or where the 'suggested positions' come from. For a destructive mutation tool, that is a substantial disclosure gap beyond what annotations already provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient but under-specified rather than genuinely concise, given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive, 7-parameter tool with no output schema and no parameter documentation is described in one sentence that explains nothing about inputs or effects. The description is nowhere near complete enough for an agent to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Seven parameters with 0% schema description coverage and the description references none of them. Critical fields like 'containment' (with child_id/parent_id, padding, vertical/horizontal enums), 'ignore_pairs', 'target', and 'min_font_size' are entirely unexplained, so the agent must reverse-engineer intent from field names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb ('Move') and resource ('misaligned layout children'), which is more than a restatement of the title. However, 'suggested positions' is never defined and nothing distinguishes this from siblings such as align, align_to_artboard, distribute, normalize_spacing, or resolve_overflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternatives are named. The agent is left to infer that this should be called after some inspection step produces suggestions, and to guess how it differs from the many other alignment tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_slotBind artwork to a layout slotCDestructiveInspect
Fit artwork into a layout slot and keep it bound to it.
| Name | Required | Description | Default |
|---|---|---|---|
| clip | No | ||
| mode | No | ||
| path | No | ||
| detach | No | ||
| layout_id | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false, so the agent knows this mutates and is non-idempotent. The description adds only the vague persistence notion 'keep it bound' and never discloses what gets destroyed (e.g., existing content in the slot, prior binding), whether rebinding replaces an earlier binding, or how the 'detach' path behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with no padding, which is structurally clean. However, its brevity reflects under-specification rather than disciplined economy for a 6-parameter destructive tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive, non-idempotent mutation with 6 undocumented parameters and no output schema demands far more than one sentence. The description leaves critical gaps: what mode/clip/path do, what detach reverses, and what state the document ends up in.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 6 parameters, so the description carries the full burden and mostly fails. 'Artwork' and 'layout slot' loosely map to shape_ids and layout_id, but clip, mode (with its contain/cover/stretch enum), path, and detach — including the fact that detach appears to undo the binding — receive no explanation anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination: fitting artwork into a layout slot, plus the persistence aspect ('keep it bound'). An agent can tell this is a layout-binding operation, but the description never distinguishes it from siblings like fit_to_box, fit_to_children, place_image, or update_layout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus fit_to_box, fit_to_children, place_image, or update_layout — all plausible alternatives in the sibling list. Nothing describes preconditions (does the slot need to exist? must layout_id reference a created layout?) or what happens to prior bindings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boolean_opCombine shapesCDestructiveInspect
Union, subtract, intersect or exclude shapes into one new path.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds that the result is 'one new path,' but it never says whether the source shapes are consumed/deleted or retained, which is the key question for a destructive boolean operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the operation set and result. Nothing is wasted, though the terseness leaves required meaning unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema and zero schema coverage, the description omits critical information: ordering semantics for subtract/exclude, fate of the original shapes, and what identifies the resulting path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it does not. It repeats the four enum values without explaining semantics (for subtract/exclude, order of shape_ids determines which shape is cut from which) and says nothing about shape_ids.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific set of operations (union, subtract, intersect, exclude) on a specific resource (shapes) producing one new path, which distinguishes it from siblings like group, create_path, or clip_shapes. It does not name a sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use boolean_op versus group/ungroup or clip_shapes, nor on prerequisites such as needing at least two shapes or the shapes being closed paths. Usage is only implied by the op enum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_contactsCheck part contactsCRead-onlyIdempotentInspect
Measure whether parts touch what they belong to.
| Name | Required | Description | Default |
|---|---|---|---|
| pairs | No | ||
| artboard | No | ||
| tolerance | No | ||
| attachments | No | ||
| display_width | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, and the description merely echoes the passive 'measure' framing without adding anything. It says nothing about how tolerance affects the result, how mismatches are reported, or what happens when no pairs are given, all of which matter for a 5-parameter geometric check with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, which is good structurally. But one sentence is undersized relative to a tool with five parameters, two of them nested object arrays, so the brevity reads as under-specification rather than economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Rich annotations cover the safety profile, but nothing covers the calling contract: five complex parameters with zero schema documentation and no output schema mean the agent cannot tell what to pass or what result to expect. The description does not fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%: pairs, artboard, tolerance, attachments, and display_width are all undocumented in the schema, and the description explains none of them. The nested 'expect' enum (overlap/touch/clear) and 'into'/'end' attachment fields are especially opaque and untouched by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'measure' and the notion of parts touching give a rough idea, but 'parts' and 'what they belong to' are undefined and the description never names the actual objects (shapes, pairs, attachments) the schema exposes. It does not distinguish this from spatial siblings like align, inspect_layout, or resolve_overflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives such as align, snap_to_grid, or inspect_layout, and no prerequisites or exclusions. An agent must infer the use case entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_contrastCheck colour contrastCRead-onlyIdempotentInspect
Compute WCAG contrast between two colours.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| font_size | No | ||
| background | Yes | ||
| foreground | Yes | ||
| font_weight | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. Beyond the bare reference to the WCAG standard, the description adds no behavioral context: it doesn't say whether the result is a raw ratio, a pass/fail verdict, or how thresholds are applied. That is a meaningful gap for a 5-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficiently sized, though the terseness borders on under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a pure computation tool with full read-only annotations, the bar is lower, and the WCAG framing gives the agent enough to attempt a call. However, with five parameters at 0% schema coverage and no output schema, the description should say what is returned (contrast ratio vs. compliance verdict) and what the optional parameters do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden and it does not. 'Between two colours' loosely implies foreground/background, but target, font_size and font_weight — non-obvious parameters that clearly affect WCAG large-text threshold logic — are left completely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: compute WCAG contrast between two colours. It is clearly distinguishable from the 80+ sibling tools, none of which do accessibility/contrast checking. It stops short of naming what makes it distinct versus adjacent colour tools (set_style, design_tokens), but purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives, no prerequisites (e.g. colour formats accepted), and no explanation of when the optional target/font_size/font_weight parameters should be supplied. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_shapesClip shapesCDestructiveInspect
Clip or mask shapes with another shape.
| Name | Required | Description | Default |
|---|---|---|---|
| as_mask | No | ||
| clip_id | Yes | ||
| target_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is known from structured data. The description adds no behavioral context such as whether target shapes are consumed or preserved, how masking differs from clipping, or what happens to the clip shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of redundant text. It is concise, though the brevity reflects under-specification rather than a complete but compact description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive shape operation with three undocumented parameters and no output schema, the description is too sparse. It states the high-level operation but omits parameter roles, destructive consequences, and relationship to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the three parameters. It gives no indication of what target_ids, clip_id, or as_mask mean or how they interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb-resource pair: clipping or masking shapes with another shape. It is understandable as a shape operation, but it does not differentiate the tool from siblings such as clip_to_artboard or boolean_op.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like clip_to_artboard, boolean_op, or group. It only states the operation, leaving alternative selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_to_artboardClip to artboardCDestructiveIdempotentInspect
Clip shapes that cross their artboard's frame.
| Name | Required | Description | Default |
|---|---|---|---|
| artboard | No | ||
| shape_ids | No | ||
| include_clipped | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known; the description adds only the selection criterion (shapes crossing the frame). It does not disclose what is destroyed or altered (paths truncated? hidden? masks applied?), whether the change is reversible, or what happens to shapes not crossing the frame.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, so nothing wastes space; however, it is terse to the point of under-specification given three undocumented parameters and a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, idempotent mutation with three undocumented parameters and no output schema, the description is too thin. An agent knows only the rough intent and cannot determine where to apply it or what state it leaves behind.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description supplies no parameter information at all. The ambiguous 'artboard' parameter (integer or string, i.e. ID vs name) and 'include_clipped' are entirely undocumented anywhere, and the description does not compensate for that gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'clip' and the object 'shapes that cross their artboard's frame' give a rough idea, but the description never distinguishes this from the sibling clip_shapes, nor does it clarify whether 'clip' means mask, crop, or destructively cut the geometry. An agent sees two similarly named clipping tools and gets no basis for choosing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this rather than clip_shapes, resolve_overflow, or fit_to_box, and no prerequisite or exclusion information. The only implied scope is 'shapes that cross their artboard's frame', which is a selection condition, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_drawingCompare drawing with picked imageARead-onlyIdempotentInspect
Measure your drawing against the picked image: overlay, difference map, pixels off and the shape misses left; candidates score edits before you send them. measure reads the picked image itself (a gridded crop, colour samples, colour runs).
| Name | Required | Description | Default |
|---|---|---|---|
| ignore | No | Up to 8 {x, y, width, height} in board units: areas of the picked image that are not part of the illustration (a watermark, a stock logo, a caption), left out of every count. | |
| region | No | {x, y, width, height} in board units: the part the two pictures zoom into. Default: the whole picture. | |
| measure | No | Instead of comparing, read the picked image in board units before or while you draw: {grid, samples: up to 64 [x, y], rows: up to 24 y values, columns: up to 24 x values}, with region for the part to zoom into. Returns a gridded crop, the colour at each sample, and where each colour starts and stops along each row and column. Sent on its own, without regions, candidates or ignore. | |
| regions | No | Up to 16 named parts {name, x, y, width, height}, in board units, counted on their own. | |
| artboard | Yes | The illustration's drawing artboard ("Drawing · <illustration>"). | |
| candidates | No | Up to 6 {name, svg}: your whole drawing with one change each, scored against what the board holds now. Nothing is drawn. | |
| reference_id | Yes | The reference_id set_reference_image returned for this illustration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, no open world, so safety is covered. The description adds useful context beyond that: what the comparison returns (overlay, difference map, pixel/shape misses) and that 'candidates' draws nothing, plus that 'measure' returns a gridded crop and colour runs. Return format is implied rather than detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and reasonably short, but the first sentence is a run-on list ('overlay, difference map, pixels off and the shape misses left') that is cryptic rather than crisp. Every sentence carries information but the phrasing sacrifices clarity for density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 7-param tool with nested objects and no output schema, the description covers the main comparison behavior and the measure/candidates modes adequately. Return-value specifics are only loosely implied (overlay, difference map named but not structured), leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond schema: it explains 'candidates' score edits without drawing and that 'measure' reads the image itself rather than comparing. These clarify two of the more subtle parameters beyond what the schema text conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Measure your drawing against the picked image,' and enumerates the outputs (overlay, difference map, pixels off, shape misses). Clearly a comparison/measurement tool distinct from siblings like set_reference_image. Somewhat dense phrasing but the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage contexts: compare a drawing to score it, use 'candidates' to score edits before sending, and use 'measure' to read the picked image before/while drawing. It does not name explicit alternatives or when-not-to-use cases, but the modes and their conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_iconCreate iconCInspect
Draw a built-in monoline icon (docs {components} names them).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| icon | Yes | ||
| name | No | ||
| size | No | ||
| color | No | ||
| artboard | No | ||
| stroke_width | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, non-idempotent, non-destructive, closed-world creation. The description adds only that icons are built-in and monoline. It says nothing about where the icon lands (current artboard?), what happens on repeat calls given idempotentHint=false, or how size/color defaults behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key constraint front-loaded and no wasted words. It is efficient, though the brevity borders on under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema and zero schema descriptions, this is well short of what an agent needs — coordinate semantics, sizing units, and placement behavior are all missing. Only the icon-name lookup path is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description carries the full burden and mostly fails. It only clarifies the 'icon' parameter by directing the agent to docs {components} for valid names; x, y, name, size, color, artboard, and stroke_width remain entirely undocumented (units, defaults, artboard vs. absolute coordinates).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb ('Draw') and a specific resource ('built-in monoline icon'), which separates it from generic siblings like create_shapes, create_path, and draw_svg. It stops short of explicitly naming those alternatives, but the 'built-in monoline' qualifier does real disambiguating work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the parenthetical points to 'docs {components}' for icon names, which tells the agent how to pick a valid icon but not when to choose this tool over create_shapes, draw_svg, or generate_illustration. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_layoutCreate layoutBInspect
Build a screen or section from a layout tree; returns boxes, ids and measured warnings. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| root | No | Layout tree (docs tool create_layout). | |
| width | No | ||
| height | No | ||
| verbose | No | ||
| artboard | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-idempotent, open-world write. The description adds real context beyond that: the return payload (boxes, ids, warnings) and the approval/upload workflow that keeps the user's confirmation short. No contradiction with annotations. It does not say what happens to existing layouts or how warnings should be acted on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded before the workflow tip. The second sentence is dense but every clause carries information about the upload path. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does cover return values, which is good. But for a tool with a very large recursive layout-tree schema and eight loosely documented parameters, the description explains almost none of the core input structure, leaving the agent to infer it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, and the description covers just two of eight parameters: 'layout tree' maps to root, and upload_id is explained in detail. The six spatial/verbosity parameters (x, y, width, height, verbose, artboard) get no mention, and the description gives no hint about the node vocabulary inside root, which is the hard part of calling this correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and outcome: 'Build a screen or section from a layout tree', and adds what is returned (boxes, ids, measured warnings). It is clearly distinguishable from list_layouts/inspect_layout/update_layout by the word 'build', though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is procedural: when running with a shell, offload fields to a JSON file and pass upload_id. That covers the upload path but says nothing about when to use create_layout versus update_layout or apply_layout_fixes, or what prerequisites (project, artboard) must be in place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pathCreate pathBInspect
Draw one path from anchors with optional absolute handles. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| style | No | ||
| closed | No | ||
| mirror | No | points are an open half; its reflection is added. | |
| points | No | ||
| smooth | No | ||
| opacity | No | ||
| tension | No | ||
| artboard | No | ||
| subpaths | No | ||
| style_ref | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. | |
| corner_angle | No | ||
| fill_handles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readOnly, non-destructive, non-idempotent mutation, so the safety bar is partly met. The description adds useful context about the user-approval tradeoff of the upload path, but omits what object is actually created, which artboard it lands on, whether repeated calls duplicate, and what a name/style_ref resolves to.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded, no filler. The second sentence is dense but every clause (JSON file, curl to upload link, pass only upload_id, fields in the call win) carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter, zero-required, deeply nested creation tool with no output schema and low schema coverage, the description should at least establish the coordinate model, default behavior with no points, and what is returned. Instead it covers only the upload shortcut, leaving an agent unable to call it confidently without reading the schema repeatedly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% across 14 parameters with nested objects. "Anchors with optional absolute handles" glosses points/hin/hout, but tension, tension_in/out, tangent, smooth, subpaths, closed, mirror, corner_angle, fill_handles, style, and artboard are left entirely to the field names — a large gap the description does not close.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Draw one path from anchors with optional absolute handles" gives a specific verb and resource plus the core mental model (anchors + handles). "One path" implicitly distinguishes it from batch siblings like create_shapes or draw_svg, but it never names them, so the agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a concrete workflow rule (use upload_id when a shell is available so the approval box stays short), which is real usage guidance. However it says nothing about when to choose create_path over edit_path, pencil, draw_svg, or offset_path — the sibling set is dense and no routing is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_shapesCreate shapes in one batchAInspect
Draw up to 80 shapes, text, paths and pencil strokes in one call; illustrations are copied from a reference. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| shapes | No | ||
| artboard | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds useful behavioral context beyond that: an 80-item batch cap, that illustrations derive from a reference, and the shell/upload trick to keep the approval prompt short. It does not explain what happens to existing content or what the call returns, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and batch limit, followed by the practical upload detail. Nearly every clause earns its place, though the shell instruction is somewhat compressed and dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter creation tool with no output schema or rich annotations, the description should close more gaps. It covers the shapes array and upload_id but leaves artboard entirely unexplained, so an agent lacks full guidance to construct a complete call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description carries more burden. It names the shape kinds and explains the upload_id workflow in line with the schema, but says nothing about the artboard parameter, which is undocumented in both places, and doesn't clarify shape-item field structure beyond the enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (draw/create), resource (shapes, text, paths, pencil strokes), and a concrete capacity limit (up to 80 in one call), which distinguishes it from single-item siblings like pencil or create_path. The 'illustrations are copied from a reference' clause adds scope but is slightly tangential to the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains a workflow variant (with a shell, upload via curl and pass upload_id) but never states when to choose this batch tool over siblings such as draw_svg, create_path, or generate_illustration. Batch use is implied rather than contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
current_projectShow current projectARead-onlyIdempotentInspect
Show the current project and its link.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description only adds that a 'link' is returned, without format or what happens when no project is active; useful but thin given annotations do the heavy lifting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. The core purpose and the returned link are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with no output schema, the description is nearly complete: annotations cover behavior and it notes the returned link. It could mention behavior when no project is open, but that's a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline rule this scores 4. There is nothing for the description to clarify beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Show') and resource ('current project') and adds that the link is returned. The word 'current' implicitly distinguishes it from list_projects and open_project among siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'current project' – an agent can infer it's for retrieving the active project rather than listing or opening one. No explicit when-to-use, when-not, or alternatives (list_projects, open_project) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
define_stylesDefine style presetsBDestructiveIdempotentInspect
Define named style presets. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| styles | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, yet the description never says whether defining a preset overwrites or replaces an existing style of the same name — the single most important behavior for a destructive call. The upload/approval workflow detail is useful added context, but the destructive semantics remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and with zero filler. The second sentence is dense but each clause (JSON file, upload link, upload_id, short approval) carries functional information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent-looking mutation with no output schema, the description should disclose what gets overwritten, whether style names are global or per-project, and what the call returns. None of that is present, leaving meaningful gaps given only 50% schema coverage on a nested-object parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; upload_id is fully documented in the schema, and the description's curl workflow reinforces what that parameter is for. The styles object carries no description in either schema or description, though its nested property names (fill, stroke, opacity, stroke_taper) are largely self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Define named style presets'), which is unambiguous on its own. However, it never distinguishes itself from siblings like set_style or list_design_styles, so an agent cannot route between the style-related tools from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a procedural hint for shell environments (write JSON, curl to the upload link, pass upload_id), which implies usage context. But there is no guidance on when to choose this over set_style or list_design_styles, and no prerequisites stated for non-shell environments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_shapesDelete shapesCDestructiveIdempotentInspect
Delete shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=false, so safety profile is covered structurally. The description adds no behavioral context beyond that—it does not say whether deletion is permanent, undoable, cascading, or how missing IDs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two-word sentence is not concise so much as under-specified—it lacks front-loaded scope or constraints. Brevity here reflects missing information rather than efficient phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with a required array parameter and no output schema, the description is too thin: an agent cannot infer permanence, failure behavior, or scope of deletion. Annotations cover hints but the natural-language layer leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter shape_ids, and the description does not compensate: it says nothing about the ID format, whether it accepts an array batch, or what happens to invalid/unknown IDs. This is well below the baseline that high schema coverage would provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Delete shapes" names a specific verb and resource, so the basic purpose is unambiguous. However, it is essentially a restatement of the tool name/title with no field, scope, or sibling differentiation—nothing distinguishes it from create_shapes, clip_shapes, or other shape-mutating siblings beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives. An agent gets no signal about whether shapes must be selected first, whether related operations (ungroup, detach_symbol) should precede deletion, or when to prefer other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_documentDescribe documentCRead-onlyIdempotentInspect
Describe the artboards and shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | ||
| limit | No | ||
| offset | No | ||
| artboard | No | ||
| name_contains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds almost no behavioral context beyond that, such as what information is returned or how pagination/filtering affects the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is technically concise, but it is under-specified rather than efficient. It does not front-load useful details about scope, filters, or return behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five undocumented parameters and no output schema, the description is far too thin. It does not explain what describe returns, how filters are applied, or how to choose between this and related list/inspect tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are five parameters with 0% schema description coverage, and the description does not mention ids, limit, offset, artboard, or name_contains at all. An agent gets no meaning beyond the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb and resources ("Describe the artboards and shapes"), so the general intent is inferable. However, it is vague about what a "description" contains and does not distinguish this tool from siblings like list_artboards, list_shapes, or inspect_layout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of list_artboards, list_shapes, or inspect_layout. It also gives no indication of when the filter parameters should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_tokensSet design tokensBDestructiveIdempotentInspect
Change the project's design tokens. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| set | No | ||
| reset | No | ||
| preset | No | ||
| imagery | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. | |
| user_named_fonts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly=false, destructive=true, and idempotent=true, so the safety profile is partly covered. The description adds useful approval-workflow context around the shell/upload_id path, but it never explains what the destructive behavior changes or what reset does, leaving a meaningful gap for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads its purpose in the first sentence, then uses the second for the upload_id workflow. It is efficient and earns its space, though the second sentence is dense and carries a lot of operational detail in one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters, a nested object, low schema coverage, and destructiveHint=true, the description is substantially incomplete. It covers the purpose and one upload workflow but omits the semantics and effects of most parameters, especially reset and the nested set object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description needs to compensate but does not. It explains the upload_id shell workflow, yet says nothing about the set object, reset, preset, imagery, or user_named_fonts parameters beyond the generic phrase 'the fields'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Change the project's design tokens.' That is clear enough for an agent to understand the operation, though it does not distinguish this tool from nearby siblings such as define_styles or set_style.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is limited to a conditional workflow for upload_id: 'With a shell (Claude Code): write the fields to a JSON file...' It does not explain when to use design_tokens versus alternative style-setting tools, nor when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detach_symbolDetach symbol instanceBDestructiveInspect
Turn one symbol instance into editable shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| shape_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds the concrete outcome—conversion into editable shapes—but does not explain what happens to symbol overrides, nested symbols, the symbol link, or undo behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It communicates the core outcome efficiently, even though other dimensions lack detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent one-parameter mutation, the description gives the essential transformation and annotations carry the danger warning. However, it omits important behavioral details such as the effect on symbol overrides and whether the original instance or symbol link is lost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, shape_id, has no schema description at all. The phrase 'one symbol instance' hints that the ID must identify a symbol instance, but the description never names shape_id, its expected format, or how to obtain it, so it only partially compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: turning one symbol instance into editable shapes. It distinguishes the operation from siblings like make_symbol or place_symbol by focusing on converting an existing instance, though it does not explicitly contrast with ungroup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The implied use is reasonably clear: call this when a symbol instance should become editable shapes. However, there is no explicit when-not guidance, prerequisite that the shape must be a symbol instance, or named alternative such as ungroup or make_symbol.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
distributeDistribute shapesBDestructiveIdempotentInspect
Space three or more shapes evenly.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | Yes | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=false. The description adds that shapes are repositioned evenly and that at least three are involved, but it does not explain what is destroyed or how existing positions change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word contributes to the stated operation, and there is no redundant restatement of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description establishes the core action and minimum shape count. However, it omits the axis dimension and does not clarify movement/destruction behavior beyond the annotations, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It indirectly conveys that shape_ids should contain at least three shapes, but it never mentions the required axis parameter or the horizontal/vertical options, leaving one of two parameters undocumented in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: space shapes evenly. It also includes the important minimum-count condition of three or more shapes. It does not distinguish the tool from siblings such as align or normalize_spacing, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'three or more shapes' implies when the tool applies and gives a minimum input threshold. However, it gives no explicit when-not guidance and does not name alternatives such as align, normalize_spacing, or scatter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docsRead the referenceBRead-onlyIdempotentInspect
SVG Lab's reference: start-here, each tool's full details, design guides and the illustration routine. docs {fonts} lists the type catalog; docs {components} lists the components, icons and layout node types.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | One tool's full reference. | |
| fonts | No | true, or {role, category, query, family}: the curated type catalog, each family's role, personality, pairings and weights. Read on its own. | |
| guide | No | Guide id, e.g. start-here or drawing-from-references. | |
| query | No | ||
| skill | No | Designer skill id. | |
| tools | No | ||
| guides | No | Up to 8 guide ids, read whole in one call. | |
| lesson | No | Not used in SVG Lab Draw: returns the illustration routine. | |
| lessons | No | Not used in SVG Lab Draw: returns the illustration routine. | |
| reference | No | With skill: a linked document. | |
| components | No | true: the components, their props and defaults, the icon names and the layout node types. Read on its own. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world, so the safety profile is fully covered. The description adds the 'Read on its own' independence for fonts/components, but nothing about what the reference contains or how mode combinations behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and purpose, no wasted verbiage. The '{fonts}/{components}' bracket syntax is compact but slightly ambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 optional params, no required params, and no output schema, the description explains only a few modes. An agent can invoke it but must infer how the many parameter families (lesson vs lessons, guide vs guides, skill+reference) interact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 82%, so the schema largely documents the params. The description adds usage syntax for fonts and components modes and identifies 'start-here' as a guide id, but leaves tool/tools, guide/guides, skill/reference, and lesson/lessons undocumented at the description level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource — a reference/docs reader returning start-here guides, per-tool details, fonts, and components — which clearly distinguishes it from the editing siblings (draw_svg, add_artboard, etc.). It is clear what the tool fetches, though the '{fonts}' shorthand is slightly cryptic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'start-here' implies a recommended entry point and 'Read on its own' signals that fonts/components can be fetched standalone. However, there is no explicit when-to-use-vs-alternatives guidance or explanation of how the 11 modes relate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_svgDraw SVG drawingADestructiveIdempotentInspect
Upload the SVG you wrote by hand of the picked image onto its drawing artboard, with differences: every difference you still see, however small ([] at shape_misses 0). Auto-traced SVG (potrace, vtracer, colour quantising, any script that turns pixels into paths) is refused. With a shell (Claude Code): curl the .svg to the upload link new_project gave and pass upload_id instead of svg, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| svg | No | The whole drawing as SVG markup, viewBox "0 0 <board width> <board height>". | |
| name | No | What the drawing shows; its shapes are named after it. | |
| variant | No | true for the second stage, which every illustration needs before it goes on a screen: the finished exact copy (uploaded with differences []) altered into this design's own, its measured parts turned at their joints and recoloured with one palette. Refused until the exact copy is finished. | |
| artboard | Yes | The drawing artboard, for example "Drawing · warehouse". | |
| upload_id | No | With a shell: instead of svg, the upload_id of the .svg file you sent with curl to the upload link new_project gave (keeps the user's approval box short). | |
| differences | Yes | Every difference you still see between the picked image and your drawing, part by part (outline, pose, angle, colour, background, detail), however small; a watermark, stock logo or caption on the picture is not part of the illustration and is never listed. [] once the comparison reports shape_misses 0. While it lists anything, the drawing is not finished: fix it and send the whole SVG again. With variant: every flaw the change left (a gap at a joint, a loose seam, a patch off its body), [] when there is none. | |
| reference_id | Yes | The reference_id set_reference_image returned for this illustration; the reply shows the drawing beside it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true and closed-world, so the description's job is to add context — and it does: two refusal conditions, a resubmit-the-whole-SVG loop while differences is non-empty, and the note that upload_id keeps the user's approval box short. It does not say what the tool returns or what happens to a previously uploaded drawing when re-sent, despite destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only three sentences, but the first is a tangled run-on with stacked parentheticals ("however small ([] at shape_misses 0)"), and it front-loads schema-duplicating detail about differences ahead of the harder constraint. Purpose is front-loaded; readability and de-duplication are not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, three-required mutation tool with full schema coverage and no output schema, the description covers the iterate-until-clean workflow, the upload path and both refusal gates. The remaining gap is what a successful call returns and whether it overwrites prior artboard content, which matters given destructiveHint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines the viewBox requirement, the variant two-stage rule, upload_id and the per-part differences list. The description largely restates that (differences = every remaining flaw, [] at shape_misses 0), adding only the rule that watermarks/logos/captions are never listed — marginal net new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: upload a hand-written SVG onto an image's drawing artboard, and adds a sharp qualifier (hand-written, not auto-traced) that separates it from the generation/compare siblings. It does not name those siblings (compare_drawing, generate_illustration) outright, so routing between them is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real conditions: auto-traced output (potrace, vtracer, quantising) is refused, differences must be [] before the drawing counts as finished, and variant is refused until the exact copy is done. It also prescribes the shell alternative (curl the .svg to the upload link from new_project, pass upload_id). No explicit 'use X instead when…' against siblings, which keeps it below 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicateDuplicate shapesBInspect
Copy shapes in place or at an offset.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a non-readonly, non-destructive, non-idempotent operation. The description adds useful behavioral context by saying it copies shapes in place or at an offset, but it does not clarify whether originals remain selected, what new IDs or names result, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted wording. It immediately conveys the operation and the two placement modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with two undocumented parameters and no output schema, the description is too thin. It does not explain the required shape_ids parameter, the boolean offset semantics, or enough about the resulting copies for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only indirectly hints at the offset parameter and never explains shape_ids. It also does not clarify what offset=true means in practical terms, such as a fixed distance or direction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: copying shapes, with the option to do so in place or at an offset. It clearly describes the tool's operation, though it does not differentiate against nearby siblings such as repeat, create_shapes, or add_artboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers no explicit guidance on when to use this tool versus alternatives like repeat or create_shapes. The phrase 'in place or at an offset' hints at two modes but does not explain when each is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_pathEdit pathBDestructiveInspect
Change a path's anchors and handles in place. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| closed | No | ||
| smooth | No | ||
| tension | No | ||
| artboard | No | ||
| shape_id | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. | |
| set_points | No | ||
| move_points | No | ||
| set_handles | No | ||
| set_tangent | No | ||
| set_tension | No | ||
| delete_point | No | ||
| insert_point | No | ||
| subpath_index | No | ||
| coordinate_space | No | artboard (with artboard) or document. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is destructive, non-idempotent, non-read-only, and closed-world, so the description's lower burden is partly met. It adds that changes happen 'in place' and explains the upload_id approval-shortening workflow, but it does not explain destructive scope, partial edits, or validation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose in the first sentence. The second sentence is a specialized but useful workflow note, though it is somewhat niche relative to the many parameters the tool exposes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter destructive path-editing tool with nested objects and low schema description coverage, the description is too thin. Annotations cover the safety profile, but key operational semantics for most parameters and editing behaviors are left undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13% for 15 parameters, so the description needs to compensate but does not. It mentions anchors/handles generally and the upload_id workflow, but gives no meaningful detail on the many point-editing parameters, coordinate_space, tension behavior, or how set/move/delete/insert operations interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Change a path's anchors and handles in place.' That clearly identifies an edit operation on an existing path, though it does not explicitly differentiate from sibling tools such as create_path, inspect_path, or smooth_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies this is for editing an existing path's anchors/handles, but the description gives no explicit when-to-use or when-not-to-use guidance versus sibling tools. The shell/upload workflow is a useful operational note, but it addresses only one invocation path rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_artboardExport artboardCInspect
Export an artboard as SVG, with a preview card and a link to a PNG picture.
| Name | Required | Description | Default |
|---|---|---|---|
| part | No | Numbered SVG part, from 1. | |
| artboard | Yes | ||
| export_id | No | From part 1. | |
| background | No | ||
| outline_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered; the description usefully adds that a preview card and PNG link are returned. It omits the biggest behavioral trait implied by the schema: the numbered 'part'/'export_id' protocol, which suggests a multi-part, multi-call export flow that an agent cannot discover from the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is the right shape. It is arguably over-compressed for a five-parameter tool with a staged export flow, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, five parameters, and a schema that hints at a part/export_id paging protocol, the description should explain the export sequence, how to start (part 1) and continue, and what background/outline_text do. None of that is present, so an agent would likely mishandle the multi-part flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description must compensate, and it does not: it says nothing about 'part', 'export_id', 'background', 'outline_text', or what forms the 'artboard' identifier accepts (integer or string). Only the SVG output is hinted at, leaving four of five parameters unexplained beyond bare type info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (export) and resource (artboard) plus the output format (SVG) and what comes back (preview card, PNG link). It is distinguishable from export_code and export_document by the SVG/artboard framing, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to pick this over export_code, export_document, draw_svg or get_assets, and no preconditions (e.g. artboard must exist/be active) are stated. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_codeExport codeCInspect
Export screens as code (HTML, React, SwiftUI, Compose, Flutter) or layered SVG, with tokens and assets, as a ZIP link.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | ||
| format | No | ||
| artboards | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent, closed-world operation, lowering the disclosure burden. The description adds genuinely useful context: the result is a ZIP link and the export bundles design tokens and assets. It still omits whether the ZIP is persisted, whether the link expires, and whether export is asynchronous — notable gaps for a write-ish operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the core action front-loaded and no filler. The parenthetical format list is dense but earns its place by conveying output options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with zero schema coverage, no output schema, and no sibling differentiation, the definition is too thin. An agent cannot tell what `file` or `artboards` expect, whether an export is immediate or a background job, or how the ZIP link is delivered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry all parameter meaning, yet it mentions only the format options and never maps them to the `format` parameter. The `file` parameter (what file? a project? a source?) and `artboards` selection semantics (IDs vs names, defaults) are completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export screens as code') and enumerates the supported output formats (HTML, React, SwiftUI, Compose, Flutter, SVG), which tells an agent exactly what it produces. It does not differentiate itself from siblings like export_artboard or export_document, so an agent must infer which export variant is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over export_artboard, export_document, or draw_svg, nor any prerequisites (e.g., an active project or selected artboards). The agent is left to guess the selection criteria from the sibling list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_documentExport the deck or documentBInspect
The finished deck or document by link: PDF, editable PowerPoint (pptx) or post images.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | "pdf" (default): every font embedded, every page as designed. "pptx": editable PowerPoint (text boxes over the design, speaker notes). "images": every page as a PNG plus its SVG, one zip, for posts (X cards, carousels). | |
| artboards | No | Pages in the order wanted (index, id or name). Default: every page artboard in order. | |
| file_name | No | The file's name, e.g. "LittleNest seed deck". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the tool is non-read-only, non-destructive, non-idempotent, and closed-world. The description adds that output is delivered 'by link' and lists formats, but it does not explain persistence, permissions, overwrite behavior, or whether repeated exports create new links.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact sentence with no filler, and the formats are listed immediately. The fragmentary 'by link' phrasing is slightly less clear than a verb-led sentence, so it is not fully front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core resource and format options are present, and the schema covers page selection and file naming. However, given the sibling export_artboard, the description should clarify whole-document scope and link-return behavior; that missing routing context leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three optional parameters are already documented in the schema. The description reinforces the format choices but adds no meaningful detail about artboards or file_name beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (finished deck/document) and the output formats, while the title supplies the export verb. It is clear what the tool does, but it does not explicitly distinguish the whole-document export from the sibling export_artboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no direction to export_artboard for single artboards. The phrase 'finished deck or document' only weakly implies the post-design context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_referencesFind drawing referencesARead-onlyIdempotentInspect
SVG Lab's reference pictures for one planned illustration (illustration, query): Creative Commons first, each with its licence, no stock-agency previews; candidates are for you only.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many candidates, 4 to 10 (default 8). | |
| query | Yes | Its subject, pose and view, e.g. "warehouse with open loading bay". | |
| style | No | clipart (default) for flat and cartoon illustration, lineart for line drawings. | |
| illustration | Yes | The planned illustration this search is for, by its name in plan_illustrations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose read-only, open-world, idempotent, non-destructive behavior; the description adds useful extra traits: Creative Commons prioritization, per-candidate licence information, exclusion of stock-agency previews, and that candidates are 'for you only.' It still does not describe result format or limits, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, and the key scope and licensing constraints come early. The parenthetical '(illustration, query)' is slightly awkward but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with rich annotations and fully described parameters, the description covers purpose and content policy. However, with no output schema and no description of what a candidate result contains or how it relates to plan_illustrations, some context is still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description only calls out illustration and query and adds no syntax or meaning for count/style beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource—'reference pictures for one planned illustration'—and scopes it with 'Creative Commons first' and 'no stock-agency previews,' which distinguishes it from stock-photo search. It lacks an explicit verb and does not name the sibling alternative, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the usage context ('one planned illustration') and content policy (Creative Commons first, no stock-agency previews), but never explicitly says when to choose this over search_photos or generate_illustration. The alternative-selection guidance is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fit_artboardFit artboard to artworkBDestructiveIdempotentInspect
Fit the active artboard to the artwork on it, plus optional padding.
| Name | Required | Description | Default |
|---|---|---|---|
| padding | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the agent knows this mutates the document. The description adds scoping detail (it operates on the active artboard and the artwork on it) but never says what is actually altered — the artboard bounds or the artwork — nor what becomes destructive about it. With annotations covering the safety profile, this partial addition merits a 3 rather than higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the core operation comes before the optional parameter. It is arguably too terse for what it omits, but on structure and waste it performs well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool with annotations present, the description covers the essentials of what it does. The meaningful gaps are the units and effect of padding and the ambiguity against the fit_* siblings, which leave an agent guessing at invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source of parameter meaning, and it says only 'optional padding'. It confirms optionality but gives no units (px, pt), no default, and no indication of whether padding expands or shrinks the fitted bounds — information the schema cannot supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fit the active artboard to the artwork on it'), which is more precise than the title alone because it names the target artboard as the *active* one. It does not, however, distinguish itself from near-siblings like fit_to_children or fit_to_box, which an agent could easily mistake for this operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus fit_to_children, fit_to_box, resize, or align_to_artboard, all of which live in the same sibling list. The intent is inferable from the name, but the description provides no routing guidance or preconditions (e.g., whether artwork must be selected first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fit_to_boxFit shapes into boxCDestructiveIdempotentInspect
Scale and move shapes together into a box; placing an illustration removes its drawing board.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| mode | No | ||
| width | Yes | ||
| height | Yes | ||
| artboard | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so safety is covered. The description adds one behavioral note – that placing an illustration removes its drawing board – which is consistent with destructiveHint but delivered cryptically and without explaining whether the removal is reversible or which objects are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It's a single front-loaded sentence, so there's little waste, but the second clause is ambiguous and could mislead rather than clarify. The brevity comes at the cost of substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 7-parameter mutation with no output schema, the description should explain the box coordinate semantics, mode behavior, and the artboard target. None of that is present, so an agent cannot call this confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description only implies that x/y/width/height define a box, without explaining them or covering shape_ids, artboard, or the contain/cover/stretch modes. With all 7 parameters undocumented and one enum unexplained, the description leaves most parameter meaning to guesswork.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific pair of verbs (scale and move) and a resource (shapes) with a target (a box), which tells an agent what the tool does. It stops short of distinguishing itself from close siblings like fit_artboard, fit_to_children, resize, or transform, so it doesn't earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There's no guidance on when to choose this over fit_to_children, fit_artboard, or plain transform, and no exclusions or prerequisites. The agent must infer the choice from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fit_to_childrenFit container to contentCDestructiveIdempotentInspect
Resize a container to wrap its children.
| Name | Required | Description | Default |
|---|---|---|---|
| padding | No | ||
| child_ids | Yes | ||
| container_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructiveHint=true and idempotentHint=true, but the description does not explain what is destructive, what happens to the container or children, or how padding affects the result. It adds almost no behavioral context beyond the title and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and wastes no words. However, for a tool with three parameters including a complex padding object and a destructive annotation, it is too terse to be appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema description coverage, no output schema, and a destructiveHint=true annotation, the definition is incomplete. It should explain parameter behavior, especially padding, and clarify the destructive mutation and how it relates to sibling fit tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain container_id, child_ids, or the complex padding option. It only generically mentions a container and children, leaving all parameter semantics to the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb and resource: resize a container, with the outcome of wrapping its children. The purpose is clear, but it does not distinguish this from close siblings such as fit_to_box, fit_artboard, or resize.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of fit_to_box, fit_artboard, resize, or align. The usage is only weakly implied by the tool name and sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flipFlip shapesCDestructiveInspect
Flip shapes horizontally or vertically.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | Yes | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds nothing beyond them — no statement about in-place mutation, undo behaviour, or whether flipping a group affects children. It also offers no hint of why the operation is flagged destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, action front-loaded. Its brevity is efficient but borders on under-specification rather than crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation tool with zero parameter documentation and no output schema, this description is too thin — it should state the mutation semantics and the ID source. Nothing an agent needs in order to call it safely is supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden and it does not. 'Horizontally or vertically' merely restates the axis enum, and shape_ids is never explained — no indication of format, whether IDs come from list_shapes, or whether mixed shape types are allowed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Flip shapes') plus the two axes it supports, so the action is unambiguous. It does not differentiate from nearby siblings like mirror or transform, which could plausibly be confused with flipping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this rather than mirror, transform, align, or duplicate. The agent must infer the use case entirely from the name and the axis enum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_illustrationDraw with SVG Lab's vector modelAInspect
Draw a planned illustration with SVG Lab's vector model: editable SVG from a text brief, the faster route (500 credits).
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The brief: subject, action, setting, style, palette (hex), no background, no text. | |
| artboard | No | Its board; default "Drawing · <name>". | |
| illustration | Yes | The planned illustration's name (plan_illustrations). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false). The description adds meaningful context beyond them: it costs 500 credits and returns editable SVG, which helps the agent weigh call cost and expected output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action, names the model, and appends cost and output in a tight clause. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states the return is an editable SVG. Combined with 100% schema coverage and annotations, an agent has what it needs to call it, though the prerequisite link to plan_illustrations could be made more explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (prompt, artboard, illustration) are already well explained. The description adds no parameter-level syntax or format detail, which is acceptable given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Draw a planned illustration'), names the model ('SVG Lab's vector model'), and specifies the output ('editable SVG from a text brief'). It doesn't explicitly name a competing sibling like draw_svg or plan_illustrations, but 'planned illustration' and 'the faster route' hint at the workflow distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies a prerequisite workflow ('planned illustration') and that this is one option ('the faster route'), but never states when to use it versus plan_illustrations or draw_svg. The guidance is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetsGet asset filesBRead-onlyIdempotentInspect
Get drawings and icons as SVG or PNG files by asset id or artboard; a ZIP link for many.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | ||
| format | No | ||
| scales | No | ||
| artboard | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds return-shape context ('as SVG or PNG files', 'a ZIP link for many'), but says nothing about how output is delivered (URLs vs. embedded data) or any failure/limits for large asset lists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the addressing modes and bulk behavior come first. The trailing 'a ZIP link for many' is slightly cryptic but dense rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four undocumented parameters, no output schema, and zero schema description coverage, the description leaves key gaps: what is actually returned (file URLs, inline data, or a ZIP), what 'scales' does, and whether zero assets requests everything or errors. For a retrieval tool without an output schema this is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It covers assets, format and artboard loosely, but the 'scales' parameter is never explained (presumably PNG multipliers) and the artboard anyOf (integer vs. string) distinction between id and name is left unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource set ('Get drawings and icons as SVG or PNG files') plus the two addressing modes (asset id or artboard) and the bulk path (ZIP for many). This separates it from export_document/export_artboard, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by asset id or artboard; a ZIP link for many' implies when to use single vs. bulk retrieval, but there is no explicit when/when-not or named alternative among the many export_* siblings. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
groupGroup shapesDDestructiveInspect
Group shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| artboard | No | ||
| shape_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnly=false, and non-idempotent, so the safety profile is covered structurally. The description adds nothing behavioral: it does not say whether source shapes are consumed, whether the group is returned or named, or what happens to shapes spanning artboards — a meaningful gap for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words with zero waste, but this is under-specification rather than conciseness; there is no front-loaded scope, precondition, or effect statement to anchor the call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, zero documented parameters, and no required parameters declared, the description is far too thin to let an agent invoke it correctly. Nothing explains the resulting group, its name, or its artboard.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters (name, artboard, shape_ids), and the description supplies no meaning for any of them — notably it never says what name does or how artboard scopes the grouping. Only the loose inference that shape_ids are the shapes being grouped is recoverable from the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Group shapes" restates the tool name and title without adding specificity about what grouping means here (combining into a group node, preserving order, target container). It does not distinguish the tool from siblings like ungroup, name_group, boolean_op, or make_symbol, which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., shapes must be selected or share an artboard), and no mention of the natural counterpart ungroup. The agent gets no criteria for selecting this over boolean_op or create_shapes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
illustration_jobsVector drawing progressARead-onlyIdempotentInspect
Progress of drawings by SVG Lab's vector model: status, seconds, group_id once placed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description goes beyond that by disclosing the concrete return content (status, seconds, and a group_id once the drawing is placed), which is the key behavioral fact an agent needs when no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the subject front-loaded and the returned fields trailing. Dense but not padded; only mild awkwardness in 'group_id once placed' costing a bit of readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description's field list is doing useful work. However, it does not explain status values, whether results are scoped to the current project, or when an agent should re-poll versus proceed, leaving real gaps for a progress-tracking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly implies a parameterless listing rather than accepting job IDs, which matches the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific resource (progress of drawings by SVG Lab's vector model) and enumerates the returned fields (status, seconds, group_id once placed). It is clear what the tool reports, though it never mentions that these jobs originate from generate_illustration/plan_illustrations, so the connection to siblings is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this: no mention of polling after starting an illustration job, no frequency advice, no statement of what happens when no jobs exist. Usage must be inferred from the name and from the neighboring generate_illustration tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_layoutInspect layoutCRead-onlyIdempotentInspect
Measure overlap, overflow and alignment; changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| target | No | ||
| artboard | No | ||
| shape_ids | No | ||
| containment | No | ||
| ignore_pairs | No | ||
| min_font_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the description's 'changes nothing' is consistent but redundant. It adds no further behavioral context, such as what a measurement returns, how overlap/overflow are defined, or whether results are scoped to an artboard or selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence of seven words with no filler. Every phrase contributes to the stated purpose and the read-only guarantee.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter measurement tool with no output schema and no parameter documentation, the description is far too sparse. It does not explain how to scope the inspection using target/artboard/shape_ids, what containment settings mean, or what the agent should expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are seven parameters with 0% schema description coverage, and the description does not mention or explain any of them. It gives no clue how group, target, artboard, shape_ids, containment, ignore_pairs or min_font_size affect the measurement, leaving the agent to infer everything from bare types and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Measure', and names three concrete resources: overlap, overflow and alignment. This distinguishes it from mutating siblings such as apply_layout_fixes, but it does not explicitly differentiate it from related inspection tools like measure_text, inspect_path or resolve_overflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'changes nothing' implies a read-only diagnostic use, but there is no explicit guidance on when to choose this tool over apply_layout_fixes, resolve_overflow, check_contrast or measure_text. No prerequisites, exclusions or alternative-selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_pathInspect pathCRead-onlyIdempotentInspect
Read a path's anchors, handles and construction issues.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | ||
| audit | No | ||
| corners | No | ||
| preview | No | ||
| max_size | No | ||
| shape_id | Yes | ||
| background | No | ||
| display_width | No | ||
| subpath_index | No | ||
| anchor_indices | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds only the returned content and says nothing about the preview/rendering behavior implied by params like preview, background, display_width, crop and max_size, nor about how audit affects results — a notable gap given no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately terse, though that terseness comes at the cost of the missing detail noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with nested objects and no output schema, the description is far too thin. It does not explain the crop/preview/audit options, how anchor_indices and subpath_index scope the inspection, or what a result looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 params, including nested crop and non-obvious flags like audit, corners and subpath_index. The description only alludes to 'anchors', providing no meaning for any parameter and failing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read/inspect) and resource (a path) and names the returned content: anchors, handles, construction issues. That distinguishes it from mutating siblings like edit_path, create_path, smooth_path. 'Construction issues' is slightly vague but still conveys diagnostics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus edit_path, smooth_path, normalize_radii, or inspect_layout. No prerequisites (does the shape need to be a path?) and no exclusions. An agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_artboardsList artboardsCRead-onlyIdempotentInspect
List the artboards.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds nothing beyond that — no mention of scope (current project vs. all documents), ordering, or what an artboard entry contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no waste, but it is concise to the point of vacuity — it conveys no information an agent could not infer from the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with rich annotations and no output schema, the agent still needs to know what identifies an artboard in the response and whether the list is scoped to the active document. The description supplies none of this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is no parameter information the description could or should add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is 'List the artboards,' which essentially restates the tool name and title without adding scope. It does not distinguish this from siblings like list_shapes, list_layouts, or describe_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this rather than describe_document, list_shapes, or current_project. No prerequisites, no exclusions, no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_stylesList style presetsCRead-onlyIdempotentInspect
List style presets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context whatsoever — not whether presets are built-in vs. document-local, not whether the list changes, not the shape of what comes back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is certainly short and front-loaded, but that brevity comes from under-specification rather than economy. The single sentence duplicates the title instead of earning its place with new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description is the only place to explain what a 'style preset' is and what the returned list contains — and it says none of that. For a discovery/list tool, the agent is left guessing about result shape and scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to convey. The baseline for a parameterless tool is 4; nothing is missing in this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List style presets" is a verbatim restatement of the tool name and title — a tautology. It conveys the resource but adds nothing an agent couldn't infer from the identifier itself, and gives no basis for distinguishing it from siblings like define_styles, set_style, or design_tokens.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus the other style-related siblings (define_styles, set_style, design_tokens). The agent must infer from the name alone that this is the read-side counterpart to style mutation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_layoutsList layoutsBRead-onlyIdempotentInspect
List this project's layouts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds only the project-level scope and does not mention ordering, pagination, inclusion of hidden layouts, or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no wasted text. It communicates the core action immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with rich annotations, the definition is minimally adequate. Because there is no output schema, the description could reasonably say more about what is returned, such as layout ordering or whether all layouts are included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden on the description. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: listing layouts scoped to 'this project.' It does not differentiate this tool from nearby siblings such as inspect_layout or other list_* tools, which prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use list_layouts instead of siblings like inspect_layout, create_layout, or update_layout. Usage is only implied by the word 'List.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsBRead-onlyIdempotentInspect
List the user's projects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds only a light ownership scope ("the user's"), and says nothing about result size, ordering, or whether pagination applies — acceptable but thin given the annotations carry the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the subject and scope front-loaded and no filler. It is efficient, though it borders on under-specification rather than tightness — one more clause on what is returned would have cost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description is the only place an agent could learn what a returned project looks like or whether the entries carry identifiers usable with open_project. For a simple read tool this is close to adequate, but the missing link to the project-opening siblings leaves a real gap in a 70-tool surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to compensate for. The baseline for a parameterless tool applies cleanly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (the user's projects), which is unambiguous on its own. However, it gives no signal distinguishing it from nearby siblings such as current_project, open_project, and account_status, so an agent must infer the relationship between listing, opening, and the active project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all — nothing says whether this is the first step before open_project, whether it lists all projects or only those recently accessed, or what to do if the result is empty. The only implicit cue is "the user's," which scopes the listing but does not route the agent among alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shapesList shapesCRead-onlyIdempotentInspect
List shapes with ids, boxes and stacking order.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | ||
| group | No | ||
| limit | No | ||
| offset | No | ||
| artboard | No | ||
| name_contains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful return-content context ("ids, boxes and stacking order") but does not mention pagination, filtering behavior, or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately concise, though its brevity reflects under-specification handled in other dimensions rather than wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter listing tool with no output schema, the description is too thin. It omits filter semantics, pagination behavior, and how grouping or artboard scoping works, leaving an agent unable to use the parameters confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with six parameters (all, group, limit, offset, artboard, name_contains) undocumented in both schema and description. The description does not compensate by explaining what any parameter controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List shapes") plus the returned fields ("ids, boxes and stacking order"). It is clear what the tool does, though it does not explicitly distinguish itself from siblings like list_artboards or list_symbols.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any stated prerequisites. The listing intent is implied by the name, but no usage context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_symbolsList symbolsCRead-onlyIdempotentInspect
List the symbols.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered by structured data. The description contributes nothing further — no mention of scope, filtering behavior, or what the listing contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, but its brevity comes from under-specification rather than economy. It is not a concise statement of a complete idea; it is a restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though the tool is simple and annotations cover safety, there is no output schema, so the description should clarify what a symbol listing returns (names, ids, counts) and scope. None of that is present, leaving the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no semantics to document; the baseline of 4 applies. Nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name and title verbatim ('List the symbols') without saying what a symbol is or what distinguishes this from siblings like list_shapes, list_layouts, or place_symbol. An agent learns nothing about the resource beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this versus the many other list_* siblings or the symbol-related tools (make_symbol, detach_symbol, place_symbol). No prerequisites, conditions, or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookLook at an artboardCRead-onlyIdempotentInspect
Render an artboard with measured facts, or compare a region with a reference.
| Name | Required | Description | Default |
|---|---|---|---|
| flow | No | ||
| brief | No | ||
| scale | No | ||
| region | No | Artboard-local crop. | |
| artboard | No | ||
| critique | No | ||
| artboards | No | ||
| before_after | No | ||
| reference_id | No | From set_reference_image. | |
| inspect_shape | No | Path whose anchors come back artboard-local. | |
| reference_region | No | Reference crop when it differs from region. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. Beyond that the description adds only "measured facts," with no disclosure of what is returned (image? structured facts?), how brief/critique/before_after alter behavior, or cost/latency implications of rendering. With no output schema, more burden falls on the description than it carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, which is good. But for an 11-parameter, multi-mode tool it is under-specified rather than concise — appropriate sizing is not achieved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Eleven optional parameters, nested objects, no output schema, and a 36% description coverage rate demand substantially more explanation than one sentence. An agent cannot tell from this description what most flags do or what the call produces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 36% across 11 parameters, so the description must compensate and largely does not. Only region/reference comparison is implied; scale, brief, critique, flow, before_after, artboards, and inspect_shape are entirely unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb and resource ("render an artboard") and a second mode ("compare a region with a reference"), which is more than the bare name "look". But the schema reveals many more modes (brief, critique, flow, before_after, inspect_shape) that the description never hints at, so the stated purpose understates the tool's actual scope. It also does not differentiate from overlapping siblings like read_screen, compare_drawing, or export_artboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an implicit render-vs-compare split, but no explicit when-to-use, when-not-to-use, or named alternative. An agent choosing between this, read_screen, compare_drawing, and export_artboard gets no routing signal from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_responsiveShow on other phonesBInspect
Show a phone screen on other phones and foldables, reflowed, on new artboards.
| Name | Required | Description | Default |
|---|---|---|---|
| sizes | No | ||
| devices | No | ||
| artboard | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, and openWorld=false, so the safety profile is covered. The description adds useful behavioral context by saying the result is reflowed onto new artboards, which suggests a non-destructive creation operation, but it does not clarify whether the source artboard changes, how device selection works, or what 'reflowed' concretely means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. Its brevity contributes to completeness gaps, but as a conciseness and structure matter it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool that creates new artboards from an existing screen, the description is too thin given 0% schema coverage and no output schema. It does not explain the required input artboard, the difference between sizes and devices, or what the resulting artboards contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters, so the description must carry the burden. It vaguely gestures at devices with 'other phones and foldables' and at output artboards, but it never explains the required artboard identifier, the sizes array with name/width/height, or how devices differs from sizes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: it shows a phone screen on other phones and foldables, reflowed, on new artboards. That distinguishes it from plain resize or add_artboard siblings by emphasizing reflowed responsive variants on newly created artboards. The verb 'show' is a little vague, but the overall purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you want to see a phone screen adapted to other phones and foldables. It does not explicitly say when not to use it, what prerequisites are required, or which sibling tools to use instead, such as resize or export_artboard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_symbolMake symbolCDestructiveInspect
Turn shapes into a reusable symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotent, so the agent knows this mutates state. The description adds nothing beyond that — it doesn't say whether the original shapes are consumed or replaced, whether an existing symbol with the same name collides, or how instances are created afterwards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, but its brevity comes at the cost of under-specification rather than efficiency. The core action is front-loaded, which is the one structural strength.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive, non-idempotent mutation with no output schema and no documented parameters needs more than one sentence. The agent cannot tell what the return value represents, whether shapes are destroyed or converted in place, or what failure modes exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The description only weakly implies the plural-shape input ('shapes') and never explains shape_ids format/ordering or what omitting the optional name does (auto-naming vs. error). The schema carries no meaning of its own, so the description should compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: turns shapes into a symbol, which is distinguishable from group/ungroup and from place_symbol/detach_symbol/list_symbols. It does not explicitly name those siblings, but the operation itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus grouping shapes or creating a symbol instance, and no prerequisites (selection state, artboard context) are mentioned. The agent must infer that the shapes already exist and are referenced by id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_optical_centerMeasure optical centreCRead-onlyIdempotentInspect
Report the optical-centre correction without moving anything.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | ||
| shape_ids | Yes | ||
| container_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so 'without moving anything' mostly restates what structured data provides. The description does not explain what the reported correction consists of (units, per-shape vs aggregate, coordinates) — notable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler, and the non-mutation constraint is front-loaded. But the brevity comes at the cost of under-specification rather than efficiency — it is short because it says almost nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, three undocumented parameters, and an enumeration the agent must guess at, the description leaves critical gaps: what the returned correction is, in what units, and whether shape_ids/container_id scope the result. It is not sufficient to call the tool correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters: axis (enum both/horizontal/vertical), shape_ids, and container_id are entirely undefined in both schema and description. The description does not compensate at all — it never mentions scope, coordinate system, or what the axis restriction does to the measurement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb ('Report') and resource ('optical-centre correction') are specific, and 'without moving anything' implicitly contrasts it with the mutating sibling optical_center. It never names that sibling, so an agent must infer that optical_center is the tool that applies the correction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, no prerequisites, and no named alternative, despite optical_center being the obvious counterpart. The non-mutating phrasing only faintly implies a 'preview before applying' workflow; nothing routes the agent between the two tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_textMeasure textBRead-onlyIdempotentInspect
Measure how text wraps and renders, without drawing it.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| opacity | No | ||
| font_size | No | ||
| max_width | No | ||
| font_style | No | ||
| font_family | No | ||
| font_weight | No | ||
| line_height | No | ||
| text_anchor | No | ||
| letter_spacing | No | ||
| vertical_anchor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds that measurement occurs without drawing, a useful behavioral distinction, but it omits what is returned (bounding box, line breaks, dimensions) and any dependency on current document/style context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is concise and immediately states the tool's function, though its brevity leaves required detail to other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-output-schema tool, the description is not complete: it does not explain the return shape or how the many typography/layout parameters affect measurement. Annotations cover safety but not the missing operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Eleven parameters exist with 0% schema description coverage, including content, font properties, max_width, line_height, and anchors. The description contains no parameter-level semantics and does not compensate by mapping any of these controls to the measurement result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Measure') and resource ('text'), and 'without drawing it' distinguishes this from sibling text-drawing tools such as set_text or text_on_path. An agent can identify this as a non-rendering measurement tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without drawing it' implies the tool is for checking text layout when rendering is unnecessary or undesirable, but it does not name alternatives or state explicit when/when-not conditions. Guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mirrorMirror shapesCDestructiveInspect
Make a mirrored copy, or join a half outline with its reflection.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| gap | No | ||
| axis | No | ||
| join | No | ||
| snap | No | ||
| merge | No | ||
| artboard | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating, irreversible operation, but the description never explains what is destroyed—the originals, the reflection, or nothing—nor what 'merge' or 'join' do to the shape tree. For a destructive mutation, the description should describe the effect on existing shapes and add context beyond the annotations; it does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, but that brevity comes at the cost of under-specification rather than efficiency—the two clauses do not resolve the tool's actual behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter destructive transformation with no output schema and no parameter documentation, the description is far too thin. An agent cannot confidently choose an axis, predict whether originals survive, or understand 'gap'/'snap' from this text alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate, yet it only loosely hints at 'join' and 'copy'. Axis, at, gap, snap, merge, and artboard are entirely unexplained, and defaults (e.g. which axis is used when omitted) are unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and resource ('Make a mirrored copy') plus a second mode ('join a half outline with its reflection'), which is clearer than the bare name 'mirror'. It does not distinguish itself from the closely related sibling 'flip', which an agent could easily confuse with mirroring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Two operating modes are implied (copy vs. join) but the description never states which condition or parameter selects each mode, nor when to prefer this over 'flip', 'transform', or 'boolean_op'. The agent must open the schema and guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
name_groupName groupCDestructiveIdempotentInspect
Name a group.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| group | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=false. The description adds no behavioral context such as whether renaming overwrites an existing name, what permissions are required, or what side effects occur, so it contributes nothing beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short but under-specified rather than usefully concise. It fails to front-load any meaningful scoping, effect, or parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter mutation with no output schema and 0% schema description coverage, the description is incomplete. It omits parameter semantics, side effects, and usage guidance; the annotations provide only generic safety hints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with two required parameters, and the description does not explain whether "group" is an ID or name or what format or constraints apply to "name". It only weakly implies that "group" is the target and "name" is the new value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description "Name a group" essentially restates the title "Name group" and adds no scope, effect, or distinguishing detail. It does not help an agent tell this apart from related sibling tools such as group or ungroup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, prerequisite information, or comparison to alternatives. Given the large set of sibling tools, the definition gives no basis for choosing name_group over group, ungroup, or other group-related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_projectNew projectCInspect
Start a project: kind "ui" (apps, sites) or "marketing" (decks, pitch decks, posters, ads, posts, flyers, reports).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | "marketing" for any deck, pitch deck, presentation, poster, ad, social post, carousel, flyer, one-pager, brochure, report, certificate or invitation: its pages are designed here and export_document hands over the finished PDF, editable PowerPoint or post images. "ui" (default) for app screens and websites. Chosen once for the project. | |
| name | No | ||
| imagery | No | ||
| planning | No | Required before the first project: the user's answers to the planning questions new_project lists (answers, in their words), where they chose to watch (watch: in_app_browser, own_browser or not_now), and assumed: true when they said to just go ahead. Without it new_project returns the questions and makes nothing. | |
| from_project | No | A project id from list_projects whose look this one starts from: its colours, fonts and named styles (for a deck or poster about an app). Nothing else is copied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a non-readonly, non-idempotent, non-destructive write. They do not disclose the two-stage gate where a `planning`-less call returns the questions and makes nothing — a non-obvious, high-impact behavior buried entirely in a nested schema field. The description adds essentially no behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is good structurally. However, at this length it is under-specified rather than genuinely concise — the brevity comes at the cost of omitting the planning gate and the name/imagery parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, a nested `planning` object, 0 required fields, and no output schema, the description needs to explain the creation workflow and what happens on a planning-less call. It does neither, leaving an agent unable to call this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Coverage is only 60%; `name` and `imagery` have no schema descriptions at all, and the description does not compensate for either. The one thing the description does cover (kind) is already fully explained in the schema, so it adds no meaning beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb and resource are clear ("Start a project") and the kind values are disambiguated with examples. But the single most important fact about this tool — that calling it without `planning` creates nothing and instead returns questions — is absent, so an agent reading only the description would misjudge what the call actually does. It also doesn't distinguish itself from siblings like open_project or list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this rather than open_project (existing project) or list_projects. The required prerequisite — supplying `planning` before the first project — is never stated in the description, so an agent has no routing or sequencing guidance from the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_radiiMatch corner radiiCDestructiveIdempotentInspect
Give rectangles one corner radius.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | Yes | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is partly covered. The description adds no context about what is destroyed (existing individual corner values), what happens to non-rectangular shapes, or whether the operation is undoable, so it contributes almost nothing beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words, but its brevity comes at the cost of under-specification rather than true efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with two undocumented parameters, no output schema, and no schema descriptions, the description is far too thin. Annotations cover idempotency and destructiveness, but an agent still cannot tell what radius formats are valid or precisely which shapes are affected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. 'one corner radius' hints that the radius parameter applies uniformly to all corners, but the accepted formats (string vs number, units) and the shape_ids selection semantics are left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence conveys the effect (assign one uniform corner radius) but the verb 'give' is vague and the resource is described as 'rectangles' while the parameter is generically 'shape_ids'. It does not say that existing per-corner radii are overwritten or how this differs from the sibling normalize_spacing beyond the nouns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as normalize_spacing or set_style. The agent must infer the use case entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_spacingEven out spacingCDestructiveIdempotentInspect
Set one equal gap between shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | No | ||
| axis | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds nothing beyond that: it doesn't say which shapes move, what the anchor is, whether existing gaps are overwritten, or what the default behavior is when `gap`/`axis` are omitted — significant for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the key concept front-loaded. However, brevity here is under-specification rather than economy — the sentence could be longer and still earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive three-parameter mutation with no output schema and zero schema coverage needs a description that explains axis behavior, gap units, and side effects. The one-liner leaves an agent guessing on all of these.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning and it largely does not. It hints at `gap`, but never explains that `axis` selects vertical vs horizontal distribution, what units/string form `gap` accepts (string or number), or that `shape_ids` identifies the shapes to space out.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Set one equal gap between shapes" names a verb and a resource, so the general intent (equalize spacing) comes across. But it never states whether the uniform gap is the supplied `gap` value or a computed one, and it does not differentiate itself from close siblings like `distribute`, `align`, or `snap_to_grid`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of `distribute` or `align`, which are the most obvious alternatives for spacing operations. It also omits any prerequisites (e.g. selection state, minimum number of shapes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
offset_pathOffset pathCInspect
Draw a new path at a set distance outside or inside a path.
| Name | Required | Description | Default |
|---|---|---|---|
| distance | Yes | ||
| shape_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so safety is partly covered. The description usefully adds that the result is a NEW path (the source path is not restated as modified) and that the offset can go inward or outward, but it does not say what happens to the original shape, whether the operation can fail, or how the offset handles self-intersecting geometry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the one sentence could have absorbed a clause on sign convention for 'distance' at little cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter geometry mutation with no output schema and no parameter documentation, the description omits critical details: the meaning/sign of distance, what shape_id refers to, and whether the source path is preserved. An agent could easily call this with the wrong sign and invert the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must carry the burden and largely fails. It implies that 'distance' encodes offset magnitude and direction, but never says whether a negative value means inside versus a separate flag, and shape_id is not explained at all (target path identifier).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Draw a new path') and a specific geometric operation ('at a set distance outside or inside a path'), which is clearly distinct from sibling operations like edit_path, create_path, and smooth_path. It is clear what it does, though it never names those siblings or states its relationship to them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over create_path, edit_path, or clip_shapes, and no prerequisites or constraints are mentioned. The 'outside or inside' phrase hints at a use case but leaves the agent to infer the selection condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_projectOpen projectCIdempotentInspect
Open a saved project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds only the fact that the project is 'saved' and does not explain what opening changes, such as whether it switches the active project or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, but its brevity reflects under-specification rather than strong conciseness. It does not waste words, but it also does not provide enough substance for the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter project-opening tool with no output schema, the description should clarify the parameter source and the effect of opening a project. It leaves both ambiguous, especially relative to siblings like list_projects and current_project.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter description coverage, so the description must compensate. It only implies that project_id refers to a saved project, but does not explain the expected identifier format or where to obtain it, leaving the parameter largely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Open a saved project.' This clearly distinguishes it from creating a project or listing projects, but it does not explicitly differentiate from nearby siblings such as current_project or new_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage for an existing saved project, but does not state when to use this instead of list_projects, current_project, or new_project. There is no explicit when-to-use or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optical_centerOptically centre iconCDestructiveIdempotentInspect
Move an icon so its visual centre sits on its container's centre.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | No | ||
| shape_ids | Yes | ||
| container_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose the mutation/destructive/idempotent profile, and the description adds the semantic behavior that the centering is optical ('visual centre') against the container's centre. It still omits important behavior such as what happens to multiple shape_ids, how the optional axis changes the result, and whether container bounds or clipping affect the move.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded with the verb and goal and contains no filler, so it is structurally clean. It is a bit too terse for a destructive three-parameter operation, but the conciseness itself is strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with three parameters, zero schema descriptions, and no output schema, the description is not complete enough. It explains the high-level optical-centering intent but not the axis options, multiple-shape handling, or operational effects needed to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It loosely maps 'icon' to shape_ids and 'container' to container_id, but it does not explain the array nature of shape_ids or the axis enum values (both/horizontal/vertical).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a concrete verb ('Move') with a concrete resource ('an icon') and a clear goal ('visual centre ... on its container's centre'), so the core operation is identifiable. It does not distinguish itself from siblings like align, align_to_artboard, or measure_optical_center, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no explicit when-to-use or when-not-to-use guidance and never names related alignment or measurement tools. An agent can infer optical centering as the purpose, but the description provides no routing information to alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_editorPause the server editorBIdempotentInspect
Save and close the server editor.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false. The description adds real value by revealing that unsaved work is persisted before closing, but it doesn't clarify whether this effectively terminates the session, whether state can be resumed, or what happens to server-side resources after the close.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though brevity here shades into under-specification of the pause/close semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description bears the burden of explaining consequences, and it only partially does: save-then-close is stated, but reversibility and post-close server state are not. For a session-lifecycle tool with dozens of adjacent commands, that leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The lack of parameters also correctly signals that this is a no-argument lifecycle action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound action on a specific resource: "Save and close the server editor." An agent can tell this is a lifecycle/teardown action distinct from the many mutation siblings, though the title/name "pause" versus the description's "close" leaves ambiguity about whether the editor can be resumed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no named alternative among the many siblings (e.g., open_project/current_project). The agent must infer from the name alone that this is a session-ending action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencilDraw pencil strokeCInspect
Draw a freehand stroke the way the Pencil tool does. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| ink | No | ||
| name | No | ||
| style | No | ||
| closed | No | ||
| points | No | ||
| wobble | No | ||
| opacity | No | ||
| artboard | No | ||
| style_ref | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. | |
| wobble_units | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds real context beyond that: the approval-box workaround via a JSON file uploaded with upload_id, and that inline fields override the upload. It still says nothing about what the call creates, whether it affects selection, or how failures (bad upload_id) behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose, which is good. But the second sentence crams the entire curl/upload procedure into one dense clause while omitting any explanation of the many drawing parameters it could have spent words on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, deeply nested tool with no output schema and near-zero schema documentation, the description is far too thin. An agent cannot construct a valid 'points' array or predict the result from what is written here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 9% across 11 parameters, so the description must carry the load and does not. The complex nested 'points' structure (hin/hout, tangent, tension variants) and style fields (stroke_taper, wobble, opacity) get zero explanation; only upload_id is addressed and its meaning is largely repeated from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Draw a freehand stroke" is a specific verb+resource, and the Pencil-tool analogy conveys the freehand character. However it never distinguishes this from siblings such as create_path, draw_svg, smooth_path or edit_path, which all also produce geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage instruction concerns the shell/curl upload workflow, not which drawing tool to pick. There is no statement of when to choose pencil over create_path, draw_svg, or scatter, and no prerequisites for the call itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_imagePlace imageCInspect
Place a photograph in a box.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| fit | No | ||
| url | No | ||
| name | No | ||
| photo | No | ||
| scrim | No | ||
| width | Yes | ||
| height | Yes | ||
| artboard | No | ||
| data_url | No | ||
| corner_radius | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations disclose that this is a non-read-only, open-world, non-idempotent mutation, but the description adds no behavioral detail beyond the one-line purpose. It does not explain placement semantics, whether existing content is replaced, how photo sourcing works, or what happens across repeated calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is front-loaded and contains no wasted words, but it is drastically undersized for a 12-parameter nested tool. Brevity here is under-specification rather than effective concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, 0% schema description coverage, a nested photo object, and no output schema, the description is far too incomplete for an agent to invoke the tool correctly. It leaves nearly all parameter semantics and behavioral expectations undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters, including a nested photo object, enums, and overlapping image sources. The description only hints that 'box' relates to x/y/width/height and adds no meaning for fit, scrim, artboard, url, data_url, corner_radius, or photo query options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'place' and resource 'photograph' are identifiable, but 'in a box' is vague and does not clarify the positioning model or artboard context. It also does not distinguish this tool from siblings like set_reference_image, upload_asset, or search_photos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as search_photos, upload_asset, or generate_illustration. It also omits any prerequisites or exclusions, leaving routing entirely to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_symbolPlace symbolCInspect
Place an instance of a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | No | ||
| symbol_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, and idempotentHint=false, so the mutation and safety profile is covered structurally. The description adds nothing beyond that: it does not say whether placement requires an active artboard, whether the symbol must exist locally, what happens on repeat placement, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which satisfies brevity. But it is under-specified rather than efficiently concise: the one sentence could have carried the parameter and usage detail that is currently missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutating placement tool with no output schema and no schema descriptions, the definition is far too thin. An agent cannot determine coordinate semantics, the name/symbol_id relationship, or the required editor state from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, so the description carries the full burden and fails it. It never explains that x and y are coordinates (or their coordinate space/units), what 'name' sets versus 'symbol_id', or whether any parameter is required – all four are optional per the schema, which is unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Place') and resource ('an instance of a symbol'), which implies instancing rather than defining, distinguishing it weakly from make_symbol. However, it does not name or contrast with adjacent siblings such as place_image, duplicate, or detach_symbol, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling to prefer for related operations like make_symbol, detach_symbol, or place_image. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_illustrationsPlan illustrationsCDestructiveIdempotentInspect
List the illustrations each screen needs (none, one or several); the reply gives per_screen and the routes for the user to approve.
| Name | Required | Description | Default |
|---|---|---|---|
| illustrations | No | The illustrations the design needs: {name, shows, screens: [the artboards it goes on]}, one subject each. A screen may have none, one or several; ui: a drawing is never shared. An empty list means the design has none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, but the description does not disclose what may be destroyed or modified, nor does it explain the approval workflow in enough detail. 'List' and 'routes for the user to approve' undersell the destructive annotation without explicitly contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is concise, though terms like 'per_screen' and 'routes' are unexplained and slightly cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a destructive annotation, the description should explain return values and mutation/approval behavior more fully. It mentions per_screen and routes but does not clarify what is written, what approval changes, or how this relates to sibling illustration tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single illustrations parameter is already richly documented in the schema, including the {name, shows, screens} structure and the empty-list case. The description adds no parameter meaning beyond what the schema provides, which is acceptable given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource: it lists the illustrations each screen needs and returns per_screen routes for approval. However, it is vague about what 'plan' means versus sibling tools like generate_illustration, illustration_jobs, and create_icon, so an agent cannot confidently distinguish it from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as generate_illustration or illustration_jobs. It implies a planning/approval workflow but does not state prerequisites, exclusions, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_screenRead screen structureBRead-onlyIdempotentInspect
Read a screen's layout tree, sizing, text, paint, taps, asset ids and tokens, to build it in code.
| Name | Required | Description | Default |
|---|---|---|---|
| node | No | ||
| artboard | No | ||
| max_nodes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint false and a closed world, so the safety profile is covered. The description earns credit by disclosing what the call actually returns (layout tree, sizing, text, paint, taps, asset ids, tokens) — valuable because there is no output schema. It says nothing about scope limits such as max_nodes truncation or whether node/artboard default to the whole document.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource comes first and the payload list follows. The comma-separated enumeration is dense but every item conveys distinct return content, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations plus the return-content list make the read operation adequately understood despite no output schema. However, with three undocumented parameters and no mention of defaults, partial reads, or truncation behavior, an agent can call it but cannot confidently control its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all three parameters (node, artboard, max_nodes) are documented nowhere. The description never mentions them, so an agent cannot tell that 'node' scopes to a subtree, that 'artboard' accepts an id or index, or that max_nodes caps traversal. It only vaguely implies a single-screen scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read a screen's layout tree') and enumerates exactly what is extracted: sizing, text, paint, taps, asset ids and tokens. It also gives the downstream purpose ('to build it in code'). It does not name how it differs from near-siblings like inspect_layout, list_shapes, or look, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to build it in code' implies the usage context: use this when you need to replicate or reimplement a screen rather than edit it. There is no explicit when-not guidance and no named alternative such as inspect_layout or describe_document, so selection among overlapping read tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorderChange stacking orderDDestructiveInspect
Change stacking order.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| shape_ids | Yes | ||
| reference_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the description only needs to add context — and it adds none. It never explains what is destroyed (prior stacking positions are lost), that changes are not idempotent, or that certain modes need a reference shape. It does not contradict the annotations, but it contributes nothing beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, so there is no padding, but brevity here is under-specification rather than conciseness. Nothing about modes, ordering semantics, or the reference shape is front-loaded because nothing is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with 3 parameters, 0% schema coverage, an undocumented enum, and no output schema, the description is wholly inadequate. An agent cannot call this correctly without guessing at the meaning of mode and reference_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 3 parameters, and the description compensates for none of it. The enum's six modes (front/back/forward/backward/behind/in_front_of) are never explained, and it never states that reference_id is effectively required when mode is "behind" or "in_front_of" — a hidden conditional the agent cannot infer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Change stacking order" restates the title verbatim and names no resource (shapes/layers/z-order), so the agent cannot tell from the text whether this operates on shapes, artboards, or layers. It is only distinguishable from siblings like align, distribute, or group by opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of any sibling tool as an alternative (e.g. how this differs from align or distribute). The agent gets no signal for choosing this tool over the ~70 others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repeatRepeat shapesCDestructiveInspect
Copy shapes into a row, grid or circle.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | No | ||
| axis | No | ||
| mode | No | ||
| count | Yes | ||
| radius | No | ||
| rotate | No | ||
| columns | No | ||
| row_gap | No | ||
| artboard | No | ||
| center_x | No | ||
| center_y | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false, but the description says only 'copy', which reads as non-destructive duplication and never explains what the operation overwrites or removes. No mention of whether originals are preserved, whether existing copies are replaced on re-run, or of any undo/confirmation path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and waste-free, so it is not verbose. But one clause is a poor size fit for a 12-parameter, destructive arrangement tool, so the terseness comes at the cost of coverage rather than representing disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, zero schema descriptions, no output schema, and a destructive annotation, the description is far too thin to let an agent call this correctly. It conveys the high-level concept (repeating into rows/grids/circles) but nothing about units, defaults, or the interaction between count, columns, and radius.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only prose available; it maps 'row, grid or circle' onto the mode enum, which is genuinely useful. However, nine other parameters (gap, radius, rotate, columns, row_gap, artboard, center_x, center_y, shape_ids) get no explanation at all, leaving the bulk of the surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (copy) and resource (shapes) plus the three arrangement patterns, which maps onto the linear/grid/radial mode enum. It does not name distinguishing siblings such as duplicate or scatter, so an agent cannot tell from the text alone when this differs from those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no mention of alternatives like duplicate (plain copy) or scatter/distribute (spatial placement). The agent must infer the choice from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resizeResize shapesCDestructiveIdempotentInspect
Set the exact width or height of shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| anchor | No | ||
| height | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, destructive, idempotent mutation, so the safety profile is available elsewhere. The description adds only that dimensions are exact; it does not explain destructive effects, anchor behavior, aspect-ratio handling, or what happens when only one dimension is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the operation front-loaded. It does not waste words, though its terseness leaves several parameters unexplained rather than structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive four-parameter mutation with no output schema and no schema parameter descriptions, this is too sparse. An agent can infer the basic operation, but not anchor semantics, required shape targeting, or the implications of missing width/height values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only mentions width and height and indirectly shape_ids via 'shapes'. It says nothing about the anchor enum, the required shape_ids array, or whether width and height are optional or mutually exclusive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: setting exact width or height on shapes. It is clear enough to distinguish a dimension-setting operation from generic transforms, but it does not name or differentiate against siblings such as transform, fit_to_box, or make_responsive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use resize versus transform, fit_to_box, make_responsive, or align. The phrase 'exact width or height' hints at a use case, but no alternatives or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_overflowPull shapes inside frameCDestructiveIdempotentInspect
Move shapes back inside a frame.
| Name | Required | Description | Default |
|---|---|---|---|
| shrink | No | ||
| padding | No | ||
| artboard | No | ||
| shape_ids | Yes | ||
| container_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds nothing beyond them – it does not say what 'moving back' does to shape geometry, whether shrink resizes shapes, or how padding is applied, which is important for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, so nothing is wasted, but it is under-specified rather than concise. There is no front-loaded guidance beyond the bare action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive, five-parameter mutation tool with no output schema and zero schema description coverage requires the description to carry much more. The agent cannot determine the role of shrink/padding, whether artboard and container_id are alternatives, or what the returned result is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Five parameters with 0% schema description coverage, and the description mentions none of them. The meaning of 'shrink', 'padding', 'artboard', 'container_id', and the accepted formats for shape_ids are entirely undocumented. Even the boolean 'shrink' has no stated default or effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Move...back inside') and resource ('shapes', 'frame'), which is more than a restatement of the title. However the schema never uses the term 'frame' – it offers container_id and artboard – so the description and schema vocabulary don't line up, leaving the agent to guess which parameter is the 'frame'. Siblings like fit_to_box and fit_to_children are not differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus fit_to_box, fit_to_children, align_to_artboard, or clip_shapes, all of which sound related. No preconditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scatterScatter shapesCInspect
Place many seeded copies of one item inside an area.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| name | No | ||
| seed | No | ||
| count | Yes | ||
| region | Yes | ||
| artboard | No | ||
| avoid_ids | No | ||
| size_jitter | No | ||
| min_distance | No | ||
| rotation_jitter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, non-idempotent, non-destructive, so the safety profile is covered. The description adds only the hint that copies are 'seeded' (implying reproducible randomness), but says nothing about what gets created, whether the new shapes are returned or named, or how jitter/avoidance behave at call time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler. However, 'appropriately sized' cuts against it here: one sentence is far too thin for a 10-parameter generative tool with nested inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, nested objects, no output schema, and no parameter documentation anywhere, the description leaves an agent unable to call this correctly. It should at least explain how region, count, and the jitter/avoidance knobs interact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 parameters, including a nested item object and a three-way anyOf region. The description mentions only the implicit notions of item, count, and area, and is silent on seed, min_distance, avoid_ids, size_jitter, rotation_jitter, name, and artboard.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and outcome ('Place many seeded copies of one item inside an area'), which an agent can grasp without opening the schema. It does not distinguish this from sibling tools that also replicate content (repeat, duplicate, distribute), leaving overlap unresolved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose scatter over repeat, duplicate, distribute, or place_image. The agent must infer the use case purely from the word 'scatter'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_photosSearch stock photosBRead-onlyIdempotentInspect
Search Unsplash and Pexels for photographs; nothing is placed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| source | No | ||
| preview | No | ||
| orientation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description reinforces this with 'nothing is placed', but adds no context about hit-count behavior, pagination, rate limits, or what 'preview' changes in the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the action and the non-mutation guarantee front-loaded. Every clause earns its place and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, zero-coverage, no-output-schema tool, the description is too thin. An agent cannot tell what a result record contains (image URLs, thumbnails, attribution) or how the unexplained preview flag changes output, which matters for downstream place_image use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full responsibility for five parameters. It only names the two providers, which the schema enum already enumerates, and says nothing about what limit defaults to, what preview toggles, or how orientation affects results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (photographs) plus the two upstream providers, Unsplash and Pexels. The clause 'nothing is placed' implicitly separates it from the sibling place_image, but does not name that sibling explicitly, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'nothing is placed' hints that use this tool for discovery and place_image for insertion, but the guidance is implied rather than stated. There is no explicit when-to-use, when-not, or prerequisite framing for the source/limit/orientation options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_artboardSwitch active artboardCIdempotentInspect
Make an artboard the active one.
| Name | Required | Description | Default |
|---|---|---|---|
| artboard | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: it doesn't say whether the switch is persisted to the document, whether it affects subsequent drawing/export operations, or what happens if the artboard is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste, but that brevity comes at the cost of under-specification rather than earned concision. Nothing is front-loaded beyond a bare restatement of the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a 0%-documented parameter, the description should carry the burden of explaining accepted identifier forms and the effect on editor state. It does neither, leaving the agent to guess how to address the artboard.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single `artboard` parameter is typed as anyOf integer|string with no explanation. The description does not clarify whether an integer means an index and a string means a name/ID — the most important ambiguity for calling this tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: making an artboard the active one. An agent can understand the action without opening the schema. However, it gives no differentiation from plausible siblings such as `set_artboard` or `add_artboard`, which is a real ambiguity for a one-line description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus `set_artboard` — a sibling whose name suggests strongly overlapping functionality — nor on prerequisites such as an open project or existing artboard. The agent must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_artboardEdit artboardBDestructiveIdempotentInspect
Resize, move, rename, recolour or delete an artboard; notes holds a slide's speaker notes.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | No | ||
| tone | No | base, inverse (a dark page) or accent (a page in the accent colour); layouts built on it afterwards use that tone. | |
| notes | No | Speaker notes for this slide or page: what the presenter says. They stay with the slide in the project and go into the PowerPoint export's notes. An empty string clears them. | |
| width | No | ||
| delete | No | true deletes the artboard and every shape on it (one undo step); links into it then go nowhere. | |
| height | No | ||
| artboard | No | ||
| background | No | ||
| move_content | No | false moves the frame alone; by default its shapes and layouts move with it. | |
| show_background | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (destructiveHint=true, idempotentHint=true, readOnlyHint=false), so the description only needed to add operational context — and it adds none. It never says whether omitted parameters leave values unchanged, what happens when several mutating fields are passed together, or that deletion is undoable (that detail lives in the schema, not here). For a destructive 12-parameter mutation tool this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the action verbs and ends with the one non-obvious parameter fact. It wastes no words, though the terseness is arguably under-specification rather than discipline given 12 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive, zero-required-parameter mutation tool with 12 parameters, 33% schema coverage, and no output schema gets only one sentence and no return-value or partial-update semantics. An agent would not know how fields interact, what the tool returns, or how the artboard target is addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it partially does by mapping its verbs onto parameter clusters: resize→width/height, move→x/y, rename→name, recolour→background/tone. However it never explains the `artboard` target selector (integer or string), `show_background`, or what format `background` expects, and `notes` is the only parameter given any real explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (resize, move, rename, recolour, delete) against a specific resource (artboard), so the agent knows exactly what class of operation this is. It does not differentiate itself from siblings like add_artboard, set_active_artboard, resize, or fit_artboard, which is the only thing keeping it off a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The enumerated verbs imply when to reach for this tool (any mutation of an existing artboard), but there is no explicit statement of when not to use it or which sibling to prefer for overlapping operations such as resizing or activating an artboard. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_filterSet blur or shadowBDestructiveIdempotentInspect
Set blur, soft shadows and opacity, or clear them.
| Name | Required | Description | Default |
|---|---|---|---|
| blur | No | ||
| region | No | ||
| shadow | No | ||
| opacity | No | ||
| shadows | No | ||
| artboard | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds that clearing is supported, which is useful, but it does not explain what clearing affects, how destruction applies to shape_ids, or any permission/scope constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no redundant wording. The terse style is appropriate for the description itself, even though important details are missing elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with 7 parameters, nested objects, 0% schema description coverage, and no output schema, the description is too sparse. It omits required shape targeting, region vs. artboard behavior, shadow array semantics, and clearing mechanics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with 7 parameters including nested shadow objects and region/artboard targeting. The description mentions blur, shadows, and opacity but does not explain required shape_ids, region, artboard, shadow vs. shadows, color, or how clearing is expressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and effects: setting blur, shadows, opacity, or clearing them. It is understandable despite the vague tool name 'set_filter', though it does not explicitly differentiate itself from nearby style/filter-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'or clear them' implies a removal mode, but there is no explicit guidance on when to use this tool, when not to, or which sibling tool to use for related style effects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_gradientSet gradient fillCDestructiveInspect
Paint fill or stroke with a linear or radial gradient.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| angle | No | ||
| stops | No | ||
| units | No | ||
| def_id | No | ||
| spread | No | ||
| target | No | ||
| focal_x | No | ||
| focal_y | No | ||
| artboard | No | ||
| shape_ids | Yes | ||
| coordinates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the dangerous nature is machine-readable. The description adds nothing beyond that: it doesn't say the existing fill/stroke paint is overwritten, whether the operation is reversible, or what happens to previously defined gradients referenced by def_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded, with no filler. But the brevity here is under-specification rather than economy — the space saved is not spent on anything the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 12-parameter mutation with nested geometry, no output schema, and zero schema descriptions, the definition is nowhere near sufficient. An agent cannot determine required coordinate fields per gradient type or what gets overwritten without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters including a nested coordinates object with 10 sub-fields. The sentence only alludes to 'fill or stroke' and 'linear or radial', which the schema's own enums already convey, and says nothing about angle, stops offsets/color/opacity, units, spread, focal points, def_id, or artboard.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('paint fill or stroke') plus the two gradient types, which distinguishes it from set_pattern and set_filter by implication. It never names those siblings explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus set_pattern or set_style, no prerequisites (selection, artboard scope), and no conditions under which it should not be used. The agent is left to infer everything from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_lockedLock or unlock shapesDDestructiveIdempotentInspect
Lock or unlock shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| locked | Yes | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=true, but the description adds nothing beyond them. It does not contradict the annotations, but it also gives no context on what destruction means here, whether locking applies recursively to children of a group, or whether locked shapes can still be selected or transformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short and front-loaded, but this is under-specification rather than conciseness — every word simply duplicates the title, so no sentence earns additional value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a low-coverage input schema, the description needed to explain the toggle semantics and the multi-id scope of shape_ids; it does neither. For a mutation tool flagged destructive, this leaves meaningful gaps an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining the two parameters and does not. It never says that 'locked: true' locks and 'false' unlocks, nor that shape_ids accepts multiple ids and what happens with mixed or invalid ids.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Lock or unlock shapes" does contain a verb (lock/unlock) and a resource (shapes), but it is a verbatim restatement of the title "Lock or unlock shapes" and adds no distinguishing detail. It never explains what locking means in this editor (e.g., prevents selection/editing) or how it differs from related siblings like clip_shapes or group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to lock versus unlock, no prerequisites (does the shape need to be selected or active?), and no mention of alternatives among the many sibling tools. The agent must infer everything from the boolean parameter name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_patternSet pattern fillCDestructiveInspect
Fill shapes with a built-in pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| pattern | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so safety signaling is covered. The description adds little beyond the basic action: it does not explain whether existing fills are overwritten, whether the operation is reversible, or what a successful result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded, with no wasted wording. However, for a destructive tool with three undocumented parameters, the extreme brevity leaves the definition under-specified rather than appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool mutates fills, has no output schema, and has 0% schema description coverage, the description is too sparse. It should at least clarify the built-in pattern format, color behavior, and whether existing fills are replaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, but it does not mention the color or shape_ids parameters at all. 'Built-in pattern' hints that the pattern parameter expects a built-in pattern name, but format, valid values, and required shape_ids usage remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fill') and resource ('shapes') with a clear modifier ('built-in pattern'), making the tool's basic action understandable. It does not explicitly differentiate this tool from sibling fill tools such as set_gradient or set_style, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like set_gradient, set_style, or set_filter. It implies the tool is for applying pattern fills, but gives no conditions, prerequisites, or exclusions to help an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_reference_imageLoad reference imageAInspect
Load the find_references picture picked for a planned illustration (or the user's own picture as data_url); the reply shows it. Not in the design.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | What the picture shows, e.g. "warehouse with an open loading bay". | |
| data_url | No | Instead of candidate: a picture the user supplied, as a PNG, JPEG or WebP data URL. | |
| candidate | No | The candidate id you picked from find_references for this illustration. | |
| illustration | Yes | The planned illustration, by its name in plan_illustrations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false, destructiveHint=false, and openWorldHint=false, the description adds useful context that the reply displays the image and that it is not part of the design. However, it does not explain replacement behavior, persistence, or side effects beyond what the annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core action and source options. The fragment 'Not in the design' is useful but slightly cryptic, keeping it from being maximally clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four params, full schema descriptions, annotations, and no output schema, the description supplies the key context: what source to load, that the reply shows the image, and that it is not a design insertion. It leaves some secondary behavior such as replacement semantics unstated, but is broadly complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter meanings are already documented in the input schema. The description reinforces the candidate/data_url source distinction but adds little beyond the schema and does not mention the 'name' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Load') and resource ('reference image'), and ties it to a planned illustration and find_references candidates. It also distinguishes the action from design placement via 'Not in the design,' though the phrasing is somewhat compressed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use for a planned illustration's reference picture, either a find_references candidate or the user's own data_url image. 'Not in the design' provides an exclusion, but it does not explicitly name sibling tools such as place_image or upload_asset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_styleSet styleCDestructiveIdempotentInspect
Change fill, stroke, caps, joins, taper or opacity.
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | ||
| stroke | No | ||
| opacity | No | ||
| shape_ids | Yes | ||
| stroke_taper | No | ||
| stroke_width | No | ||
| stroke_linecap | No | ||
| stroke_linejoin | No | ||
| stroke_taper_amount | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds the set of mutable style properties but does not explain overwrite behavior, scope, or what happens to omitted properties.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, it is under-specified for a 9-parameter destructive mutation tool, so its brevity comes at the cost of necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, destructive nature, 0% schema description coverage, and lack of an output schema, the description is incomplete. It does not mention the required shape_ids target, defaults, overwrite semantics, or how the enumerated properties map to the actual parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate but only partially does. It names fill, stroke, caps, joins, taper, and opacity, but omits the required shape_ids parameter, stroke_width, and stroke_taper_amount, and provides no formats or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Change', and names the style attributes affected: fill, stroke, caps, joins, taper, and opacity. It clearly conveys a styling mutation but does not distinguish itself from related siblings like define_styles, set_gradient, or set_pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no guidance on when to use this tool versus alternatives such as define_styles or set_gradient, nor does it state prerequisites or exclusions. The usage is only implied by the word 'Change'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_textEdit textCDestructiveIdempotentInspect
Change text content or typography.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | ||
| font_size | No | ||
| shape_ids | Yes | ||
| font_style | No | ||
| font_family | No | ||
| font_weight | No | ||
| line_height | No | ||
| text_anchor | No | ||
| letter_spacing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds nothing beyond that: it does not say that supplying 'content' overwrites existing text irreversibly, whether omitted typography fields are preserved, or how multiple shape_ids are handled. No contradiction with annotations, but no added behavioral value either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but its brevity is under-specification rather than efficiency — six words cannot carry a nine-parameter destructive mutation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, zero schema documentation, no output schema, and a destructive write, the definition should explain at minimum the target shape semantics and what content replacement does. It leaves an agent unable to call this correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description carries the full burden and fails. Only a loose mapping is implied ('text content' → content, 'typography' → font_* fields); units for font_size/line_height/letter_spacing, the meaning of the enums, and the role of the required shape_ids array are all unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Change') and two resource classes ('text content or typography'), so an agent knows this edits existing text rather than creating it. It does not differentiate from nearby siblings such as text_on_path, measure_text, or set_style, and never mentions that it targets shapes by ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives like text_on_path (text along a path) or set_style (styling), and no mention of prerequisites such as the target shapes needing to already contain text. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smooth_pathSmooth pathCDestructiveInspect
Fill missing handles, refit curves, or turn a stroke into ink.
| Name | Required | Description | Default |
|---|---|---|---|
| ink | No | ||
| mode | No | ||
| corners | No | ||
| protect | No | ||
| tension | No | ||
| shape_id | Yes | ||
| tolerance | No | ||
| corner_angle | No | ||
| display_width | No | ||
| split_extrema | No | ||
| subpath_index | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the description does not need to restate the safety profile. It does not add important behavioral context such as whether refitting or ink conversion is irreversible, what gets destroyed, or how existing geometry is affected. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, which is good for scanning. However, it is so terse for an 11-parameter destructive operation that it reads as under-specified rather than appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 11-parameter path operation with no output schema, the description is far too thin. It omits mode semantics, parameter roles, expected effects, and any explanation of what the operation changes on the document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 11 parameters with 0% schema description coverage, and the description explains none of them. It mentions ink and missing handles/curves but does not map these to shape_id, mode, corners, protect, tension, tolerance, corner_angle, display_width, split_extrema, or subpath_index.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three concrete operations—filling missing handles, refitting curves, and turning a stroke into ink—so the broad purpose is inferable. However, it never explicitly states that it operates on a path/shape identified by shape_id, and it does not distinguish itself from siblings such as edit_path, inspect_path, create_path, or offset_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no exclusions, and no prerequisites. The description only hints at capabilities and leaves routing decisions entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snap_to_gridSnap to gridCDestructiveIdempotentInspect
Snap shapes to a grid.
| Name | Required | Description | Default |
|---|---|---|---|
| grid | No | ||
| size | No | ||
| as_unit | No | ||
| artboard | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=false. The description does not add what gets destroyed, what permissions are required, or how shapes are affected, so it provides no behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one front-loaded sentence with no wasted words. However, it is too terse for a five-parameter destructive mutation, so the brevity reflects under-specification rather than appropriate conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, five-parameter tool with no output schema and no parameter descriptions, the definition is not complete enough for correct invocation. Only the core action is stated, leaving key parameter and behavioral details undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage across five parameters. The description implicitly identifies shape_ids and grid, but says nothing about size, as_unit, or artboard, so it fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence names the verb 'snap', the object 'shapes', and the target 'grid', so the basic action is clear. However, it adds almost nothing beyond the title 'Snap to grid' and does not distinguish snapping from sibling operations such as align, distribute, or fit_to_box.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool instead of align, distribute, fit_to_box, or other layout tools. The agent must infer usage and prerequisites entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_on_pathPut text on a pathCDestructiveInspect
Set a text shape along a path.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | ||
| offset | No | ||
| flipped | No | ||
| path_id | Yes | ||
| text_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is destructive, non-read-only, and non-idempotent, so the safety profile is covered. The description adds no behavioral detail beyond the operation itself—it does not explain what happens to existing text/path data, whether the change is reversible, or how side/offset/flipped affect the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficiently front-loaded and free of bloat, but its terseness leaves important operational context unstated. It reads more like a title restatement than a complete tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter destructive mutation tool with no output schema and 0% schema coverage, the description is too thin. Annotations cover the safety flags, but an agent still lacks enough information to understand the parameters and expected effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it only implicitly references text and path. It says nothing about side, offset, flipped, or the meaning/format of text_id and path_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific action and resource: setting a text shape along a path. It is clear enough to distinguish this from text-editing or path-creation siblings, though the verb 'Set' is somewhat generic and no sibling is explicitly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus set_text, create_path, edit_path, or other text/path tools. It also omits prerequisites such as whether the text shape and path must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transformMove, scale or rotateCDestructiveInspect
Move, scale or rotate shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| dx | No | ||
| dy | No | ||
| scale | No | ||
| rotate | No | ||
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotent, so the agent knows this mutates state. The description adds nothing beyond that — no mention of reversibility, whether transforms are cumulative, or what happens to shapes in groups or locked shapes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the operation set. It is concise but the brevity comes at the cost of under-specification rather than efficient information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive five-parameter mutation with zero schema documentation and no output schema, the description is far too thin. An agent cannot call this correctly without knowing units, coordinate frames, or how the operations combine.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and five parameters (dx, dy, scale, rotate, shape_ids) are entirely undocumented. The description says 'move, scale or rotate' but never maps those words to units or semantics — is rotate in degrees or radians, is scale a multiplier or absolute size, are dx/dy relative offsets? Nothing compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb group (move, scale, rotate) and resource (shapes) are stated, so the basic purpose is clear. But it reads as a near-restatement of the title and does not distinguish this from close siblings like resize, flip, align, distribute, or mirror, which an agent must choose between for geometric manipulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says whether these transforms are relative or absolute, whether multiple shapes are transformed around a shared origin, or which sibling to prefer for simple resizing versus arbitrary transforms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ungroupUngroup shapesCDestructiveIdempotentInspect
Break groups into their shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| shape_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds no behavioral context beyond the basic operation, such as what happens to the group container, whether child shapes retain their relative transforms, or whether nested groups are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is structurally clean, though its terseness leaves important gaps addressed in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema and an undocumented required parameter, the description is incomplete. It should specify what gets destroyed or preserved and explain the 'shape_ids' parameter, but it does neither.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it never mentions 'shape_ids.' It does not clarify whether these are group IDs, whether multiple groups can be passed, or what the array format expects beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Break,' and identifies the resource, 'groups,' plus the result, 'their shapes.' It clearly describes the inverse of the sibling tool 'group,' though it does not explicitly name or contrast with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'group' or 'delete_shapes,' nor does it mention prerequisites or exclusions. Usage is only implied by the operation itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_layoutUpdate layoutBDestructiveInspect
Patch or replace a layout made by create_layout. With a shell (Claude Code): write the fields to a JSON file, curl it to the upload link new_project gave and pass only upload_id, so the user approves a short call.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| root | No | ||
| width | No | ||
| height | No | ||
| patches | No | Edits addressed by node path. | |
| verbose | No | ||
| layout_id | No | ||
| upload_id | No | With a shell: the upload_id of a JSON file of this call's fields, sent with curl to the upload link new_project gave (keeps the user's approval box short). Fields in the call itself win. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, and 'patch or replace' is consistent with that. The description adds genuinely new context — the offloaded upload_id approval flow and that it keeps the user's approval box short — but never spells out what a replace destroys or what patch leaves intact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, followed by one non-obvious operational detail. Neither sentence is filler, though the upload_id sentence is dense with parentheticals that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent tool with 9 parameters and zero required fields, the description leaves too much unanswered: it doesn't explain how layout_id is supplied, what 'replace' means mechanically, or why no parameter is mandatory, and there is no output schema to cover returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 22% across 9 parameters; only patches and upload_id carry descriptions, and the description itself only elaborates on upload_id. layout_id, root, patches paths, verbose, and the x/y/width/height geometry are left with no meaning beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair ('patch or replace') and the resource ('a layout'), and anchors it to its sibling by noting the layout must have been made by create_layout. It does not differentiate against inspect_layout or apply_layout_fixes, but the mutation-vs-read distinction is clear from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The dependency on create_layout is stated, and the shell/upload_id path is explained, which is real usage guidance. However, it never says when to patch versus when to replace, when to inspect a layout first, or how this differs from apply_layout_fixes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_assetUpload image or fileCDestructiveInspect
Place the user's own image or SVG file.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| as | No | ||
| fit | No | ||
| url | No | ||
| name | No | ||
| scrim | No | ||
| width | No | ||
| height | No | ||
| purpose | No | ||
| artboard | No | ||
| asset_id | No | ||
| data_url | No | ||
| shape_ids | No | ||
| tile_size | No | ||
| corner_radius | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered structurally. The description adds only the 'user's own' sourcing nuance and says nothing about the destructive consequences of placement, how url/data_url/asset_id differ as sources, or what happens when placement overlaps existing shapes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, but the brevity comes from under-specification rather than economy; it front-loads nothing about the 16-parameter surface an agent must fill in.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter, destructive, non-idempotent mutation with no output schema and no schema descriptions, the description is far from sufficient. An agent could not correctly supply placement coordinates, source selection, or fitting behavior from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Sixteen parameters with 0% schema description coverage and no parameter discussion whatsoever in the description. Nothing explains x/y positioning, fit cover vs contain, 'as' auto/shapes/image, purpose artwork vs pattern_tile, tile_size, corner_radius, scrim, or the three mutually exclusive asset sources.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (place) and resource (image or SVG file) and adds the useful qualifier 'the user's own', distinguishing it from stock sources. But it does not distinguish itself from close siblings like place_image, set_reference_image, add_texture, or get_assets, so an agent cannot confidently pick between them from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this versus place_image, search_photos, get_assets, or add_texture, and no mention of prerequisites such as needing an open project or active artboard. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
92 tool updates
- Changed
account_status1 field changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema"
- Added
add_artboard - Added
add_hidden_ui - Added
add_texture - Added
align - Added
align_to_artboard - Added
apply_layout_fixes - Added
bind_slot - Added
boolean_op - Added
check_contacts - Added
check_contrast - Added
clip_shapes - Added
clip_to_artboard - Added
compare_drawing - Added
create_icon - Added
create_layout - Added
create_path - Added
create_shapes - Added
current_project - Added
define_styles - Added
delete_shapes - Added
describe_document - Added
design_tokens - Added
detach_symbol - Added
distribute - Changed
docs18 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / componentsAdded value: +{ + "const": true, + "description": "true: the components, their props and defaults, the icon names and the layout node types. Read on its own.", + "type": "boolean" +} - added
Input schema / properties / fontsAdded value: +{ + "anyOf": [ + { + "const": true, + "type": "boolean" + }, + { + "properties": { + "category": { + "enum": [ + "sans", + "serif", + "slab", + "mono", + "display", + "script", + "handwriting" + ], + "type": "string" + }, + "family": { + "type": "string" + }, + "query": { + "type": "string" + }, + "role": { + "enum": [ + "display", + "text", + "both", + "mono", + "accent" + ], + "type": "string" + } + }, + "type": "object" + } + ], + "description": "true, or {role, category, query, family}: the curated type catalog, each family's role, personality, pairings and weights. Read on its own." +} - changed
Input schema / properties / guide / descriptionPrevious value: -"One guide's id from the index, e.g. typography-direction."New value: +"Guide id, e.g. start-here or drawing-from-references." - removed
Input schema / properties / guide / maxLengthRemoved value: -64 - added
Input schema / properties / guidesAdded value: +{ + "description": "Up to 8 guide ids, read whole in one call.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / lessonAdded value: +{ + "description": "Not used in SVG Lab Draw: returns the illustration routine.", + "type": "string" +} - added
Input schema / properties / lessonsAdded value: +{ + "description": "Not used in SVG Lab Draw: returns the illustration routine.", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Input schema / properties / opRemoved value: -{ - "description": "One operation's name, e.g. create_layout.", - "maxLength": 64, - "type": "string" -} - removed
Input schema / properties / opsRemoved value: -{ - "description": "Several operation names, returned together in request order.", - "items": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" -} - removed
Input schema / properties / query / descriptionRemoved value: -"Words to search for, e.g. \"gradient\" or \"draw a hand\"." - removed
Input schema / properties / query / maxLengthRemoved value: -200 - removed
Input schema / properties / recipeRemoved value: -{ - "enum": [ - "assembly", - "chunking", - "recovery", - "layout-patches", - "helpers" - ], - "type": "string" -} - added
Input schema / properties / referenceAdded value: +{ + "description": "With skill: a linked document.", + "type": "string" +} - added
Input schema / properties / skillAdded value: +{ + "description": "Designer skill id.", + "type": "string" +} - added
Input schema / properties / toolAdded value: +{ + "description": "One tool's full reference.", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
- Added
draw_svg - Added
duplicate - Added
edit_path - Added
export_artboard - Added
export_code - Added
export_document - Added
find_references - Added
fit_artboard - Added
fit_to_box - Added
fit_to_children - Added
flip - Added
generate_illustration - Added
get_assets - Added
group - Added
illustration_jobs - Added
inspect_layout - Added
inspect_path - Added
list_artboards - Added
list_design_styles - Added
list_layouts - Added
list_projects - Added
list_shapes - Added
list_symbols - Changed
look18 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / artboard / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "maxLength": 120, - "type": "string" - } -]New value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - changed
Input schema / properties / artboards / items / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "maxLength": 120, - "type": "string" - } -]New value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - removed
Input schema / properties / artboards / minItemsRemoved value: -1 - removed
Input schema / properties / brief / descriptionRemoved value: -"One paragraph for the optional reviewer; retained for this project." - removed
Input schema / properties / brief / maxLengthRemoved value: -4000 - removed
Input schema / properties / brief / minLengthRemoved value: -1 - added
Input schema / properties / inspect_shapeAdded value: +{ + "description": "Path whose anchors come back artboard-local.", + "type": "string" +} - added
Input schema / properties / reference_idAdded value: +{ + "description": "From set_reference_image.", + "type": "string" +} - added
Input schema / properties / reference_regionAdded value: +{ + "anyOf": [ + { + "properties": { + "height": { + "type": "number" + }, + "width": { + "type": "number" + }, + "x": { + "type": "number" + }, + "y": { + "type": "number" + } + }, + "required": [ + "x", + "y", + "width", + "height" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Reference crop when it differs from region." +} - removed
Input schema / properties / region / additionalPropertiesRemoved value: -false - changed
Input schema / properties / region / descriptionPrevious value: -"Crop this rectangle, artboard-local (0,0 is the artboard's top-left)."New value: +"Artboard-local crop." - removed
Input schema / properties / region / properties / height / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / region / properties / width / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / scale / descriptionRemoved value: -"Zoom, up to 4 (8 with region). Omit to let the preview pick." - removed
Input schema / properties / scale / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / scale / maximumRemoved value: -8
- Added
make_responsive - Added
make_symbol - Added
measure_optical_center - Added
measure_text - Added
mirror - Added
name_group - Added
new_project - Added
normalize_radii - Added
normalize_spacing - Added
offset_path - Added
open_project - Added
optical_center - Added
pause_editor - Added
pencil - Changed
place_image23 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / artboard / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "maxLength": 120, - "type": "string" - } -]New value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - removed
Input schema / properties / corner_radius / minimumRemoved value: -0 - removed
Input schema / properties / data_url / descriptionRemoved value: -"data:image/png|jpeg|webp|gif;base64,... Use this only for bytes you already hold; prefer url or photo." - removed
Input schema / properties / data_url / maxLengthRemoved value: -6000000 - removed
Input schema / properties / fit / descriptionRemoved value: -"Default cover." - removed
Input schema / properties / height / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / name / maxLengthRemoved value: -120 - removed
Input schema / properties / photo / additionalPropertiesRemoved value: -false - removed
Input schema / properties / photo / properties / index / descriptionRemoved value: -"Which search result to use, default 0. Use search_photos first when the subject matters." - removed
Input schema / properties / photo / properties / index / maximumRemoved value: -7 - removed
Input schema / properties / photo / properties / index / minimumRemoved value: -0 - removed
Input schema / properties / photo / properties / query / descriptionRemoved value: -"What the photo should show, e.g. \"mountain trail forest\"." - removed
Input schema / properties / photo / properties / query / maxLengthRemoved value: -80 - removed
Input schema / properties / photo / properties / query / minLengthRemoved value: -2 - removed
Input schema / properties / photo / properties / source / descriptionRemoved value: -"Force one source. Default: Unsplash, then Pexels." - changed
Input schema / properties / scrim / anyOfPrevious value: -[ - { - "type": "boolean" - }, - { - "additionalProperties": false, - "properties": { - "color": { - "description": "CSS colour of the wash, default #000000.", - "maxLength": 64, - "type": "string" - }, - "direction": { - "description": "Which edge the wash darkens toward. Default bottom, for a caption at the foot of a hero.", - "enum": [ - "bottom", - "top", - "left", - "right" - ], - "type": "string" - }, - "opacity": { - "description": "Opacity at the strong end, default 0.62.", - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "start": { - "description": "Where the wash begins, 0 to just under 1. Default 0.4, so the top of the photo stays clean.", - "maximum": 0.95, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - } -]New value: +[ + { + "type": "boolean" + }, + { + "description": "Scrim options: docs {tool}.", + "type": "object" + } +] - removed
Input schema / properties / scrim / descriptionRemoved value: -"true for the default bottom wash, or an object. Use it under any text placed over the photo." - removed
Input schema / properties / url / descriptionRemoved value: -"Direct link to an image file. The server fetches it; the editor cannot fetch across origins." - removed
Input schema / properties / url / formatRemoved value: -"uri" - removed
Input schema / properties / url / maxLengthRemoved value: -2048 - removed
Input schema / properties / width / exclusiveMinimumRemoved value: -0
- Added
place_symbol - Added
plan_illustrations - Removed
project - Added
read_screen - Added
reorder - Added
repeat - Added
resize - Added
resolve_overflow - Removed
run - Added
scatter - Changed
search_photos8 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / limit / descriptionRemoved value: -"Candidates to return, default 6." - removed
Input schema / properties / limit / maximumRemoved value: -8 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / preview / descriptionRemoved value: -"Return a small thumbnail of each candidate as an image block. Default true; false when your client cannot view images." - removed
Input schema / properties / query / maxLengthRemoved value: -80 - removed
Input schema / properties / query / minLengthRemoved value: -2
- Added
set_active_artboard - Added
set_artboard - Added
set_filter - Added
set_gradient - Added
set_locked - Added
set_pattern - Added
set_reference_image - Added
set_style - Added
set_text - Added
smooth_path - Added
snap_to_grid - Added
text_on_path - Added
transform - Added
ungroup - Added
update_layout - Changed
upload_asset27 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / artboard / anyOfPrevious value: -[ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "maxLength": 120, - "type": "string" - } -]New value: +[ + { + "type": "integer" + }, + { + "type": "string" + } +] - removed
Input schema / properties / as / descriptionRemoved value: -"SVG only: shapes (default, editable) or image (one picture). Rasters are always images." - removed
Input schema / properties / asset_id / descriptionRemoved value: -"ast_... from POST /api/v1/assets or an earlier upload_asset reply. Expires after 24 h." - removed
Input schema / properties / asset_id / patternRemoved value: -"^ast_[a-z2-7]{16}$" - removed
Input schema / properties / corner_radius / descriptionRemoved value: -"Images only." - removed
Input schema / properties / corner_radius / minimumRemoved value: -0 - removed
Input schema / properties / data_url / descriptionRemoved value: -"data:image/png;base64,... (or image/svg+xml). Small files only; use asset_id for anything over a few KB." - removed
Input schema / properties / data_url / maxLengthRemoved value: -5592470 - removed
Input schema / properties / fit / descriptionRemoved value: -"Images only. Default cover." - removed
Input schema / properties / height / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / name / maxLengthRemoved value: -120 - removed
Input schema / properties / purpose / descriptionRemoved value: -"artwork (default): place the user's file. pattern_tile: an SVG tile that repeats as the fill of shape_ids (patterns and textures only)." - changed
Input schema / properties / scrim / anyOfPrevious value: -[ - { - "type": "boolean" - }, - { - "additionalProperties": false, - "properties": { - "color": { - "maxLength": 64, - "type": "string" - }, - "direction": { - "enum": [ - "bottom", - "top", - "left", - "right" - ], - "type": "string" - }, - "opacity": { - "maximum": 1, - "minimum": 0, - "type": "number" - }, - "start": { - "maximum": 0.95, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - } -]New value: +[ + { + "type": "boolean" + }, + { + "description": "Scrim options: docs {tool}.", + "type": "object" + } +] - removed
Input schema / properties / scrim / descriptionRemoved value: -"Images only: a gradient wash so text over the picture reads." - removed
Input schema / properties / shape_ids / descriptionRemoved value: -"pattern_tile only: the shapes to fill with the repeating tile." - removed
Input schema / properties / shape_ids / items / maxLengthRemoved value: -128 - removed
Input schema / properties / shape_ids / maxItemsRemoved value: -200 - removed
Input schema / properties / shape_ids / minItemsRemoved value: -1 - removed
Input schema / properties / tile_size / descriptionRemoved value: -"pattern_tile only: the tile's width in document units (height follows the SVG's aspect). Default: the SVG's own width, capped at 128." - removed
Input schema / properties / tile_size / maximumRemoved value: -128 - removed
Input schema / properties / tile_size / minimumRemoved value: -2 - removed
Input schema / properties / url / descriptionRemoved value: -"Direct https link to a PNG, JPEG, WebP, GIF or SVG file (not a web page)." - removed
Input schema / properties / url / formatRemoved value: -"uri" - removed
Input schema / properties / url / maxLengthRemoved value: -2048 - removed
Input schema / properties / width / exclusiveMinimumRemoved value: -0
8 tool updates
- First observed
account_status - First observed
docs - First observed
look - First observed
place_image - First observed
project - First observed
run - First observed
search_photos - First observed
upload_asset
Related MCP Connectors
Create professional SVG artwork, icons and vector logos from a prompt, or vectorize any image.
Multilingual semantic SVG icon search with previews for AI coding agents. 20,000+ icons.
Lets AI assistants draw: logos, posters, illustrations and scenes, as editable SVG and PNG.
Generate matching icon sets, spot illustrations and transparent design assets for sites and apps.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAI-powered SVG icon generation MCP server. Generate production-ready SVG icons from text descriptions with customizable styles, sizes, and themes.84 npm8MIT
- AlicenseAqualityDmaintenance🎨 AI-powered UI/UX design intelligence - 1519+ curated design resources through MCP | React, Vue, Next.js, Flutter & more7110 npm41MIT
- AlicenseNot gradedqualityCmaintenanceAI logo design MCP server — generates SVG logos with text-to-path conversion, SVG optimization, and full brand kit export (favicon, social media sizes, color palette). 4 tools: text_to_path, optimize_svg, export_brand_kit, image_to_svg.138 npm54MIT
- AlicenseAqualityBmaintenanceEnables AI-powered image to SVG vectorization, background removal, and SVG manipulation directly through MCP-compatible clients. Users can convert images, process batches, and edit vector properties like colors and complexity using the svg.new API.779 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.