Skip to main content
Glama

Server Details

Build seating charts and run reserved-seat events: sections, prices, blocked seats and sales reports

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 156 tools

Disambiguation4/5

Most tools have explicit "Use when" and "Not for" guidance that sharply separates workflows, such as pre-sale vs on-sale inventory changes. Still, several clusters (build_* chart creation, reference capacity planning, row merge/group tools, event configuration variants) require careful reading to avoid misselection.

Naming Consistency4/5

The surface is overwhelmingly snake_case with verb_noun names such as add_row_block, update_sections, and delete_chart_zone. A few exceptions like diff_vs_reference and long question-oriented names such as answer_reference_capacity_questions keep it from being perfectly uniform.

Tool Count1/5

156 tools is far beyond any reasonable MCP tool surface for a single server, especially since the practical set spans many subdomains (chart design, image tracing, publishing, live events, orders, photos, 3D). Even if each tool earns a narrow role, the count massively burdens tool selection and violates the 50+ extreme-mismatch threshold.

Completeness4/5

The set covers chart creation, editing, floor-plan tracing, review/publish, event setup, inventory, sales channels, orders, reports, 3D structure, and view photos. Some operations are intentionally delegated to Designer or approval/plan workflows, but agents have workarounds for most gaps.

Available Tools

156 tools
activate_event_configurationActivate Event ConfigurationA
DestructiveIdempotent
Inspect

Make a published version the default. Events keep their version. Needs a connection allowed to publish. Use when: a newer version should be used from now on. Not for: going back (use rollback_event_configuration). Next: bind it to an event: plan_inventory_change set_configuration_binding. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "version": 2, "expectedParentRevision": 5}

NameRequiredDescriptionDefault
versionYesPublished version
configurationIdYesId from list_event_configurations
expectedParentRevisionYesconfiguration.revision from get_event_configuration

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true, and the description adds genuinely useful context beyond them: the auth prerequisite ('Needs a connection allowed to publish') and the blast-radius clarification ('Events keep their version'). It does not explain why the operation is destructive (what exactly it overwrites), which keeps it short of a 5 given the destructive flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then layers Use when / Not for / Next / Example in a scannable structure. Every sentence carries a distinct piece of information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an activation/mutation tool with no output schema, the description supplies purpose, prerequisites, alternative, follow-up action, and a concrete invocation example. An agent has everything needed to call it correctly and to route elsewhere if appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented with their sources (list_event_configurations, get_event_configuration revisions). The example reinforces the format with concrete values but adds little beyond what the schema states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Make a published version the default') and immediately clarifies a subtle scope ('Events keep their version'). It distinguishes itself from the closest sibling by pointing to rollback_event_configuration as the opposite operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' (a newer version should be used from now on) and 'Not for' (going back → rollback_event_configuration), plus a 'Next' step pointing at plan_inventory_change set_configuration_binding. All three when/when-not/alternative dimensions are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_areaAdd AreaAInspect

Add a named area that is not sold, such as a dance floor, registration desk, lobby or photo booth, sized in metres. Use when: the venue needs a space marked on the map that nobody buys. Not for: standing areas people buy (use add_ga_area) or bars, entrances and exits (use add_landmark). Example: {"label": "Dance floor", "widthM": 10, "depthM": 8, "placement": "front", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
fillNoHex fill colour; default a light grey
sideNoSide of nearObjectId; default rear
labelYesName shown on the area
shapeNoDefault rect
depthMYesDepth in metres
widthMYesWidth in metres
floorIdNoFloor id; default: first floor
placementNoBeside the whole layout, or center of it. Ignored with nearObjectId
nearObjectIdNoPlace beside this object instead: a section, row, table or shape id from get_chart
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description needn't restate it. The description adds useful domain semantics — the object is non-sellable and dimensioned in metres — but says nothing about the optimistic-concurrency role of expectedUpdatedAt, what happens on a stale value, or the effect on the existing chart layout.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short blocks — definition, use-when, not-for, example — with the purpose front-loaded and zero filler. The negative guidance and the example each earn their space by preventing a specific mis-call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter creation tool with no output schema, the description covers purpose, alternatives and a call example, and annotations cover safety. It stops short of explaining the concurrency contract around expectedUpdatedAt and when to prefer nearObjectId over placement, which are the main remaining decisions an agent must make.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented, including defaults for fill, side, shape, floorId and placement and the meaning of nearObjectId. The worked example shows a realistic minimal call, but it only echoes schema fields rather than adding new semantics (e.g. placement vs nearObjectId precedence is left to the schema).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Add a named area that is not sold') and immediately constrains it with concrete examples (dance floor, registration desk, lobby, photo booth) plus units (metres). It is clearly separable from add_ga_area and add_landmark, which occupy adjacent object kinds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' condition ('the venue needs a space marked on the map that nobody buys') and explicit 'Not for' exclusions naming the correct alternatives for sold standing areas and for landmarks. An agent can route between the three sibling tools without opening any schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_booth_arrayAdd Booth ArrayAInspect

Add a grid of expo or market booths beside the layout. Use when: e.g. "4 rows of 10 booths". Not for: changing booths (use update_booths). Example: {"boothRows": 4, "boothColumns": 10, "categoryKey": "cat_standard", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
boothRowsYesHow many rows of booths, 1-30
placementNoSide of the layout; auto = rearauto
categoryKeyYesCategory key from get_chart
boothColumnsYesHow many booths in each row, 1-30
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.8/5.0
Behavior3/5

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 write, so the safety profile is covered. The description adds the optimistic-concurrency token via the expectedUpdatedAt example but never explains what happens on a version mismatch, nor whether the new booths collide with or displace existing objects. Useful but not rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short labeled lines, front-loaded with the action and immediately followed by when/when-not and a concrete call shape. No sentence is wasted and an agent can parse it at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters at full schema coverage and annotations present, the definition is largely self-sufficient. The remaining gap is that no output schema exists and the description never states what a successful call returns (booth count/ids) or how to recover from an expectedUpdatedAt conflict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter is documented in-schema (ranges, defaults, enum for placement, sourcing of categoryKey/expectedUpdatedAt), so the baseline of 3 applies. The example payload adds only marginal value — it confirms the categoryKey string format and the ms-epoch shape of expectedUpdatedAt, but says nothing about floorId or placement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a grid of expo or market booths') plus a scope constraint ('beside the layout'), which is more than the title restated. It separates itself from the mutation sibling update_booths, but does not distinguish itself from the very similar array-creation siblings add_table_array / add_row_block / add_area.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' trigger ('4 rows of 10 booths') and an explicit 'Not for' with a named alternative (update_booths). The exclusion is narrow, though: it does not say when to prefer add_table_array or add_row_block instead, which is the more likely selection error for a grid-creation tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_curved_rowsAdd Curved RowsAInspect

Add rows that curve around the stage, as in a theatre, amphitheatre or lecture hall, starting beyond any seats already there. Use when: e.g. "12 curved rows facing the stage", "a semicircle of seating", "a 270-degree bowl around the ring". Not for: straight rows (use add_row_block) or a whole new venue (use build_semantic_venue). Example: {"rowCount": 12, "spreadDegrees": 110, "aisles": "two", "categoryKey": "cat-1", "sectionLabel": "Stalls", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
aislesNoAisles through the fan; default none
floorIdNoFloor id; default: first floor
rowCountYesNumber of curved rows
categoryKeyYesCategory key from get_chart
seatsPerRowNoSeats in every row; default fits seats at the standard spacing
sectionLabelNoPut the rows in a new section with this name
spreadDegreesNoHow wide the fan is; 180 = semicircle, 360 = all round. Default: wide enough for seatsPerRow, else 100
expectedUpdatedAtYesmeta.updatedAt from get_chart
firstRowDistanceMNoMetres from the stage to the first row; default 4

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds real value beyond them by disclosing placement behavior (rows start beyond existing seats) and, via the example, the expectedUpdatedAt concurrency token. It stops short of stating what happens on a stale token or what the response contains, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight blocks — behavior, when/when-not, example — front-loaded with the action and no filler. Each sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with no output schema and full schema coverage, the definition covers purpose, routing, and a worked example. It could say more about return values or concurrency failure, but an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including defaults and ranges is already documented. The example illustrates a realistic combination (rowCount 12, spreadDegrees 110, aisles two) but adds no format or constraint detail the schema lacks; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ("Add rows that curve around the stage") with a concrete domain frame (theatre, amphitheatre, lecture hall) and scope constraint ("starting beyond any seats already there"). It is unambiguously distinguishable from add_row_block and build_semantic_venue, which it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use triggers are given with sample utterances ("12 curved rows facing the stage", "semicircle of seating", "270-degree bowl"), plus a "Not for:" line that routes to add_row_block for straight rows and build_semantic_venue for a whole venue. Nothing 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.

add_ga_areaAdd GA AreaAInspect

Add a standing area for a set number of people beside the layout. Use when: e.g. "a 500-person pit in front". Not for: changing one (use update_ga_areas). Example: {"capacity": 500, "categoryKey": "cat_standard", "placement": "front", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
labelNoBooking name; default "General Admission"
floorIdNoFloor id; default: first floor
capacityYesPeople it holds
placementNoSide of the layout; auto = rearauto
categoryKeyYesCategory key from get_chart
displayLabelNoName buyers see, if different from label
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, non-destructive, non-idempotent, closed-world mutation, so the safety profile is carried. The description adds the placement semantics ("beside the layout") and a concrete payload showing expectedUpdatedAt as a concurrency token, but never states what happens on a stale token or that repeated calls create duplicate areas despite idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines plus one example, with the core action front-loaded and the exclusion placed before the payload. No sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation with full schema coverage and annotations, the description covers purpose, routing to the sibling updater, and a usable example. It lacks only the optimistic-concurrency failure behavior for expectedUpdatedAt and any hint of what the call returns, which matters somewhat given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every field including defaults for label, floorId and placement. The worked example usefully shows how placement "front" and categoryKey combine for the pit scenario, but it does not explain the required expectedUpdatedAt round-trip beyond showing a number.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: adding a standing (general admission) area with a fixed capacity, positioned beside the layout. That wording separates it from the generic add_area and from update_ga_areas without requiring the schema to be opened.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the trigger case ("a 500-person pit in front") and an explicit exclusion with the correct alternative ("Not for: changing one (use update_ga_areas)"). Both when-to-use and when-not-to-use are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_landmarkAdd LandmarkAInspect

Add a venue landmark buyers look for: a bar, entrance, exit, restrooms, screen, sound desk, food stand, coat check, wall, rail, suite or pillar. Or a small wayfinding icon (first aid, stairs, lift, info…). Use when: e.g. "a bar along the left wall", "entrances A and B at the back", "fire exits". Pass role or icon, not both. Not for: named floor areas like a dance floor (use add_area) or plain text (use add_text). Example: {"role": "entrance", "label": "Entrance A", "placement": "rear", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
iconNoSmall wayfinding icon instead of a landmark
roleNoLandmark type; the Designer's décor presets
sideNoSide of nearObjectId; default rear
labelNoName shown, e.g. "Entrance A"; landmarks only
showAtNoIcons only: when buyers see it; always suits gates
floorIdNoFloor id; default: first floor
placementNoBeside the whole layout, or center of it. Ignored with nearObjectId
nearObjectIdNoPlace beside this object instead: a section, row, table or shape id from get_chart
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, non-destructive, non-idempotent mutation, so the safety profile is covered. The description adds value beyond that with the mutually-exclusive role/icon rule and a concurrency token (expectedUpdatedAt from get_chart), which implies stale-write protection. It does not say what is returned or how placement defaults resolve, keeping it at 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource list, then when-to-use, exclusions, and an example — a sensible agent-first ordering with no filler sentences. The long enumeration of landmark types is redundant with the role enum and is the only thing keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Nine parameters, five enums, no output schema and no annotation coverage of results. The description never says what comes back (e.g. created object ids) or how a created landmark can subsequently be found or updated, which matters for a mutation whose follow-up calls (get_chart, update_shapes) need identity. Adequate but with a real gap for a 9-param tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every param carries an enum and inline description, so the baseline is 3. The description goes slightly further by stating the role-vs-icon exclusivity and by including a worked example that shows how role, label, placement and expectedUpdatedAt combine — a real usage detail the schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add) and a precisely enumerated resource (venue landmarks: bar, entrance, exit, screen, sound desk…) plus a second class of wayfinding icons. It closes with a contrast against the two most confusable siblings, add_area and add_text, so the agent can separate it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' block gives three natural-language buyer phrasings that trigger this tool, and 'Not for' names the alternatives (add_area for named floor areas, add_text for plain text) with the distinguishing condition. The constraint 'Pass role or icon, not both' is also a usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_row_blockAdd Row BlockAInspect

Add a block of seated rows beside the current layout, optionally as a named section. Use when: e.g. "add 10 rows of 20 at the back". Not for: a new venue (use build_semantic_venue) or a drawn section (use fill_section_with_rows). Example: {"rowCount": 10, "seatsPerRow": 20, "categoryKey": "cat_standard", "placement": "rear", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
rowCountYesHow many rows, 1-100
placementNoSide of the layout; auto = rearauto
blockStyleNointertwined shifts every other row half a seat
curveStyleNoRow curvestraight
categoryKeyYesCategory key from get_chart
orientationNofocal-tangent faces the stagehorizontal
seatsPerRowYesSeats in each row, 1-300
sectionLabelNoName for a new section around it
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-readonly, non-idempotent, non-destructive closed-world mutation, so the safety profile is covered. The description adds that the block is placed 'beside the current layout' (additive, not replacing) and that sectionLabel wraps it in a new section, but it never explains the required expectedUpdatedAt concurrency check, what happens on a stale timestamp, or whether the addition is atomic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines: what it does, when to use, when not to use, and a concrete example. The core statement is front-loaded and every line carries distinct information with no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation with full schema coverage, no output schema, and complete annotations, the description covers purpose, routing, and a usage example, which is nearly everything an agent needs. The gap is the optimistic-concurrency contract implied by the required expectedUpdatedAt and the behavior on conflict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is already carried by the schema and a baseline of 3 applies. The description adds value only through a worked example that shows a coherent parameter set in situ; it does not explain semantics beyond the schema (e.g. how blockStyle 'intertwined' interacts with curveStyle, or what floorId defaults to in practice).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (add a block of seated rows beside the current layout) plus the optional section-creation behavior, which is not obvious from the name alone. It explicitly names the two nearest alternative tools (build_semantic_venue, fill_section_with_rows), so an agent can separate it from the crowded seating-creation sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'Use when' trigger phrase with a natural-language example ('add 10 rows of 20 at the back') and an explicit 'Not for' clause routing to two named alternatives. When-to-use, when-not-to-use, and alternatives are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_stageAdd StageAInspect

Add a stage or playing surface (pitch, court, rink, ring). The first stage on a floor becomes what every seat faces. Use when: the chart has no stage, or the venue needs a second one or a sports surface. Not for: changing a stage's shape (use update_stage_kinds) or its name and colour (use update_shapes). Example: {"kind": "thrust", "label": "Main Stage", "placement": "front", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
kindYesStage shape, or a sports surface such as court-basketball
sideNoSide of nearObjectId; default rear
labelNoName on the stage; default by kind, e.g. STAGE
depthMNoDepth in metres; default by kind
widthMNoWidth in metres; default by kind
floorIdNoFloor id; default: first floor
placementNoBeside the whole layout, or center of it. Ignored with nearObjectId
nearObjectIdNoPlace beside this object instead: a section, row, table or shape id from get_chart
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, idempotent=false, openWorld=false, so the safety profile is covered. The description adds genuinely non-structured behavior: the first stage on a floor defines seat orientation, which an agent must know before placing multiple stages. It does not discuss optimistic-concurrency failure behavior for expectedUpdatedAt, which is the one remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, labeled lines: identification, use-when, not-for, example. The differentiating fact (floor-defining stage) is front-loaded and there is no restatement of the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter mutating tool with no output schema, the description covers purpose, entry conditions, exclusions and a worked example. What is missing is small but real: what happens when expectedUpdatedAt is stale, and whether the call errors or otherwise fails, which matters for a write tool the agent may retry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and all nine parameters carry their own defaults, enums and constraints (side, placement, nearObjectId, expectedUpdatedAt). The description's example payload reuses values already present in the schema enums, so it demonstrates composition but adds no new parameter semantics. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a stage or playing surface') and enumerates the concrete variants (pitch, court, rink, ring). It goes on to describe the semantic role of the object ('the first stage on a floor becomes what every seat faces'), which lets an agent distinguish add_stage from shape-editing siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' clause (no stage exists, a second one is needed, or a sports surface is required) and an explicit 'Not for' clause that names the two alternative tools: update_stage_kinds for shape changes and update_shapes for name/colour. This is the full when/when-not/alternative triad.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_step_free_routeAdd Step-Free RouteAInspect

Draw a step-free route (the blue wheelchair path) from a gate to a section; SeatLayer finds a way through open floor, round seats, other sections, the stage and bars. Or pass lineId to make a line already on the map a step-free route. Use when: e.g. "show the step-free way from Gate B to section 110". Not for: the gate itself (use place_gate, and update_gate stepFree to mark it step-free). Next: render_preview to see the route. Example: {"fromGateId": "gate_a1b2c3", "toSectionId": "sec_d4e5f6", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
nameNoRoute name; default "Step-free route"
lineIdNoInstead of drawing: the id of a line or path already on the map to mark as a step-free route
fromGateIdNoGate id from list_gates; the route starts here
toSectionIdNoSection id from get_chart, on the same floor as the gate; the route ends at its edge
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-destructive mutation, not idempotent, and closed-world. The description adds useful behavior: SeatLayer actively computes a path through obstacles, and lineId changes the mode from drawing a new route to converting an existing line. It does not discuss permissions, failure modes, or what data is overwritten when reusing expectedUpdatedAt, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, followed by usage guidance, exclusions, next step, and an example. Every sentence carries actionable information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-destructive mutation with full schema descriptions, no output schema, and clear annotations, the description covers what the tool does, its two modes, when to use it, when not to, and the follow-up rendering step. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real semantic value by explaining the mutually exclusive modes: fromGateId/toSectionId draws a new route, while lineId converts an existing line. The example also clarifies the expectedUpdatedAt concurrency token in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: drawing a step-free route from a gate to a section, or marking an existing line as step-free via lineId. It names and distinguishes relevant siblings (place_gate and update_gate) and explains what routing considerations SeatLayer handles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit 'Use when' example, a 'Not for' exclusion pointing to place_gate and update_gate, and a 'Next' step to render_preview. An agent knows both when to call this and what to do afterwards.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_table_arrayAdd Table ArrayAInspect

Add a grid of round or rectangular tables with chairs beside the layout. Use when: e.g. "3 rows of 5 tables of 10". Not for: a new banquet layout (use build_semantic_venue). Example: {"tableRows": 3, "tableColumns": 5, "seatsPerTable": 10, "categoryKey": "cat_standard", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
shapeNoround (default) or rectround
floorIdNoFloor id; default: first floor
placementNoSide of the layout; auto = rearauto
tableRowsYesHow many rows of tables, 1-20
categoryKeyYesCategory key from get_chart
tableColumnsYesHow many tables in each row, 1-20
seatsPerTableNoChairs per table, 1-20. Default 8
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=false, closed-world), so the description only needs to add context. It adds that objects are appended 'beside the layout' rather than replacing it, and the example payload surfaces expectedUpdatedAt, but it never states what happens on a stale concurrency token or that non-idempotent repeat calls stack duplicate grids.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded lines: what it does, when to use it, when not to, then a concrete example. No sentence is redundant and the exclusion is not buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation with no output schema but full annotation coverage, the description gives purpose, trigger, alternative and a worked payload, which is enough to call it correctly. Remaining gaps are secondary behaviors (conflict handling, whether chairs count is derived, floor/placement defaults), all of which the schema covers separately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter documentation is already carried by the schema and the baseline is 3. The example goes slightly beyond it by showing how tableRows, tableColumns, seatsPerTable and categoryKey compose into a single grid request, clarifying the intended interpretation of the row/column pair.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a grid of round or rectangular tables with chairs') and scopes it to placement beside the existing layout. It explicitly distinguishes itself from the layout-building sibling build_semantic_venue, so an agent can pick it without reading either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Use when' pattern with a natural-language example ('3 rows of 5 tables of 10') and an explicit 'Not for' exclusion naming the alternative tool. Both the positive trigger and the routing rule are stated, not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_textAdd TextAInspect

Add a text label to the map, e.g. "Gate C", "Balcony via stairs", "Step-free route". Use when: the user wants words on the map that no section, row or landmark name already shows. Not for: renaming things (use update_sections, update_rows or update_shapes) or editing text (use update_texts). Example: {"text": "Gate C", "size": "large", "showAt": "always", "nearObjectId": "sec_a1b2c3", "side": "rear", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
boldNoBold text
sideNoSide of nearObjectId; default rear
sizeNoDefault medium
textYesThe words to show
colorNoHex colour; default the theme text colour
showAtNoWhen buyers see it; always suits gates and entrances
floorIdNoFloor id; default: first floor
placementNoBeside the whole layout, or center of it. Ignored with nearObjectId
nearObjectIdNoPlace beside this object instead: a section, row, table or shape id from get_chart
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile and the 'creates a new object rather than modifying' behavior are largely covered structurally. The description adds useful context about visibility semantics (showAt 'when buyers see it') and placement relative to another object, but says nothing about what happens on repeat calls (non-idempotent duplication) or what identifier is returned, which matter for a 10-parameter mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then labeled 'Use when', 'Not for' and 'Example' blocks. Every line carries distinct routing or parameter information; nothing is redundant with structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter creation tool with full schema coverage and no output schema, the description covers purpose, routing, and a realistic invocation. The main remaining gap is the absence of any statement about the return value (e.g. the new text id) and duplicate-text behavior, which an agent cannot recover from structured fields here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the worked example goes beyond the schema by showing a coherent combination of six parameters in context — notably the interplay between nearObjectId and side, which the schema only implies ('Ignored with nearObjectId' on placement). That cross-parameter insight is genuine added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Add a text label to the map') and illustrates it with domain-specific examples like 'Gate C' and 'Step-free route'. The 'Not for' clause distinguishes it from update_texts and the update_* family, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' condition (user wants words no section/row/landmark name already shows) plus a 'Not for' clause naming three concrete alternatives (update_sections, update_rows, update_shapes) and update_texts for editing. Both the positive and negative decision boundaries are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

answer_reference_capacity_questionsAnswer Reference Capacity QuestionsAInspect

Record the user's answers to the plan's open questions; saves a new draft, creates no seats. Use when: the user answered list_reference_capacity_questions. Next: render_reference_capacity_preview. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "expectedDraftRevision": 2, "expectedUpdatedAt": 1790000000000, "categoryAnswers": [{"categoryKey": "cat_standard", "confirmFields": ["price"], "evidence": "user-confirmed", "sourceDescription": "Owner in chat"}]}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
categoryAnswersNoPer category: fields confirmed, new values, evidence
expectedUpdatedAtYesmeta.updatedAt from get_chart
expectedDraftRevisionYesdraftRevision from list_reference_capacity_questions
synthesisConfirmationNoUser agrees SeatLayer may work out the rows

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a non-read-only, non-destructive, non-idempotent mutation. The description adds useful behavioral context by stating that it saves a new draft and creates no seats. It could say more about concurrency or stale-revision behavior, but with annotations covering the safety profile this is a solid disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the action and its side effects, followed by a clear usage condition, the next step, and an example. Every sentence contributes directly to selecting and invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-parameter mutation with no output schema, the description gives enough to understand when to call it, what it changes, and what to do next. It does not describe the response shape, but the workflow guidance and example compensate for most of that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the parameter documentation burden. The description adds a concrete example payload that shows how assetId, expectedDraftRevision, expectedUpdatedAt, and nested categoryAnswers are used together. That is valuable but not a substitute for deeper semantic explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: recording the user's answers to the plan's open questions. It also distinguishes the tool from its siblings by naming list_reference_capacity_questions as the prerequisite and render_reference_capacity_preview as the next step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool: after the user has answered list_reference_capacity_questions. It also tells the agent what to do next, which is render_reference_capacity_preview, leaving little ambiguity about sequencing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_inventory_changeApply a Live Inventory PlanA
DestructiveIdempotent
Inspect

Make the change one plan_inventory_change plan describes, exactly as planned. Use when: only after the person said yes in chat to that plan's summary. Needs "Manage live events"; a category move also "Change seat categories", a channel change "Manage sales channels", an event action "Create and run events", a price change "Set prices and releases", a map change publishing. Seats changed since the plan are left alone; anything else changed since is refused (plan again). Plans expire after 15 minutes. The same planId again returns the first result. Next: get_event_sections. Example: {"planId": "ipl1.eyJ2IjoxLCJlIjoiZXZfMSJ9.SGVsbG9QbGFuU2lnbmF0dXJlRXhhbXBsZTAxMjM0NTY", "confirm": true}

NameRequiredDescriptionDefault
planIdYesplanId from plan_inventory_change, exactly as returned
confirmYestrue, sent only after the person said yes in chat to this plan

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real operational detail: plan expiry after 15 minutes, that seats changed since planning are silently left alone while anything else changed causes a refusal requiring a re-plan, and that replaying the same planId returns the first result. These are exactly the failure modes an agent needs to anticipate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the usage gate, then compressed into semicolon-separated clauses; nothing is padding. The permission sentence is dense, and the trailing clause 'a map change publishing' is truncated enough to be slightly ambiguous, slightly reducing readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two required parameters, no output schema, and annotations covering the safety profile, the description still covers permissions, expiry, staleness/refusal behavior, idempotency, and the next tool to call. Nothing material an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description still adds intent-level meaning: planId must be the exact token from plan_inventory_change, and confirm must be sent only after human approval in chat — plus a concrete example value showing the plan token shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — apply the change described by a plan_inventory_change plan — and explicitly ties itself to that sibling as the plan producer, so an agent can tell it apart from plan_inventory_change and from the many other mutation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when:' clause gives an explicit gate (only after the person said yes in chat to that plan's summary) and encodes the companion tool chain: plan comes from plan_inventory_change, follow-up is get_event_sections. It also names required permissions per change type, which further scopes when the call can succeed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_reference_capacity_planApply Confirmed Reference Capacity PlanA
Destructive
Inspect

Create the seats from the seat-count plan: rows, numbers, categories, accessible seats. Use when: the user saw the preview and confirmed. assumptionsConfirmed: true means they accept SeatLayer worked out the rows. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "targetCapacity": 1200, "expectedUpdatedAt": 1790000000000, "aggregateEvidence": "user-confirmed", "sourceDescription": "Owner in chat", "assumptionsConfirmed": true}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
targetCapacityYesSeats plus standing
numberingPolicyNoAs in plan_reference_capacity: seat numbering in each row
standingCapacityNoStanding part of targetCapacity
standingSectionsNoAs in plan_reference_capacity: standing sections (logicalSectionId) with evidence
aggregateEvidenceYesWhere the total came from
categoryOverridesNoAs in plan_reference_capacity: name and price categories by their plan colour
expectedUpdatedAtYesmeta.updatedAt from get_chart
sourceDescriptionYesSource of the total, in words
accessibilityGroupsNoAs in plan_reference_capacity: accessible seat counts by type per section group
nonSellableSectionsNoAs in plan_reference_capacity: sections that sell nothing, with reason
assumptionsConfirmedYesUser accepts SeatLayer worked out the rows
sectionCategoryGroupsNoAs in plan_reference_capacity: group sections into categories when plan colours are not prices
standingSectionEvidenceNoOld form
standingLogicalSectionIdNoOld form; use standingSections
standingSectionSourceDescriptionNoOld form

TDQS

A3.7/5.0
Behavior3/5

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 known. The description adds useful workflow context (a human confirmation gate, the meaning of assumptionsConfirmed as acceptance of SeatLayer's inferred rows), but never says whether existing seats are replaced, what happens on a non-matching expectedUpdatedAt, or how to recover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and use condition are front-loaded in the first two sentences; the example is long but earns its place by demonstrating the required-parameter shapes. Minimal filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter destructive mutation with nested objects and no output schema, the description covers the required core and the confirmation gate but leaves the optional plan-mirroring parameters (numberingPolicy, standingSections, categoryOverrides, nonSellableSections) defined only by reference to another tool, and says nothing about the operation's effect on existing inventory.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the worked example adds real value by showing a complete valid call and disambiguating free-text fields like sourceDescription ("Owner in chat") and the aggregateEvidence enum choice. It does not clarify the ten optional params that the schema only describes as "As in plan_reference_capacity."

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Create the seats from the seat-count plan," and enumerates the outputs (rows, numbers, categories, accessible seats). It implicitly distinguishes itself from the planning/preview siblings by requiring the plan to already exist, though it never names them directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: the user saw the preview and confirmed" gives a concrete precondition tying this to the preview/render step. It does not name an alternative tool explicitly (e.g., plan_reference_capacity, apply_reference_inventory) or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_reference_inventoryApply Confirmed Reference InventoryA
Destructive
Inspect

Fill traced sections with known rows, tables, booths or standing, with categories. Use when: after compile_reference_skeleton, with counts per section known. Not for: only a total known (use plan_reference_capacity). Replaces only seats it made before; refused if they do not fit. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "evidence": "user-confirmed", "sourceDescription": "Plan", "categories": [{"key": "cat_a", "label": "Stalls", "color": "#3B82F6"}], "sections": [{"logicalSectionId": "section-4f1c2a9e7b3d5f8e", "categoryKey": "cat_a", "rows": [{"label": "A", "seatCount": 20}]}], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
evidenceYesWhere the counts came from
sectionsYesPer logicalSectionId: category and rows, tables, booths or ga
categoriesYesCategories: key, label, color, price
expectedUpdatedAtYesmeta.updatedAt from get_chart
sourceDescriptionYesWhere the counts came from, in words
nonSellableSectionsNoSections that sell nothing, with reason

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as destructive, non-read-only, and non-idempotent. The description adds valuable behavioral context beyond that: it replaces only seats it previously created and is refused if they do not fit. It still does not describe authentication needs or the success response, so it is strong but not fully complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then 'Use when', then 'Not for', then an example. Every part earns its place, including the example, which is justified by the complex nested schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives the key workflow prerequisite, exclusion, and mutation constraint, while the schema covers all 7 parameters in detail. The main remaining gap is that, with no output schema, it does not state what a successful response contains or what the caller should expect afterward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema carries the parameter documentation burden. The description still adds useful semantics by mapping sections to rows/tables/booths/standing and providing a concrete example that shows how categories, sections, assetId, evidence, and expectedUpdatedAt fit together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: filling traced sections with known rows, tables, booths, or standing areas, including categories. It is distinguishable from sibling tools like plan_reference_capacity and compile_reference_skeleton because it is clearly the application step with per-section counts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use it ('after compile_reference_skeleton, with counts per section known') and when not to use it ('only a total known' → use plan_reference_capacity). This gives an agent both the precondition and the alternative routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_suggested_restrictionsApply Suggested RestrictionsA
DestructiveIdempotent
Inspect

Mark seats score_sightlines flags as "restricted view" for buyers. Use when: the user accepts the result. Without confirmApply it only previews. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "seatIds": ["row_a1b2c3:0"], "confirmApply": true, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
seatIdsYesSeat ids from score_sightlines
versionNoDefault: active or latest
confirmApplyNotrue saves; left out, previews
configurationIdYesId from list_event_configurations
targetElementIdNoProduction element id; default: first stage or screen
expectedUpdatedAtYesmeta.updatedAt from get_chart
includeSeatChairsNoChairs in front block the view

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag a destructive, non-read-only, idempotent write, and the description adds genuinely behavioral context they lack: omitting confirmApply downgrades the call to a preview. That preview/save distinction is exactly what an agent needs before invoking a destructive tool, though what existing restriction state gets overwritten is still unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The effect and trigger come first, the preview caveat second, and the example last as supporting detail. The example is somewhat verbose but earns its place by showing a well-formed confirmApply payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter destructive mutation with no output schema, the description covers the key decision (preview vs. save) and the source of the seat ids. It leaves unaddressed what happens to seats previously marked restricted and whether the change can be undone, but annotations carry the destructive profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including expectedUpdatedAt and includeSeatChairs is already documented. The example illustrates confirmApply and the required identifiers in use, but adds little semantic meaning beyond the schema text and explains nothing about the optimistic-concurrency role of expectedUpdatedAt.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and effect: marking the seats that score_sightlines flagged as "restricted view" for buyers, which cleanly separates it from the scoring sibling. The phrasing 'Mark seats score_sightlines flags' is slightly garbled, but the intent and resource are unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: the user accepts the result' gives an explicit trigger condition, and it makes clear this is the downstream step after score_sightlines. It does not name any alternative or exclusion, so it falls short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

approve_confidence_evidenceApprove Confidence EvidenceA
Idempotent
Inspect

Approve a draft Verified View record so buyers see it after publishing. Needs a connection allowed to publish. Use when: the user reviewed it. Needs confirmApprove: true; retracted records cannot be approved. Next: prepare_chart_review. Example: {"scope": "section", "objectId": "sec_a1b2c3", "approvedByRole": "Venue manager", "confirmApprove": true, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
scopeYesWhat the record covers
floorIdNoFloor id (needed for floor)
objectIdNoRow, table or section id (seat, row, section)
seatIndexNoFor seat: index from get_row_seats
approvedByRoleYesApprover role, e.g. "Venue manager"
confirmApproveNoMust be true to approve
expectedUpdatedAtYesmeta.updatedAt from get_chart
eventConfigurationIdNoConfiguration it was checked against
eventConfigurationVersionNoThat configuration's version number

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds context beyond the annotations: the operation requires a publish-capable connection, is gated on confirmApprove: true, and is blocked for retracted records. That complements idempotentHint=true without restating it. It does not say what happens to an already-approved record or what the response returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and effect, then trigger, constraint, and next step. The example earns its space by showing a concrete valid payload, though it is the longest element in an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers what matters for a 9-parameter mutation tool with no output schema: auth requirement, approval gate, state exclusion, and the next step in the workflow. Optimistic concurrency via expectedUpdatedAt is explained by the schema, not by the description, which is the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter already carries its own description and the baseline is 3. The description only adds meaning for confirmApprove, which the schema already states must be true. The example confirms a valid combination of scope/objectId/approvedByRole/expectedUpdatedAt but adds little extra semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: approve a draft Verified View record, plus the downstream effect (buyers see it after publishing). That phrasing separates it from approve_event_configuration and approve_reference_blueprint, which share the 'approve' verb but act on different objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when: the user reviewed it') and a follow-up step ('Next: prepare_chart_review'). It also fences in the guard conditions (confirmApprove required, retracted records ineligible). It does not name the inverse sibling (retract_confidence_evidence), so routing away from this tool is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

approve_event_configurationApprove Event ConfigurationA
Idempotent
Inspect

Approve a configuration version in review. Needs a connection allowed to publish. Use when: the user agrees the setup is right. Next: publish_event_configuration. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "version": 1, "expectedRevision": 2}

NameRequiredDescriptionDefault
versionYesVersion number
configurationIdYesId from list_event_configurations
expectedRevisionYesVersion revision from get_event_configuration

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, idempotent, non-destructive, closed-world behavior, so the description's added value is the permission prerequisite and the review→approved state transition leading to publish. It does not mention failure modes for a stale expectedRevision or the existence of rollback_event_configuration, which would complete the mutation story.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines plus an example, front-loaded with the action, then the condition, then the next step. Nothing is wasted and each line earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry the workflow, and it does: prerequisite, trigger, and successor tool. It falls short of a 5 by not indicating what a successful approval returns or how to recover from a revision conflict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline of 3 applies, but the worked example payload makes the shape concrete and shows the ID format (ec_...) plus how version and expectedRevision differ in practice. It still leaves the optimistic-concurrency meaning of expectedRevision implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Approve a configuration version in review'), including the precondition state of the resource. It is clearly separable from the sibling publish_event_configuration, which it names as the following step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: the user agrees the setup is right' gives an explicit trigger condition, and 'Next: publish_event_configuration' names the follow-up tool. The prerequisite 'Needs a connection allowed to publish' rules out calls the agent cannot make.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

approve_reference_blueprintApprove Reference BlueprintAInspect

Approve the proposed outline; needs every section, zone and stage confirmed and named. Use when: get_reference_blueprint shows no blockers and the user agrees. Next: compile_reference_skeleton. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "expectedBlueprintRevision": 2}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
expectedBlueprintRevisionYesrevision from get_reference_blueprint

TDQS

A3.8/5.0
Behavior3/5

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 mutation. The description adds useful preconditions—all sections, zones and stages confirmed and named, no blockers, user agreement—but does not explain what approval changes, how failures are reported, or how the expected revision protects concurrency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then when to use, next step, and a concrete example. Every line contributes useful selection or invocation context without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter approval action, the description covers purpose, prerequisites, usage condition and the follow-up tool. It lacks return-value and failure-mode detail, which is relevant because no output schema is provided, but the core invocation context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters are fully described in the schema itself, including where assetId and expectedBlueprintRevision come from. The description's example repeats the parameter shape but does not add semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Approve the proposed outline.' It adds the key precondition that every section, zone and stage must be confirmed and named. It is clear, though it refers to the resource as 'outline' rather than consistently as 'blueprint,' and does not directly distinguish itself from propose_reference_blueprint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage condition: use when get_reference_blueprint shows no blockers and the user agrees. It also names the next tool, compile_reference_skeleton. It does not explicitly state when not to use it or name alternatives such as propose_reference_blueprint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auto_fix_current_chartAuto-fix Current ChartA
Destructive
Inspect

Apply the safe automatic fixes validate_current_chart can find: seat spacing inside a row, label and text colours that are hard to read, text placement, and a category shared by seats and standing areas (split into two with the same price). Returns the score before and after. Use when: validate_current_chart reports errors or warnings these fixes cover. Not for: moving sections or changing category colours (do those with update_sections and update_chart_categories). Saves nothing if a fix would add a new error. Example: {"expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
expectedUpdatedAtYesmeta.updatedAt from the latest get_chart call

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond annotations by disclosing the atomicity guarantee ('Saves nothing if a fix would add a new error') and the return shape (score before and after), which the agent can't get from the schema since no output schema exists. Annotations already flag destructiveHint=true and idempotentHint=false, so the description's job is to reassure about blast radius, which it does by scoping the fixes as safe and the operation as all-or-nothing; it could still say more about what happens to non-matching issues.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then labelled Use when / Not for / Example sections. Every sentence earns its place, including the failure clause which prevents an agent from assuming a partial save.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers scope of fixes, prerequisites (a prior validate_current_chart run), exclusions with sibling tools, failure semantics, and return values. For a one-parameter mutation tool with no output schema, nothing material an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single expectedUpdatedAt parameter is fully documented in the schema, so the description's example {"expectedUpdatedAt": 1790000000000} only illustrates the shape rather than adding meaning. Baseline 3 is appropriate when the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (apply) and resource (automatic fixes) and enumerates the exact fix classes: seat spacing, unreadable label/text colours, text placement, and a shared category split into two at the same price. It also anchors itself to validate_current_chart's findings, making it easy to distinguish from siblings like update_sections or reset_seats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' condition (validate_current_chart reports errors/warnings these fixes cover) and an explicit 'Not for' clause that routes the agent elsewhere for section moves and category colour changes, naming update_sections and update_chart_categories. Nothing is left to inference about when to pick this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

begin_vision_probeBegin Vision Transport ProbeAInspect

Returns two test pictures to check you can read images on this connection. Use when: once per session, before picture tools. Next: confirm_vision_probe with what you read (do not guess). No pictures? Its answer says what to do. Example: {}

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=false and openWorldHint=false, so the bar is lower, and the description adds real value: the tool returns exactly two images, must be called once per session, and its answer dictates fallback behavior. It does not explain why readOnlyHint=false (presumably per-session probe state), leaving a small gap between the 'returns pictures' framing and the non-read-only annotation — but this is a tension, not a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines covering purpose, timing, follow-up, and fallback with zero filler. The phrase 'Its answer says what to do' is slightly cryptic about what the answer actually contains, a minor economy-driven ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description carries the load well: it tells the agent the return is two pictures and that the response text may redirect it. It could be clearer about what a non-picture answer implies, but an agent has everything needed to call and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; the description correctly signals this with the 'Example: {}' invocation, confirming there is nothing to supply. No additional parameter meaning is needed or possible.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — returns two test pictures to verify image reading on the connection — and explicitly differentiates itself from the sibling confirm_vision_probe, which handles the follow-up step. An agent can distinguish the two without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use guidance ('once per session, before picture tools'), names the required next step ('confirm_vision_probe with what you read'), and even handles the negative path ('No pictures? Its answer says what to do'). This is explicit routing, not implied usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_from_venue_specBuild From Venue SpecA
Destructive
Inspect

Build a whole chart in one call from a Venue Spec: categories, prices, stage, rows, tables, standing, booths and landmarks. Use when: the user describes a new venue. checkOnly true lists every problem by field without saving. Not for: a chart to keep (it replaces the draft) or small edits. Format: get_venue_spec_format. Example: {"spec": {"seatlayerVenueSpec": 1, "name": "Studio", "categories": [{"name": "Standard", "price": 20}], "items": [{"type": "rows", "rowCount": 8, "seatsPerRow": 14}, {"type": "landmark", "role": "bar", "placement": "left"}]}, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
specYesThe Venue Spec object (seatlayerVenueSpec 1); see get_venue_spec_format
checkOnlyNotrue: check and summarise without saving. Default false
expectedUpdatedAtNometa.updatedAt from get_chart; needed unless checkOnly

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true and non-idempotent, but the description adds the concrete consequence ('it replaces the draft') and describes the dry-run path ('checkOnly true lists every problem by field without saving'). It doesn't cover failure modes on the save path or the role of expectedUpdatedAt as a concurrency guard, so it stops short of fully rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then crisp labeled sections (Use when / Not for / Format / Example). The example is long but is the payload contract for a nested free-form object, so it earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, nested-payload, no-output-schema tool, the description supplies the destruction warning, dry-run mode, format pointer and a concrete example. The spec object allows additionalProperties with no enumerated field list, so full coverage rests on get_venue_spec_format rather than this description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: checkOnly is characterized as a per-field problem listing, and the example shows spec shape and the expectedUpdatedAt value in situ. It doesn't explain what expectedUpdatedAt guards against, keeping it below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Build a whole chart in one call from a Venue Spec') and enumerates exactly what the spec covers: categories, prices, stage, rows, tables, standing, booths and landmarks. This clearly separates it from siblings like build_simple_chart, build_semantic_venue and the granular add_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: 'Use when: the user describes a new venue', 'Not for: a chart to keep (it replaces the draft) or small edits', and a pointer to get_venue_spec_format for the input format. When-to-use, when-not, and the alternative are all named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_semantic_venueBuild Semantic VenueA
Destructive
Inspect

Replace the whole draft with a complete venue (stage, sections, zones, floors) from a layout type and counts. Use when: the user describes a new venue. Pick the closest layout; add more with add_row_block, add_ga_area, add_table_array or add_booth_array. Not for: a chart you want to keep (it replaces everything). Each layout takes only its own counts. Next: update_chart_categories to name and price cat-1, cat-2... (unpriced), then validate_current_chart. Example: {"name": "Riverside Theatre", "layout": "rows", "rowCount": 16, "seatsPerRow": 12, "blocks": 2, "categoryLabels": ["Premium", "Standard", "Value"], "stageKind": "rect", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
nameYesVenue or chart name
blocksNoSide-by-side seating blocks with an aisle between each (rows, hybrid). 2 = one centre aisle
floorsNoPhysical floors; multi-floor is supported for rows and bowl layouts
layoutYesrows = theatre; bowl = arena; tables = banquet; booths = expo; nightclub = standing + VIP; hybrid = seats + standing
rowCountNoRows per block, stand or runway side (rows, bowl, runway, hybrid)
sectionsNoGenerate navigable sections and zones where the layout supports them
barStoolsNoStools along the restaurant bar; 0 omits the bar run. Stools sell under the LAST category, never a table-chair one
boothGapXNoHorizontal center spacing for the generated booth array
boothGapYNoVertical center spacing for the generated booth array
boothRowsNoRows of booths in the grid (booths)
stageKindNoStage shape: rect, rounded, arc, thrust (juts into the audience), runway or round (in the round)rect
tableGapXNoHorizontal center spacing for the generated table array
tableGapYNoVertical center spacing for the generated table array
tableRowsNoRows of tables in the grid (tables, ushape). Each table seats 8; change with update_tables
aisleWidthNoAisle width between blocks in chart units, about 40 per metre (rows, hybrid)
gaCapacityNoStanding capacity (bowl, nightclub, hybrid). On a bowl: a floor pit, stage at one end, last category
wallBoothsNoBooths along the restaurant wall run; 0 leaves the wall clear
seatsPerRowNoSeats per row in ONE block: 26 across a centre aisle is blocks 2, seatsPerRow 13
boothColumnsNoBooths per row of the grid (booths)
diningTablesNoFree-standing dining tables on the restaurant floor, generated as a mix of two-, four- and six-tops
sectionCountNoStands around the arena ring (bowl only). Defaults to 4; the ring grows so every stand keeps its seat pitch
tableColumnsNoTables per row of the grid (tables, ushape)
categoryLabelsNoNames for cat-1, cat-2..., dearest first. One name for a one-price venue; the last takes standing or bar
expectedUpdatedAtYesmeta.updatedAt from the latest get_chart call

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=false, and the description reinforces this with the concrete blast radius ('it replaces everything') plus a non-obvious behavior rule: 'Each layout takes only its own counts.' It also prescribes the post-call workflow, which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then labeled Use when / Not for / Next / Example blocks with zero filler. The example is compact and demonstrates cross-parameter composition that prose would take longer to convey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 24-parameter destructive builder with no output schema, the description covers selection, destruction scope, and the next steps well. The one gap is what the call returns (a rebuilt chart object?), which an agent must infer before chaining to update_chart_categories.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per-parameter meaning is already documented; the description goes beyond it by stating that irrelevant counts are ignored per layout and by showing a worked combination of layout, rowCount, seatsPerRow, blocks, categoryLabels, stageKind and expectedUpdatedAt. It does not explain expectedUpdatedAt's concurrency semantics, but the schema does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Replace the whole draft with a complete venue (stage, sections, zones, floors) from a layout type and counts.' This clearly separates it from the incremental builders named later (add_row_block, add_ga_area, add_table_array, add_booth_array), so an agent can pick it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' (user describes a new venue), explicit 'Not for' (a chart you want to keep), named alternatives for extending a layout, and a follow-up sequence (update_chart_categories then validate_current_chart). Both the selection condition and the exclusion are stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_simple_chartBuild Simple Seating ChartA
Destructive
Inspect

Replace the whole draft with one block of straight rows facing a stage, with exactly the number of seats asked for and one category. Use when: a small, simple room such as a lecture hall, screening room or ceremony with up to 500 seats and one price. Not for: several blocks, aisles, sections, balconies, tables or standing areas (use build_semantic_venue). It replaces everything on the chart. Example: {"name": "Studio Theatre", "seatCount": 120, "rowCount": 8, "stagePosition": "top", "categoryLabel": "General", "price": 25, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
nameYesVenue or chart name
priceNoTicket price for every seat; set it now or later with update_chart_categories
rowCountNoOptional exact row count; defaults to a balanced compact layout
seatCountYesExact number of sellable seats
categoryColorNoSix-digit hex colour for that category#6e7bff
categoryLabelNoName of the single category every seat sells underStandard
stagePositionNoSide of the room the stage is on (default top)top
expectedUpdatedAtYesmeta.updatedAt from the latest get_chart call

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds concrete scope to that flag: 'It replaces everything on the chart' tells the agent exactly what is lost, not just that something is destructive. It does not mention the optimistic-concurrency requirement implied by the required expectedUpdatedAt parameter, nor what the call returns, which keeps it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core effect, then Use-when, then Not-for, then destructiveness, then a single concrete example. Every sentence performs a distinct job and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter destructive generator with no output schema, the description covers purpose, qualifying scope, exclusions, alternative routing, destruction scope, and a full example. The remaining gap is that it never says what comes back after the rebuild (new chart snapshot vs. summary) and does not flag in prose that expectedUpdatedAt must come from a fresh get_chart call, though the schema does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema, which sets the baseline at 3. The worked example is genuinely helpful because it shows a realistic value set (seatCount/rowCount pairing, stagePosition, categoryLabel, price, expectedUpdatedAt) that reveals how the fields combine, but the prose itself adds no semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and effect ('Replace the whole draft with one block of straight rows facing a stage, with exactly the number of seats asked for and one category'), which precisely defines the generated shape. It also names what it is not (multi-block/aisle/table layouts) and points to build_semantic_venue, so an agent can separate it from that sibling without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' clause gives the qualifying conditions (small simple room, lecture hall/screening room/ceremony, up to 500 seats, one price). The 'Not for' clause enumerates the excluded structures and names the correct alternative (build_semantic_venue), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

classify_reference_sourceClassify Reference SourceAInspect

Say what kind of image it is (clean plan, dense seat plan, scan or photo of a plan, venue photo); this decides how far it can be traced. Use when: after get_reference_overview. Venue photos cannot be traced. Next: get_reference_regions. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "sourceClass": "clean-raster-diagram", "evidence": "model-observed", "confidence": 0.9, "sourceDescription": "Plan with coloured sections", "expectedRevision": null}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
evidenceYesWho judged it
confidenceYesTracing needs 0.75+
sourceClassYesdense-seat-raster = every seat drawn
expectedRevisionYesnull first; then current revision
sourceDescriptionYesShort description of the image

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as a non-read-only, non-idempotent write, and the description adds real behavioral context the annotations do not: the classification gates how far the asset can be traced and photos are untraceable. The provided example with expectedRevision null also hints at the optimistic-concurrency call pattern, though the description never states plainly that the result is persisted and that a repeat call overwrites the prior classification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, and the 'Use when / Next / Example' lines are quickly scannable. The example is long and largely re-encodes schema shape, which costs a little density, but each line still carries routing or formatting value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-required-parameter write tool with no output schema, the description covers purpose, position in the pipeline, the key domain constraint, and a valid payload. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it with a complete worked example that shows a real sourceClass value, an evidence value, a passing confidence, and expectedRevision null alongside the schema's 'null first; then current revision' note. It does not explain the enum distinctions in prose (e.g. scan-or-photo-of-plan vs physical-venue-photo), leaving those to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('say what kind of image it is') plus the resource and enumerates the four classes inline, then explains the consequence ('this decides how far it can be traced'). An agent can distinguish this from read-side siblings like get_reference_source_classification without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit sequencing is given: 'Use when: after get_reference_overview' and 'Next: get_reference_regions', plus an exclusion ('Venue photos cannot be traced'). It does not name a competing alternative tool or say when classification should be skipped/re-done, so it stops short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_confidence_evidenceClear Confidence EvidenceA
DestructiveIdempotent
Inspect

Delete a Verified View record at one scope. Use when: a draft or old record should go. Not for: withdrawing an approved one (use retract_confidence_evidence). Next: get_confidence_coverage. Example: {"scope": "section", "objectId": "sec_a1b2c3", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
scopeYesWhat the record covers
floorIdNoFloor id (needed for floor)
objectIdNoRow, table or section id (seat, row, section)
seatIndexNoFor seat: index from get_row_seats
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

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 largely covered. The description adds useful behavioral context that this is scoped deletion and that approved records should be retracted rather than deleted, though it does not detail cascading effects or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then Use when, Not for, Next, and an example. Every line contributes directly to correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given full schema coverage, destructive annotations, and no output schema, the description provides enough information to call the tool correctly. The only minor gap is that it does not explain broader consequences of deletion or what the record deletion affects beyond the single scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents scope, floorId, objectId, seatIndex, and expectedUpdatedAt. The example clarifies a typical payload, but the description does not add semantic detail beyond the schema for the other parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: deleting a Verified View record at one scope. It also explicitly distinguishes this from retracting an approved record via the sibling retract_confidence_evidence, so an agent can route correctly without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance ('a draft or old record should go'), an explicit when-not-to-use case ('withdrawing an approved one'), and names the correct alternative tool. The follow-up step to get_confidence_coverage is also stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compile_reference_skeletonCompile Reference SkeletonA
Destructive
Inspect

Build the approved outline into the chart: section shapes and stage, no seats yet. Replaces the current draft. Use when: after approve_reference_blueprint. Next: apply_reference_inventory or plan_reference_capacity. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "expectedBlueprintRevision": 3, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
expectedUpdatedAtYesmeta.updatedAt from get_chart
expectedBlueprintRevisionYesrevision from get_reference_blueprint

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds domain meaning by saying 'Replaces the current draft,' telling the agent concretely what is lost rather than just that the call is destructive. It also discloses that no seats are produced. It does not state what happens on a stale revision/updatedAt mismatch, which for a concurrency-guarded mutation would be worth one more clause.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The behavioral claim is front-loaded in the first sentence, then partitioned into 'Use when,' 'Next,' and 'Example' labels. Every sentence carries a distinct fact; nothing is redundant with the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description supplies the precondition, the replacement semantics, and the follow-up path, plus a call example. The remaining gap is failure behavior (stale revision/updatedAt) and whether pre-existing seats or objects in the draft survive the replacement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes slightly beyond by including a worked example with all three required parameters populated, showing realistic value shapes and how the guard fields travel together. It does not explain the semantics of expectedBlueprintRevision vs expectedUpdatedAt, but the schema already does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (build) and resource (the approved outline into the chart) plus explicit scope boundaries: 'section shapes and stage, no seats yet.' The 'no seats yet' clause implicitly separates it from the seating-fill siblings (fill_sections_with_rows, insert_seating_block) without opening their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition ('Use when: after approve_reference_blueprint') and names the two valid successors (apply_reference_inventory or plan_reference_capacity). The agent knows both when to call it and what to call next, with no inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configure_reference_setConfigure Reference SetAInspect

Choose the image the chart is traced from and which others only add detail (labels, counts, price legend, accessibility, photos). Use when: the user gave several images for one venue. The traced one must be classified traceable first. Next: get_reference_regions. Example: {"geometryAssetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "supplementalReferences": [], "expectedRevision": null}

NameRequiredDescriptionDefault
geometryAssetIdYesImage the outline is traced from
expectedRevisionYesnull first; then revision from get_reference_set
supplementalReferencesYesExtra images with purposes; [] for none

TDQS

A4.4/5.0
Behavior4/5

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. The description adds meaningful workflow behavior beyond annotations: the traced image must first be classified traceable, and the next step is get_reference_regions. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured and front-loaded: purpose first, then 'Use when', then 'Next', then a short example. Every line contributes actionable information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a fully schema-described configuration tool with annotations and no output schema, the description provides purpose, prerequisites, next step, and a payload example. A minor gap remains around expected return behavior and the optimistic-concurrency revision semantics, though the schema covers expectedRevision.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds value by explaining that geometryAssetId is the traced source while supplementalReferences are images that only add detail such as labels, counts, price legend, accessibility, and photos, which maps to the supplement purpose enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific action and clearly names the resource: choosing the traced image plus supplemental detail-only images. It distinguishes the traced image from supplements and gives a concrete example payload, so an agent can identify the tool's role 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit usage condition ('the user gave several images for one venue') and a prerequisite ('the traced one must be classified traceable first'). It also names the next tool, but does not state when-not-to-use or alternative tools for viewing/updating an existing set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_vision_probeConfirm Vision Transport ProbeA
Idempotent
Inspect

Report what you read in the begin_vision_probe pictures; this unlocks the picture tools. Use when: right after begin_vision_probe. Next: render_preview, prepare_chart_review or upload_reference_image. Example: {"probeId": "vp_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "transportCode": "48213", "readableBands": [{"bandId": "band-48", "code": "7302"}], "boundaryCount": 4}

NameRequiredDescriptionDefault
probeIdYesFrom begin_vision_probe
boundaryCountYesCyan outlines counted
readableBandsYesBands you could read, with their codes
transportCodeYesCode in the first picture

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that this is not read-only, is idempotent, non-destructive, and closed-world. The description adds important behavioral context beyond annotations by saying the confirmation unlocks the picture tools. It does not detail failure behavior, but the gating effect is clearly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then immediately gives usage timing, next steps, and a concrete example. It is compact and every element helps an agent invoke the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter confirmation tool with no output schema, the description covers purpose, timing, successors, and a representative payload. It does not explain success/return behavior, but the unlocking effect and next-step guidance make it largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented in the schema. The example usefully demonstrates the expected payload shape, but the description does not add much semantic meaning beyond the schema's own field descriptions and patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: report what was read in the begin_vision_probe pictures. It clearly distinguishes this confirmation step from the sibling begin_vision_probe tool and explains that it unlocks picture tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('right after begin_vision_probe') and names likely next tools (render_preview, prepare_chart_review, upload_reference_image). This leaves little ambiguity about when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_chartCreate ChartAInspect

Create a new empty chart in the workspace and switch to it. Use when: the user wants a new venue and you should not overwrite the chart you are on. Not for: one-chart connections (refused; build on the granted chart instead). Next: get_chart for its updatedAt, then build_semantic_venue or build_simple_chart. Example: {"name": "Riverside Theatre: Main Hall"}

NameRequiredDescriptionDefault
nameYesHuman-readable chart name, e.g. "Grand Theatre: Main Hall".

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state this is a non-idempotent, non-destructive, closed-world write; the description adds the crucial behavioral fact that it switches the active chart and that the operation is refused on one-chart connections. It stops short of stating permission requirements or limits (e.g. max charts per workspace), so not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence followed by labeled Use when / Not for / Next / Example blocks; every line is actionable and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter creation tool with no output schema, the description covers purpose, side effects, refusal case, and the immediate next tools — everything an agent needs to call it correctly and continue the workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage and a single required 'name' parameter, the schema already carries the semantics; the worked example ('Riverside Theatre: Main Hall') reinforces the naming format but adds little beyond the schema's own example and the 120-char max. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb and resource ('create a new empty chart in the workspace') plus the key side effect of switching to it, which distinguishes it from builders like build_simple_chart or build_semantic_venue that populate an existing chart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' and 'Not for' clauses name the exclusion condition (one-chart connections are refused) and route to alternatives; the 'Next' line chains to get_chart then build_semantic_venue/build_simple_chart, so the agent knows the expected follow-up sequence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_chart_categoryCreate Chart CategoryAInspect

Add a price category with colour, optional price and ticket types (child, senior...). Use when: a new price level is needed. The colour must stand out; the error suggests one. Not for: editing one (use update_chart_categories). Next: assign it with categoryKey on update_rows or update_sections. Example: {"label": "VIP", "color": "#D4AF37", "price": 120, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
colorYesHex colour
labelYesNew category name
priceNoBase price
tiersNoTicket types, e.g. child or senior, each with a price
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write/non-destructive/non-idempotent profile; the description adds real value on top by disclosing the validation failure mode for colour ('the error suggests one') and pointing to the expectedUpdatedAt concurrency token via get_chart. It does not describe what the call returns (e.g. the new category key), which matters for a creation tool 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then cleanly sectioned as Use when / Not for / Next / Example. Every sentence carries routing or payload information; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-destructive mutation with annotations and a fully described schema, the description covers purpose, prerequisites (via expectedUpdatedAt source), sibling choice, and next step. The remaining gap is the return value / how to obtain the new category key, which the follow-up advice only partially bridges.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by supplying a full worked payload and by framing `tiers` as ticket types with a child/senior flavour, which the schema only hints at via its `restriction` enum. It doesn't add new constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a price category') plus the fields that define it (colour, optional price, ticket types). It is immediately distinguishable from sibling update_chart_categories, which it names explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use when: a new price level is needed', 'Not for: editing one (use update_chart_categories)', and a follow-up step ('Next: assign it with categoryKey on update_rows or update_sections'). This covers when, when-not, the alternative, and the downstream flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_chart_zoneCreate Chart ZoneAInspect

Create a zone: a named group of sections like Lower Bowl, for zooming and grouping. Use when: e.g. "group 101-120 as the Lower Bowl". Next: update_sections with the new zoneId. Example: {"label": "Lower Bowl", "color": "#2563EB", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
colorYesZone colour, hex like "#2563EB"
labelYesZone name buyers see, e.g. "Lower Bowl"
useGlobalFocalNoAlways true
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare mutation, non-destructive, and non-idempotent, so the safety profile is covered. The description adds a genuinely useful behavioral fact beyond that: creating the zone does not assign sections, so a separate update_sections call with the returned zoneId is required to complete the grouping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then usage condition, then the required follow-up call, then a compact payload example. Every line 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-destructive create with no output schema, the description covers purpose, trigger, and next step. The one residual gap is that it implies the new zoneId comes back in the response without stating the return shape or whether other zone data is echoed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with label, color, expectedUpdatedAt and the const useGlobalFocal all documented, so the baseline is 3. The inline example repeats the same field set without adding semantics such as label uniqueness or the concurrency meaning of expectedUpdatedAt beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Create a zone') plus a definition of what a zone actually is ('a named group of sections like Lower Bowl, for zooming and grouping'). This distinguishes it cleanly from siblings update_chart_zones and delete_chart_zone, which operate on existing zones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when' clause with a concrete example ('group 101-120 as the Lower Bowl') gives a clear trigger condition, and 'Next: update_sections with the new zoneId' documents the follow-up step. It does not explicitly contrast with update_chart_zones for the case where a zone already exists, so no exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_eventCreate EventA
Idempotent
Inspect

Create a new event (show date) from a published chart, as a draft in setup: nothing is on sale until sales are opened. Use when: e.g. "add a Sunday matinee", "set up next month's concert". Needs "Create and run events" on the connection. Retrying the same call makes one event. Not for: a copy of an existing event with its prices and releases (use duplicate_event). Next: get_event for what still blocks selling, then plan_inventory_change with action open_sales. A test event switches to live with set_event_mode. Example: {"name": "Diwali Night", "startsAt": "2026-11-14T19:30:00+05:30", "timezone": "Asia/Kolkata", "venue": "Riverside Hall"}

NameRequiredDescriptionDefault
modeNotest: test payments, no real money; default live
nameNoEvent name buyers see; default: the chart name
venueNoVenue name or address shown to buyers
chartIdNoPublished chart from list_charts; default: the selected chart
startsAtNoStart, ISO 8601 with its UTC offset, e.g. 2026-11-14T19:30:00+05:30
timezoneNoIANA time zone, e.g. Asia/Kolkata; default: the zone your other events usually use
idempotencyKeyNoOptional. The same key returns the first result; default: one event per identical request

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly=false, idempotent=true, destructive=false), the description discloses that the created event is a non-selling draft requiring a separate open_sales step, that a permission is required, and that retrying produces exactly one event. It also explains the test-to-live transition via set_event_mode, which the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and its draft-state constraint, then organized into labeled 'Use when', 'Not for', 'Next' and 'Example' blocks. Every line carries operational information; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating, no-output-schema tool in a dense workflow of ~140 siblings, the description supplies the lifecycle context an agent needs: draft creation, what blocks selling, how sales open, and how test events go live. Nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines all seven parameters; the description adds value by giving a realistic payload example that shows how name, startsAt and timezone are expected to look together. It does not elaborate on mode, chartId or idempotencyKey semantics beyond what the schema already states, so it exceeds baseline without being exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new event (show date) from a published chart') and immediately adds the key scope qualifier that the result is a draft in setup with nothing on sale. It explicitly sets itself apart from the nearest sibling (duplicate_event) rather than leaving the distinction to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete 'Use when' triggers with sample utterances, an explicit 'Not for' case routed to duplicate_event, required permission ('Create and run events'), and a 'Next' chain pointing at get_event and plan_inventory_change. Both when-to-use and when-not-to-use are covered with named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_event_configurationCreate Event ConfigurationAInspect

Create an event configuration (version 1, draft): a setup listing production shapes and the seats they take off sale. The chart is not changed. Use when: the venue has different setups, e.g. "the concert stage kills rows A-C". Next: submit_event_configuration. Example: {"label": "Concert", "overlay": {"objectIds": ["shape_thrust01"], "productionKillSeatIds": ["row_a1b2c3:0"]}}

NameRequiredDescriptionDefault
labelYesSetup name
overlayYesShape ids in the setup, seat ids taken off sale, production elements

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readonly, non-destructive, non-idempotent behavior; the description adds meaningful context beyond them by stating 'The chart is not changed' and that the result is a draft, version 1. It stops short of describing what happens on duplicate labels, whether creation is reversible, or what the final state transition requires.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Occupies four tight lines: definition, usage trigger, next step, example. The most decision-relevant fact (chart unchanged, draft) is front-loaded and the example replaces prose that would otherwise be needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with a deeply nested overlay object, the description supplies purpose, trigger, sequencing and a call example, and no output schema means no return-value explanation is owed. The omission of productionElements and its occlusion/height semantics is the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the worked example goes further by showing a concrete payload that maps 'label' to a setup name and demonstrates the id:index format of productionKillSeatIds. The optional nested 'productionElements' array (the most intricate part of the schema) is never mentioned, keeping this below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (create an event configuration) plus its object semantics — a setup listing production shapes and the seats they take off sale — and clarifies output state (version 1, draft). This clearly distinguishes it from sibling mutations like update_event_configuration and the chart-editing tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('the venue has different setups, e.g. "the concert stage kills rows A-C"') and a concrete next step ('Next: submit_event_configuration'), which routes the agent through the workflow. It does not state when not to use it — e.g. when an existing configuration should be modified via update_event_configuration instead of creating a new one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_panorama_manifest_jobCreate Panorama Manifest JobA
Idempotent
Inspect

Queue a CSV or JSON list of 360° seat-view photos, each for the venue, a floor, section, row or seat. Use when: many photos at HTTPS links. A person applies the result in Designer. Not for: one photo (use set_view_from_seat_fallback). Next: get_panorama_manifest_job. Example: {"manifestText": "scope,key,url,projection,bearing,pitch,eyeHeightM,capturedAt,source\nsection,sec_a1b2c3,https://x.example/a.jpg,equirectangular,0,0,1.2,2026-09-01,Venue", "format": "csv", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
formatYesHow manifestText is written: csv or json
manifestTextYesCSV with header row or JSON array, up to 100 rows; all columns in the Example are required
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the write/idempotent/openWorld profile, and the description adds meaningful context beyond them: this is an asynchronous job whose result must be fetched via get_panorama_manifest_job and applied manually by a human in Designer, plus a concurrency token (expectedUpdatedAt) guarding the write. It does not state size/rate limits or job failure behavior, keeping it short of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labelled lines (Use when / Not for / Next / Example) front-load the routing decision before the payload detail. The long example line earns its space by encoding the column contract that would otherwise take multiple sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write/job tool with no output schema, the description covers the async follow-up and human application step. It never explicitly says what the create call returns (a job handle/id), which leaves a small gap for an agent deciding what to do with the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters; baseline would be 3. The description adds a concrete worked manifest payload showing the required column set and the expected format, which is genuinely additive for constructing manifestText. The expectedUpdatedAt meaning remains schema-documented only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — queue a manifest job for a CSV/JSON list of 360° seat-view photos — and immediately scopes each row to venue, floor, section, row or seat. It also names the sibling it is not (set_view_from_seat_fallback) so the tool is distinguishable 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when: many photos at HTTPS links', an explicit 'Not for: one photo (use set_view_from_seat_fallback)' exclusion with the alternative named, plus a 'Next: get_panorama_manifest_job' follow-up step and the note that a person applies the result in Designer. Nothing about when to use it 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.

delete_chart_categoryDelete Chart CategoryA
Destructive
Inspect

Delete a category; with moveSeatsTo, its seats, tables and areas move to another category first. Never the last one or one from a traced plan. Use when: a price level should go, e.g. "merge Value into Standard". Example: {"categoryKey": "cat_restricted", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
categoryKeyYesCategory key
moveSeatsToNoCategory key to move its inventory to; without it the category must be unused
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and non-idempotent, so the safety profile is known. The description adds genuine value beyond that: it discloses exactly what is affected (seats, tables, areas) and where they go when moveSeatsTo is supplied, plus two inviolable business constraints (last category, traced plan). It still doesn't say explicitly that the deletion is irreversible or what happens to inventory left behind without moveSeatsTo beyond the unused-category rule.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses plus a usage line and a compact JSON example — every element earns its place. The destructive effect and the moveSeatsTo branch are front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter destructive mutation with no output schema, the description covers effect, inventory relocation, preconditions, when to reach for it, and a sample call — everything needed to invoke it correctly. Annotations carry the safety signalling, so nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so 3 would be the baseline, but the description explains the *effect* of moveSeatsTo (seats, tables and areas are relocated before deletion) rather than just its type, and the example anchors expectedUpdatedAt as a real value with a concrete category key. That is meaningfully more than the schema's one-line parameter blurbs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete a category") plus the exact scope of the deletion (its seats, tables and areas). It is clearly distinguishable from siblings like delete_chart_objects and delete_chart_zone, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ("Use when: a price level should go, e.g. 'merge Value into Standard'") and hard preconditions ("Never the last one or one from a traced plan"). It does not name an alternative sibling tool (e.g. update_chart_categories for renaming rather than removing), so it stops just short of full when/when-not/alternatives coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_chart_objectsDelete Chart ObjectsA
Destructive
Inspect

Delete whole objects by id: rows, tables, booths, standing areas, sections, shapes, texts. Use when: e.g. "remove the balcony". Without confirmRemove it only previews; cannot be undone. Not for: single seats (use update_seats). Example: {"objectIds": ["row_a1b2c3"], "confirmRemove": true, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
objectIdsYesObject ids from get_chart
confirmRemoveNotrue deletes; left out, previews
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description earns credit for adding non-redundant behavior: dry-run-by-default via confirmRemove and that deletion 'cannot be undone'. It stops short of explaining what the preview response contains or how expectedUpdatedAt conflicts surface.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the scope, use trigger, exclusion, and a JSON example — all front-loaded, no filler. The preview/irreversibility caveat is placed where it will be read before invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers the safety-relevant unknowns (preview mode, irreversibility) and the ID source. Only the preview return shape and update-timestamp failure handling are unaddressed, which is minor given the 100%-covered schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented, and the description mostly reinforces it. The worked example does show confirmRemove=true alongside expectedUpdatedAt, hinting at the optimistic-concurrency pairing, but floorId and the meaning of a mismatch are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete whole objects by id') and enumerates the covered object types (rows, tables, booths, standing areas, sections, shapes, texts). It also explicitly excludes a sibling: 'Not for: single seats (use update_seats).'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit use-when example ('remove the balcony'), an exclusion routing to update_seats, and the key operational condition that omitting confirmRemove only previews. This is close to the full when/when-not/alternative triad.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_chart_zoneDelete Chart ZoneA
Destructive
Inspect

Delete a zone; its sections stay. Use when: a group is no longer wanted. Needs confirmClearSectionAssignments if sections use it. Example: {"zoneId": "zone_a1b2c3", "confirmClearSectionAssignments": true, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
zoneIdYesZone id from get_chart
expectedUpdatedAtYesmeta.updatedAt from get_chart
confirmClearSectionAssignmentsNoRequired if sections use it

TDQS

A3.9/5.0
Behavior4/5

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 genuinely new behavior — sections are preserved, and section assignments may need explicit confirmation. It stops short of saying whether the delete is recoverable or what happens to rows/seats inside the zone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact lines, front-loaded with the behavior and the trigger before the example. The example earns most of its space as a call template, but is marginally redundant given full schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers the post-condition, the conditional parameter, and the concurrency token in the example. Missing are permission requirements, stale-expectedUpdatedAt failure behavior, and the fate of objects nested inside the zone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, including identical wording for confirmClearSectionAssignments ("Required if sections use it"). The description's only addition is a concrete example payload, which slightly conflicts with the conditional phrasing by always showing the flag as true. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ("Delete a zone") plus the non-obvious consequence that sections survive, which distinguishes it from delete_chart_objects and delete_chart_category by implication. It never names those siblings explicitly, so the differentiation rests on the word "zone" alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: a group is no longer wanted" gives an explicit trigger condition, and the confirmClearSectionAssignments note states a prerequisite. There is no when-not guidance and no routing to update_chart_zones or delete_chart_category as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diff_vs_referenceMeasure Current Geometry Against ReferenceA
Read-onlyIdempotent
Inspect

Measure how closely a traced chart matches its floor-plan image: section outline overlap and distance, plus whether every section, zone, stage, category and seat count from the plan shows up in the buyer view. Returns the numbers and a PNG marking missing and extra areas. Use when: after render_preview on a chart traced from an image, to find sections that drifted from the plan. Not for: charts with no traced plan, or general quality (use validate_current_chart). Needs the vision probe once per connection. Next: restore_reference_sections for drifted sections, then validate_current_chart. Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
floorIdNoOptional persisted floor id returned by get_chart; defaults to the first floor

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, idempotent, non-destructive, and closed-world. The description adds substantial context beyond them: the vision probe prerequisite, the reference_analysis_pending error with retryAfterSeconds, and the fact that the tool returns both numbers and a PNG diff image.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured and front-loaded: the core measurement is first, followed by succinct Use when / Not for / Next / Error sections. Every line contributes operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only comparison tool with one fully documented optional parameter, the description is complete enough to call correctly. It covers purpose, prerequisites, exclusions, output shape, next steps, and the asynchronous pending state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one optional parameter, floorId, and schema description coverage is 100%, so the schema already explains it fully. The description does not discuss floorId or its default behavior, which is acceptable given the high schema coverage but adds no parameter-level value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: measuring a traced chart against its floor-plan image, with named comparison dimensions (outline overlap, distance, section/zone/stage/category/seat-count coverage). It is clearly distinguished from sibling validate_current_chart and from charts without a traced plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it (after render_preview on a chart traced from an image), when not to use it (charts with no traced plan; general quality checks should use validate_current_chart), and what to do next (restore_reference_sections then validate_current_chart). It also names the prerequisite vision probe.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

divide_section_with_aislesDivide Section With AislesA
Destructive
Inspect

Split one empty section into 2-60 named sections with aisles, as radial slices or straight bands. Use when: e.g. "cut the lower bowl into 12 sections". Next: fill_sections_with_rows. Example: {"sourceSectionId": "sec_a1b2c3", "mode": "radial", "partCount": 12, "aisleWidth": 44, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
modeYesradial slices round the stage
floorIdNoFloor id; default: first floor
partCountYesHow many sections to make, 2-60
aisleWidthYesChart units; 44 ≈ 1 m
labelStartNoFirst section number
labelPrefixNoText before each number
labelPaddingNoZero-pad to this many digits
sourceSectionIdYesEmpty section id
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=false; the description adds that the source section must be empty, that partCount is bounded 2-60, and that expectedUpdatedAt (from get_chart) guards the mutation. It stops short of saying the source section is consumed/replaced or what error a stale expectedUpdatedAt produces.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines: what it does, when to use it, what to do next, and a concrete call example. No filler sentences and nothing restated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent 9-parameter mutation with no output schema, the description supplies the workflow position (before fill_sections_with_rows) and the concurrency-token source, which is enough to call it safely. It omits what happens to the original section's identity and the failure mode on stale expectedUpdatedAt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the worked example shows the required parameters in a realistic combination (mode=radial, partCount=12, aisleWidth=44, expectedUpdatedAt as a timestamp) and ties expectedUpdatedAt to get_chart. It does not explain the non-radial modes or the label* parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Split one empty section into 2-60 named sections with aisles'), plus the two geometric modes (radial slices / straight bands). This clearly separates it from siblings like repeat_section_radially, mirror_section_assembly, or fill_sections_with_rows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use-when example ('cut the lower bowl into 12 sections') and names the follow-up step (fill_sections_with_rows). It does not say when to prefer alternatives such as repeat_section_radially or mirror_section_assembly, so exclusions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_eventDuplicate EventA
Idempotent
Inspect

Copy an event to a new date, as a draft in setup: prices, releases, blocks and settings come along, orders and sales do not. Use when: e.g. "a new show date like Friday's", "run it again next week". Needs "Create and run events". Retrying the same call makes one copy. Next: get_event, then plan_inventory_change with action open_sales. Example: {"eventKey": "ev_1350a828b5ff", "startsAt": "2026-11-21T19:30:00+05:30"}

NameRequiredDescriptionDefault
nameNoName of the copy; default: "<name> copy"
eventKeyYesThe event to copy: a key from find_events
startsAtNoStart of the copy; default: one week after the source, ISO 8601 with its UTC offset, e.g. 2026-11-14T19:30:00+05:30
idempotencyKeyNoOptional. The same key returns the first result; default: one event per identical request

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations it discloses the substantive behavior: the copy lands as a draft in setup, prices/releases/blocks/settings transfer while orders and sales do not, and retrying the same call produces only one copy. It also adds the authorization requirement annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core behavior, then labeled Use when / Next / Example blocks. Every sentence carries distinct information with no restatement of the name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-destructive, idempotent mutation with a fully documented schema and no output schema, the description covers scope, side effects, permissions and next steps. It stops short of saying what identifying handle the copy returns, which would be the last useful detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters including defaults. The description still adds value by supplying a concrete example payload showing the eventKey and offset-bearing ISO 8601 startsAt format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (copy an event) plus the resulting state (new date, draft in setup) and delineates exactly what is carried over versus omitted. An agent can distinguish this from create_event or update_event 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when" gives concrete natural-language triggers and names the required permission scope ("Create and run events"). It also prescribes the follow-up chain (get_event, then plan_inventory_change with open_sales), though it never explicitly contrasts against create_event as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fill_sections_with_rowsFill Sections With RowsA
Destructive
Inspect

Fill 2-60 sections with rows to a seat count each; all or nothing. Use when: several empty sections with known capacities. Not for: one section (use fill_section_with_rows). Example: {"targets": [{"sectionId": "sec_a1b2c3", "targetCapacity": 220}, {"sectionId": "sec_d4e5f6", "targetCapacity": 240}], "categoryKey": "cat_standard", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
rowGapNoChart units; default 28
targetsYessectionId and seats wanted, per section
edgeInsetNoMargin inside each edge, chart units
categoryKeyYesCategory key from get_chart
orientationNofocal-tangent faces the stagefocal-tangent
seatSpacingNoChart units; 24 ≈ 0.55 m
seatLabelStartNoFirst seat number in each row. Default 1
replaceExistingNoRebuild sections that have rows
expectedUpdatedAtYesmeta.updatedAt from get_chart
numberingDirectionNoserpentine alternates each rowltr

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-structured behavior: the operation is atomic ('all or nothing') and bounded to 2-60 sections. It stops short of warning what happens to sections that already have rows (only the schema's replaceExisting field hints at this) or what a failure returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three terse labeled lines plus one example: behavior and cardinality first, then usage, then counter-usage, then a payload sample. No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter destructive batch mutation with no output schema, the description covers scope, atomicity, the alternative tool, and a sample payload. It omits conflict behavior for stale expectedUpdatedAt and what the caller gets back on partial rejection, which would matter at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds a concrete composite example showing how targets, categoryKey, and expectedUpdatedAt are assembled together, which is useful for a required array-of-objects parameter; the expectedUpdatedAt/get_chart relationship itself is already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the cardinality constraint: 'Fill 2-60 sections with rows to a seat count each; all or nothing.' It also explicitly contrasts with the sibling fill_section_with_rows, so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('several empty sections with known capacities'), explicit when-not ('one section'), and names the alternative tool to use instead. Nothing 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.

fill_section_with_rowsFill Section With RowsA
Destructive
Inspect

Fill one existing section with rows that fit its outline, to a seat count or as many as fit. Use when: a section is empty, e.g. "fill 104 with 350 seats". Refused if it has rows unless replaceExisting. Not for: several sections (use fill_sections_with_rows). Example: {"sectionId": "sec_a1b2c3", "categoryKey": "cat_standard", "targetCapacity": 350, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
rowGapNoChart units; default 28
floorIdNoFloor id; default: first floor
sectionIdYesSection id from get_chart
curveStyleNoOnly straight is supportedstraight
categoryKeyYesCategory key from get_chart
orientationNofocal-tangent faces the stagefocal-tangent
seatSpacingNoChart units; 24 ≈ 0.55 m
targetCapacityNoSeats wanted; default: as many as fit
replaceExistingNoRebuild existing rows
expectedUpdatedAtYesmeta.updatedAt from get_chart
numberingDirectionNoserpentine alternates each rowltr

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive and non-idempotent behavior. The description adds important preconditions: it refuses to fill a section that has rows unless replaceExisting is used, and replaceExisting rebuilds existing rows. That is exactly the kind of behavioral context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and structured around use-when, refusal, not-for, and example. Every sentence contributes to selecting or invoking the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with annotations and no output schema, the description covers the essential selection, refusal, and replacement behavior. It does not describe the return value or post-fill validation, but the critical invocation constraints are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines every parameter and its defaults. The description adds a useful invocation example but otherwise does not explain parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: fill one existing section with rows that fit its outline. It also explicitly distinguishes this from the sibling fill_sections_with_rows, which handles several sections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit use conditions (section is empty, e.g. "fill 104 with 350 seats"), refusal behavior when rows already exist unless replaceExisting is set, and a direct alternative for multiple sections.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_eventsFind EventsA
Read-onlyIdempotent
Inspect

Find events by name, start date or sales state, with sold, held, blocked and available seats and the chart each uses. Use when: the user names a show or a date ("the Friday show", "Diwali night in November") and you need its eventKey. A workspace connection searches every chart; no select_chart needed. Not for: one event's sections (use get_event_sections). Next: get_seats or get_event_sections with its key. Example: {"query": "Diwali", "from": "2026-11-01", "to": "2026-11-30"}

NameRequiredDescriptionDefault
toNoLatest start, inclusive: a date covers that whole day (UTC)
fromNoEarliest start, inclusive: a date (2026-11-07) or an ISO time, in UTC
limitNoEvents per page, 1 to 50 (default 20)
queryNoWords from the event name, venue or key; every word must match
cursorNopage.nextCursor from the previous find_events call
statusNoSales states to keep: setup, testable, live, paused or ended

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds genuinely new behavior: a workspace connection searches every chart, so select_chart is unnecessary. It stops short of describing pagination behavior or result caps beyond what the cursor/limit schema fields imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose, then labelled Use when / Not for / Next / Example blocks. Every sentence carries routing or parameter information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param, all-optional search tool with no output schema, the description supplies the return shape (seat counts by state, chart) and the follow-up calls, and the schema covers filters and paging. An agent can call this correctly without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description earns one step more by mapping natural-language user intent to specific parameters and giving a concrete example that shows query combined with a from/to range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (find events) plus the filter dimensions (name, start date, sales state) and what each result carries (sold/held/blocked/available seats and its chart). This is clearly separable from get_event (single event) and list_chart_events in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' with concrete user phrasings ('the Friday show', 'Diwali night in November'), an explicit 'Not for' routing to get_event_sections, and a 'Next:' pointer to get_seats/get_event_sections. It also rules out a tempting alternative by noting no select_chart is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_orderFind OrderA
Read-onlyIdempotent
Inspect

Find an event's orders by order reference, ticket code, buyer or guest name, email, phone or seat (up to 20, newest first). Use when: a buyer calls ("I booked under Priya", "order 1234 5678", "who has seat F-4?"). Needs the Orders permission. Next: get_order with its orderRef. Example: {"eventKey": "ev_1350a828b5ff", "query": "priya@example.com"}

NameRequiredDescriptionDefault
queryYesOrder reference, ticket code, name, email, phone or seat
eventKeyYesKey from find_events

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the description's added value is the 20-result cap, 'newest first' ordering, and the permission gate — all behavior an agent cannot infer from the schema. It does not discuss truncation behavior when more than 20 matches exist, but the core traits are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the capability and limits, then use-cases, prerequisite, next step, and an example — each line is a distinct, actionable unit with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still conveys the return shape indirectly (max 20 results, newest-first ordering, results carry an orderRef for get_order). It stops short of describing result fields or how partial/ambiguous matches are returned, but is otherwise complete for a 2-param search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters already document their accepted values, so the description largely restates them. The worked example ({"eventKey": "ev_1350a828b5ff", "query": "priya@example.com"}) adds mild concreteness but no new semantics about matching behavior or ambiguity handling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Find') and resource ('an event's orders') with the exact lookup keys (order reference, ticket code, name, email, phone, seat). The parenthetical 'up to 20, newest first' bounds scope, which cleanly separates it from list_orders (unbounded listing) and get_order (single-record fetch).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when:' clause gives concrete caller scenarios ('I booked under Priya', 'who has seat F-4?') and the Orders permission prerequisite is stated explicitly. It also routes forward ('Next: get_order with its orderRef'), though it never explicitly contrasts with list_orders for the browse-all case or states a when-not condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_capabilitiesGet Designer CapabilitiesA
Read-onlyIdempotent
Inspect

Start here. Returns step-by-step playbooks for the common jobs (new venue, edit, trace a floor plan, publish, live events), what this connection may do (edit, publish, which chart or workspace), what is not possible yet, and the detailed limits of every feature. Use when: at the start of every conversation, before choosing tools. Next: get_chart, then follow the playbook that matches the request.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the read-only, idempotent, non-destructive profile, and the description adds valuable behavioral context by naming the content returned: playbooks, permission boundaries, unsupported cases, and per-feature limits. This is exactly the orientation information an agent needs before selecting other tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with 'Start here', then succinctly covers what is returned, when to use it, and what to do next. Every sentence earns its place and the structure maps directly to an agent's decision process.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an empty input schema, no output schema, and rich annotations, the description is complete for an orientation tool. It explains what categories of information come back and how to proceed, which is sufficient for calling and using it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. There is no parameter meaning to explain, and the description correctly does not invent any.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: returns playbooks, connection capabilities, limitations, and feature limits. 'Start here' and the enumerated job types make its orientation role unmistakable among the many sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use it ('at the start of every conversation, before choosing tools') and names the next tool to use ('get_chart'). This gives an agent a clear routing decision instead of leaving sequencing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_channelGet Sales ChannelA
Read-onlyIdempotent
Inspect

Show one sales channel: its seats by section, what its buyers can buy, its own price list and its history. Use when: e.g. "which seats does the sponsor channel hold?" or "what changed on the agency channel?". Next: plan_inventory_change. Example: {"eventKey": "ev_1350a828b5ff", "channelId": "Travel Agency A"}

NameRequiredDescriptionDefault
eventKeyYesKey from list_chart_events
channelIdYesChannel id or name from list_channels

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so safety is covered. The description adds real value beyond that by disclosing the payload contents (seats, buyability, price list, history) and by pointing at the next workflow step. It does not mention result size or pagination behavior for channels with many seats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose comes first, then usage examples, then the next step, then a compact example object. Every line carries information an agent can act on; there is no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, the description covers what it does, when to call it, what comes back at a high level, and what to do next. The only gap is the absence of any note on ordering or volume of the returned seat/price/history data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already documents its source (eventKey from list_chart_events, channelId from list_channels). The description adds a concrete invocation example with real-shaped values, which reinforces the dependency chain rather than merely restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ("Show one sales channel") and enumerates exactly what is returned: seats by section, buyer entitlements, own price list, and history. This clearly separates it from list_channels (plural listing), though it does not explicitly distinguish itself from get_channel_report or get_event_pricing, which an agent must infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies two concrete trigger questions ("which seats does the sponsor channel hold?", "what changed on the agency channel?") and names the natural follow-up tool, plan_inventory_change. What is missing is a negative case — when to reach for get_channel_report or list_channels instead — so the agent still has to infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_channel_reportGet Channel Sales ReportA
Read-onlyIdempotent
Inspect

Report sales per sales channel beside each one's seats, with sell-through and, with since, seats sold since then. Money only on a connection with "Read reports"; counts otherwise. Use when: e.g. "how is the agency selling?" or "what did each channel sell this week?". Example: {"eventKey": "ev_1350a828b5ff", "since": 1790000000000}

NameRequiredDescriptionDefault
sinceNoAlso count seats sold since this time, epoch ms
eventKeyYesKey from list_chart_events

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly/idempotent/non-destructive), so the bar is lower, and the description adds genuinely non-obvious behavior: monetary values only appear when the connection has 'Read reports' permission, otherwise counts only. That permission-dependent output shape is exactly the kind of context annotations cannot carry. It does not describe response structure or any limits, keeping it at 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then usage, then an example - a sensible ordering with no filler. The phrasing is slightly compressed ('beside each one's seats'), but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only report with full schema coverage and no output schema, the description covers purpose, trigger conditions, permission-dependent output, and an example call. Only the shape of the returned rows is left implicit, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines both parameters, including 'since' as epoch ms and eventKey as coming from list_chart_events. The description restates 'since' as counting seats sold since that time and supplies an example payload, adding only marginal meaning beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('report') and resource ('sales per sales channel') and enumerates the reported measures (seats, sell-through, seats sold since). It is clearly distinguishable from get_event_report and get_channel by its per-channel dimension, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when' line gives two concrete natural-language phrasings ('how is the agency selling?', 'what did each channel sell this week?') that map intent to tool. It supplies no exclusions or explicit alternative tools, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chartGet Scoped ChartA
Read-onlyIdempotent
Inspect

Read the chart: categories (keys, names, prices), floors, sections, rows, tables, booths, standing areas, shapes and texts, each with its id. Use when: starting work, before any change (you need ids and meta.updatedAt), or after a conflict error. Big charts come back as a summary; ask view full only if you need every seat. Not for: checking quality (use validate_current_chart) or seeing it (use render_preview). Next: pass meta.updatedAt as expectedUpdatedAt to your change.

NameRequiredDescriptionDefault
viewNoauto (default): full unless the chart is too big to read, then summary

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavior: large charts are truncated to a summary and "view: full" should only be requested when every seat is needed. It also discloses the optimistic-concurrency token (meta.updatedAt) that guards subsequent mutations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the payload, then clearly labeled Use when / Not for / Next blocks. Every sentence carries operational information; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description correctly fills that gap by enumerating returned object types and the summary-vs-full truncation, and it covers the concurrency workflow an agent needs to safely follow up.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema coverage the baseline is 3; the description earns more by giving the decision criterion behind the enum — only ask for "full" if you actually need every seat, since big charts default to a summary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read the chart" plus an explicit enumeration of returned entities (categories, floors, sections, rows, tables, booths, GA areas, shapes, texts) with ids makes the resource and output unambiguous. It is clearly distinguishable from validate_current_chart and render_preview, which are named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit triggers (starting work, before any change, after a conflict error) and explicit exclusions routing quality checks to validate_current_chart and visual inspection to render_preview. It even states the follow-up action of passing meta.updatedAt as expectedUpdatedAt.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chart_reviewGet Persisted Chart ReviewA
Read-onlyIdempotent
Inspect

Fetch a review and its pictures again, and say if the chart changed since. Use when: after a reconnect, or before publishing. Example: {"reviewId": "crp_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c"}

NameRequiredDescriptionDefault
reviewIdNoFrom prepare_chart_review; default latest

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds genuine behavior not in annotations — it re-fetches the stored images and performs a staleness comparison ('say if the chart changed since'), and explains the reconnect scenario that motivates the call. It leaves ambiguous what 'since' is measured against and what happens if the review 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the action, followed by usage and a concrete example — no filler. The example value is slightly redundant with the schema pattern, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does carry return-value burden and partially discharges it by naming the outputs (the review, its pictures, a changed/unchanged signal). What remains thin is the freshness comparison semantics and error behavior, but for a single-param read tool this is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, with the schema already documenting the crp_ pattern and 'From prepare_chart_review; default latest.' The description's example value restates the schema rather than adding new meaning such as what 'latest' resolves to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Fetch') and resource ('a review and its pictures'), plus a secondary capability ('say if the chart changed since'). This distinguishes it from prepare_chart_review, which the schema names as the producer of the id, though the description itself never contrasts the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger conditions are given: 'after a reconnect, or before publishing.' That is real when-to-use guidance, but no when-not or named alternative (e.g. prepare_chart_review vs publish_reviewed_chart) is offered, and 'before publishing' never names publish_reviewed_chart directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_confidence_coverageGet Confidence CoverageA
Read-onlyIdempotent
Inspect

Show which seats lack a Verified View record and how many buyer reports are open. Use when: before an on-sale or after reports. Example: {"eventId": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
eventIdNoEvent key; default: the draft

TDQS

A3.8/5.0
Behavior3/5

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 that results are scoped to seats missing Verified View coverage plus open report counts, which is useful return-content context given there is no output schema, but it says nothing about result size, formatting, or how the event defaults are resolved beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact lines: what it shows, when to call it, and a copy-pasteable example. Purpose is front-loaded and every line earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter read tool with no output schema, the description covers purpose, timing, and the shape of the result well enough to call correctly. Minor gaps remain around the scope of "coverage" (whole event vs. section) and result volume.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single eventId parameter is documented with a default ("default: the draft"), so the schema does the explaining. The description's example {"eventId": "ev_1350a828b5ff"} only illustrates the format and does not clarify the default behavior the schema hints at, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and two concrete outputs: seats lacking a Verified View record, and the count of open buyer reports. That is far more than a restated title. It doesn't name a sibling (e.g., list_view_evidence_reports or get_chart_review) to differentiate, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: before an on-sale or after reports" gives clear temporal triggers, which is exactly the context an agent needs to schedule this call. There are no explicit exclusions or named alternatives, so it falls short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_eventGet EventA
Read-onlyIdempotent
Inspect

Read one event's settings, sales state, seat counts, checkout (payment provider, event page link) and sales readiness: what still blocks opening sales, in plain words. No buyer data. Use when: before opening sales, or e.g. "is Friday ready to go on sale?", "what time does the gala start?". Needs "Create and run events". Next: update_event, or plan_inventory_change with action open_sales, close_sales or reopen_sales. Example: {"eventKey": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
eventKeyYesKey from find_events or list_chart_events

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds real context: the required authorization scope and the explicit exclusion of buyer data, plus the readiness narrative it returns. Return format details (pagination, field shapes) are not covered, but the annotations and field enumeration largely compensate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is returned, then when-to-use, prerequisites, and next steps in labeled fragments. Dense but every clause carries information; the example line is the only mildly redundant element given the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining return content, and it does so by listing the concrete domains (settings, sales state, seat counts, checkout, readiness blockers). It is close to complete for a single-parameter read tool, with only low-level response details absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the eventKey property already documents its source ('Key from find_events or list_chart_events'). The description's example object restates this rather than adding new meaning such as format constraints or lookup failure behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) plus the resource (one event) and enumerates the content returned: settings, sales state, seat counts, checkout details, and sales-readiness blockers. The 'No buyer data' clause draws a useful boundary, though it does not explicitly contrast with near-neighbors like get_event_pricing or get_event_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers ('before opening sales', 'is Friday ready to go on sale?', 'what time does the gala start?'), states the permission prerequisite ('Needs Create and run events'), and routes to next steps (update_event, plan_inventory_change with open_sales/close_sales/reopen_sales).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_chart_freshnessCheck Event Map FreshnessA
Read-onlyIdempotent
Inspect

Check whether an event uses an older published chart version and could move to the latest. Use when: after publishing chart changes. Next: on sale, plan_inventory_change move_event_to_chart; in setup, update_event_chart. Example: {"eventKey": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
eventKeyYesKey from list_chart_events

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered structurally; the description adds the useful behavioral fact that this is a comparison against the latest published chart version and is a precursor to a move/update step. It does not describe what the check returns (e.g. drift status, version identifiers), which is left implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight lines: purpose first, then trigger, then next-step routing, with a compact example. No filler, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only check, the description covers purpose, timing, and follow-up actions well. The one remaining gap is the return shape — with no output schema, the agent is not told what a 'fresh' vs 'stale' result looks like — but this is a minor omission for a diagnostic tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter is documented as 'Key from list_chart_events', so the schema already carries the semantics (baseline 3). The description goes slightly beyond by supplying a concrete worked example ({"eventKey": "ev_1350a828b5ff"}), which usefully confirms the expected key format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check whether an event uses an older published chart version') and explicitly frames the outcome ('could move to the latest'). This is clearly distinguishable from siblings like update_event_chart and move_event_to_chart, which the description names separately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when: after publishing chart changes') and routes to the correct next tool conditioned on lifecycle state ('on sale' -> plan_inventory_change / move_event_to_chart; 'in setup' -> update_event_chart). This is the when-to-use plus alternatives pattern at its best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_configurationGet Event ConfigurationA
Read-onlyIdempotent
Inspect

Read one configuration version: its objects, removed seats, status, fit with the chart and revision numbers. Use when: before changing or moving a configuration. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c"}

NameRequiredDescriptionDefault
versionNoDefault: active or latest
configurationIdYesId from list_event_configurations

TDQS

A3.8/5.0
Behavior3/5

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 fully covered. The description adds the useful detail of what the response contains, but says nothing about the version-defaulting behavior (only in schema), permissions, or pagination/size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact lines: purpose, trigger, and a concrete call example. The purpose is front-loaded and no sentence is padding — the returned-field list and the example both earn their space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the response shape, which lets an agent decide whether the call answers its question. For a two-parameter read-only lookup this is close to complete; only the version-defaulting semantics are left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented ('Default: active or latest', 'Id from list_event_configurations'), so baseline 3 applies. The description's inline example confirms the configurationId format but adds no semantics for the version parameter, such as how revision numbers relate to a chosen version.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with cardinality ('Read one configuration version') and enumerates what the payload covers (objects, removed seats, status, chart fit, revision numbers). This implicitly separates it from list_event_configurations, though it never names that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger — 'Use when: before changing or moving a configuration' — which tells the agent exactly when to reach for this read. It lacks a when-not clause or a named alternative for the bulk case, which the schema hint ('Id from list_event_configurations') only partially covers outside the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_configuration_bindingGet Event Configuration BindingA
Read-onlyIdempotent
Inspect

Show which configuration version an event uses, with its revision. Use when: before set_event_configuration_binding. Example: {"eventKey": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
eventKeyYesKey from list_chart_events

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds value by disclosing that a revision accompanies the configuration version — signalling the optimistic-concurrency token needed by the setter — which is not in the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, each earning its place: purpose first, then usage trigger, then a concrete call example. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read with no output schema, the description covers what is returned (configuration version plus revision) and when to call it. Only the exact response shape or error behavior for an unknown eventKey is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description ('Key from list_chart_events') already explains provenance. The inline example shows the shape of eventKey but adds little beyond what the schema states, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Show which configuration version an event uses') and adds the returned field ('with its revision'). It is distinguishable from get_event_configuration and list_event_configurations, though it doesn't explicitly name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when: before set_event_configuration_binding' line gives a concrete prerequisite workflow, which is exactly the context an agent needs. There are no explicit when-not conditions, but the read-before-write pairing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_logGet Event LogA
Read-onlyIdempotent
Inspect

Read an event's history, newest first: bookings, holds, releases, blocks, section, map, price and category changes, each with who did it (a member, an agent connection and the member who connected it, a buyer route or the system). No buyer details. Use when: "who blocked row A?", "what changed on the Friday show this week?", or to check a change you applied. Needs the event reports permission on the connection. Not for: sales totals (use get_event_report). Example: {"eventKey": "ev_1350a828b5ff", "kinds": ["blocked", "map"], "from": "2026-11-01"}

NameRequiredDescriptionDefault
toNoLatest time, inclusive: a date covers that whole day (UTC)
fromNoEarliest time, inclusive: a date (2026-11-07) or an ISO time, in UTC
seatNoOnly rows naming this exact seat label, e.g. A-12
kindsNoOnly these kinds, e.g. ["blocked", "booked"]
limitNoRows per page, 1 to 100 (default 50)
cursorNopage.nextCursor from the previous get_event_log call
eventKeyYesKey from find_events or list_chart_events

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description still adds real context: newest-first ordering, the actor taxonomy (member / agent connection + connecting member / buyer route / system), the 'No buyer details' redaction guarantee, and the event reports permission requirement. It stops short of describing pagination or volume behavior, which keeps it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then a tight use/not-for block, then a single compact example. Every clause carries information; nothing is redundant with the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no output schema, and a read-only audit tool, the description adequately conveys what comes back (history entries with actor attribution, no buyer details) and how to page (cursor points at page.nextCursor). It never names the response fields directly, which is the only remaining gap given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so eventKey, from/to, kinds, seat, limit and cursor are all already documented in the schema. The description's example shows a realistic parameter combination (eventKey + kinds + from) which is mildly useful, but it adds no format or semantics beyond what the schema states. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read an event's history, newest first') and enumerates exactly what the log contains: bookings, holds, releases, blocks, section/map/price/category changes, plus actor attribution. It explicitly excludes its nearest sibling ('Not for: sales totals (use get_event_report)'), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a concrete 'Use when' block with realistic question phrasings ('who blocked row A?', 'what changed on the Friday show this week?'), an audit-the-change-you-applied case, and an explicit 'Not for' redirect to get_event_report. It also states the permission prerequisite, so the agent knows when the call can succeed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_pricingGet Event PricingA
Read-onlyIdempotent
Inspect

Read one event's prices and sales setup: each category and ticket-type price (this event's own or the chart's), what is held or booked, ticket releases and what each sold, when sections go on sale, the checkout hold time and how tables sell. Use when: before changing any of them, or e.g. "what is VIP on Friday?". Needs the event pricing or reports permission on the connection. Next: plan_inventory_change with a pricing action; the person says yes, then apply_inventory_change. Example: {"eventKey": "ev_1350a828b5ff", "parts": ["prices", "releases"]}

NameRequiredDescriptionDefault
partsNoprices, releases, windows, holds, tables (default all)
eventKeyYesKey from find_events or list_chart_events

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds value beyond them: the required permission (event pricing or reports on the connection) and the fact that values may come from this event's own setup or fall back to the chart's. It stops short of stating behavior for missing/unauthorized parts or partial failures, which keeps it below 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then uses labeled clauses (Use when / Next / Example) that are easy to scan. The opening sentence is a long comma-spliced enumeration of return contents, which is dense but each item carries real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on describing return content and does so thoroughly across all five parts categories. It also supplies auth requirements and the downstream workflow. Minor gap: it doesn't indicate response shape (per-category vs per-ticket-type nesting) or behavior when a requested part is unavailable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description goes further by mapping each returned data family to the parts enum and supplying a worked example ({"eventKey": ..., "parts": ["prices", "releases"]}) that shows selective retrieval. It does not explicitly say that omitting parts means all, leaving that to the schema's own default note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read one event's prices and sales setup") and then enumerates the contents: category and ticket-type prices, holds/bookings, releases, on-sale windows, checkout hold time, table selling. This distinguishes it cleanly from near siblings such as get_event, get_event_sections and get_event_section_inventory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit "Use when" clause with both a workflow trigger (before changing pricing) and a natural-language user question example. It also names the follow-on path (plan_inventory_change, then apply_inventory_change after confirmation), so the agent knows this is the read step of a two-phase mutation flow rather than a terminal call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_reportGet Event ReportA
Read-onlyIdempotent
Inspect

Report one event's sales: seats by status and by category with booked value, money taken by channel and payment method with refunds and discounts, bookings and sales per day or hour, and door counts (checked in against expected). Counts and totals only; no buyer or door list. Use when: "how is the Friday show selling?", "takings so far", "how many are in?". Needs the event reports permission on the connection. Not for: who changed what (use get_event_log). Example: {"eventKey": "ev_1350a828b5ff", "parts": ["sales", "money"]}

NameRequiredDescriptionDefault
unitNoInterval for activity: day (default) or hour
partsNosales, money, activity, attendance (default all)
eventKeyYesKey from find_events or list_chart_events

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description still adds real value beyond them: the reports permission requirement on the connection and the explicit data boundary that no per-buyer or per-attendee list is returned. It does not discuss response size or grouping detail, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded summary sentence, then labeled 'Use when', 'Not for', and a concrete example. Dense but every block carries distinct information with no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates fully by describing the shape of each report section and stating the aggregation limit. With permission requirements and the get_event_log redirect included, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds meaning beyond the enums by explaining what each part actually reports (sales vs money vs activity vs attendance) and gives a worked example with parts: ['sales','money']. The unit interval semantics are left to the schema, which already documents the day default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names specific verb and resource (report on one event's sales) and enumerates the exact contents: seats by status and category with booked value, money by channel and payment method including refunds and discounts, bookings per day or hour, and door counts. It also bounds the payload with 'Counts and totals only; no buyer or door list', so an agent knows precisely what it returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete trigger phrases ('how is the Friday show selling?', 'takings so far', 'how many are in?'), an explicit exclusion with the correct alternative ('Not for: who changed what (use get_event_log)'), and the prerequisite permission on the connection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_section_inventoryGet Event Section InventoryA
Read-onlyIdempotent
Inspect

List seats in one event section, page by page, with label, status and category. Use when: before blocking or releasing seats. Next: set_event_seat_blocks. Example: {"eventKey": "ev_1350a828b5ff", "sectionId": "sec_a1b2c3", "status": "free"}

NameRequiredDescriptionDefault
limitNoSeats per page, 1-100
statusNoFilter by status
eventKeyYesKey from list_chart_events
sectionIdYesFrom get_event_sections
afterLabelNoLast label of the previous page

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds behavior beyond that: results are paginated ('page by page') and the intended position in the read-then-mutate workflow. It stops short of describing page-size defaults or what happens at the last page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded lines: what it does, when to use it, what comes next, plus one compact example. Every element is load-bearing and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming the returned fields and the paging model. With annotations covering safety and the schema covering all five parameters, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns a point by supplying a concrete example showing eventKey/sectionId/status together. It does not add meaning for afterLabel or limit beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with explicit scope: 'List seats in one event section, page by page,' plus the returned fields (label, status, category). The 'one event section' scoping distinguishes it from the broader get_seats and row-scoped get_row_seats siblings without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when: before blocking or releasing seats') and an explicit follow-on ('Next: set_event_seat_blocks'), which routes the agent through the block/release workflow. The example call shows the filter in use, so the invocation context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_sectionsGet Event SectionsA
Read-onlyIdempotent
Inspect

List one event's sections with seat counts, open/closed/hidden state and inventoryVersion. Use when: before changing section states. Next: set_event_section_states or get_event_section_inventory. Example: {"eventKey": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
eventKeyYesKey from list_chart_events

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered; the description adds value by disclosing the returned fields, which matters because there is no output schema. It stops short of stating ordering, pagination, or behavior for an unknown eventKey, so it is strong rather than complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short labeled lines — purpose, trigger, next step, example — with the core action front-loaded and nothing redundant. Each line carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by enumerating return fields, and the workflow guidance covers the surrounding read-then-mutate pattern. Minor gaps remain around ordering and error behavior for an invalid key, but nothing essential for calling it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented as "Key from list_chart_events," so the baseline is 3. The description earns an extra point by supplying a literal example value that shows the expected key format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List one event's sections") and enumerates exactly what comes back: seat counts, open/closed/hidden state, and inventoryVersion. That level of specificity separates it from sibling readers like get_section_context or get_event_section_inventory, which the description also names as follow-ups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ("Use when: before changing section states"), names the successor tools (set_event_section_states, get_event_section_inventory), and closes with a concrete call example. There is no inference required to know when this tool is the right pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orderGet OrderA
Read-onlyIdempotent
Inspect

Read one order in full: buyer, status, money, discount, guests and booking answers, each ticket with its seat, door check-in and refund state, and the price lines. Use when: "what did order 1234 5678 buy?", "have they used their tickets?", before resend_tickets. Needs the Orders permission. Not for: what happened to it over time (use get_order_timeline). Example: {"eventKey": "ev_1350a828b5ff", "orderRef": "#1234 5678"}

NameRequiredDescriptionDefault
eventKeyYesKey from find_events
orderRefYesOrder reference, e.g. "#1234 5678", from list_orders or find_order

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real value with the required permission scope and the field inventory of the response, but says nothing about behavior when the order is missing or access is unauthorized.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and payload scope, then clearly partitioned into Use when / Not for / Example. No sentence is filler; the trigger questions and example are both doing selection work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields, so an agent knows what it gets back. For a two-parameter read tool with full annotation coverage, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already documents its provenance (find_events, list_orders/find_order). The example object shows a valid invocation but adds no semantics the schema does not already carry, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read one order') and then enumerates exactly what 'in full' means: buyer, status, money, discount, guests/booking answers, per-ticket seat, check-in, refund state, and price lines. This distinguishes it from list_orders (collection), find_order (lookup), and get_order_timeline (history).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger questions ('what did order 1234 5678 buy?'), a workflow hook ('before resend_tickets'), an explicit exclusion ('Not for: what happened to it over time — use get_order_timeline'), and a prerequisite ('Needs the Orders permission').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_order_timelineGet Order TimelineA
Read-onlyIdempotent
Inspect

Read an order's history, oldest first: payment, confirmation, refunds, cancellations, seat changes and guest edits, each with who moved it. Use when: "did the refund go through?", "why is this order failed?". Needs the Orders permission. Example: {"eventKey": "ev_1350a828b5ff", "orderRef": "#1234 5678"}

NameRequiredDescriptionDefault
eventKeyYesKey from find_events
orderRefYesOrder reference, e.g. "#1234 5678", from list_orders or find_order

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent and non-destructive, so the description correctly spends its words elsewhere: chronological ordering, actor attribution per event, and the required Orders permission. Only the absence of any note on result size or pagination keeps it off 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core read statement, then clearly labelled Use when / Needs / Example blocks. Three of four lines earn their place; the example is mostly redundant with the schema examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param read with full schema coverage and annotations, the agent has what it needs: what the timeline contains, ordering, permission requirement, and where to source both IDs. No output schema exists, and the description adequately conveys the returned event list rather than leaving it opaque.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both params already explain their provenance ('Key from find_events', 'from list_orders or find_order'). The inline example shows concrete value shapes for eventKey and orderRef, but repeats the '#1234 5678' format already present in the schema, so the added meaning is marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (read an order's history) plus the exact contents the agent will get back — payment, confirmation, refunds, cancellations, seat changes, guest edits — and the oldest-first ordering. That detail distinguishes it from the state-oriented get_order sibling without needing to name it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when:' section gives two concrete diagnostic questions ('did the refund go through?', 'why is this order failed?') that map cleanly to the tool. It stops short of naming alternatives such as get_order or list_orders for the cases where this tool is the wrong pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_panorama_manifest_jobGet Panorama Manifest JobA
Read-onlyIdempotent
Inspect

Show progress of a seat-view photo job, row by row. Use when: after create_panorama_manifest_job. Example: {"jobId": "pmj_4f1c2a9e-7b3d"}

NameRequiredDescriptionDefault
jobIdYesFrom create_panorama_manifest_job

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare this as a safe, idempotent, read-only operation. The description adds that it shows progress 'row by row' and that it follows job creation, but it does not describe return details, polling behavior, or other operational context beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and includes only useful elements: purpose, usage condition, and a compact example. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status tool with rich annotations and complete parameter schema, the description covers purpose, lifecycle, and an example adequately. It could be stronger if it explained what the row-by-row progress output contains, since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the jobId parameter and its pattern are already documented. The description adds a concrete example and repeats that the ID comes from create_panorama_manifest_job, but it does not add substantial new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: showing progress of a seat-view photo job, row by row. It also links the tool to create_panorama_manifest_job, making the distinction from that sibling clear, though the phrase 'seat-view photo job' is slightly less precise than the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when: after create_panorama_manifest_job' line gives explicit lifecycle context for when to call it. It does not provide when-not-to-use guidance or alternatives, but the relevant usage condition is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_blueprintGet Reference Blueprint WorkflowA
Read-onlyIdempotent
Inspect

Show the proposed outline: stage, revision, sections with logical section ids, and blockers. Use when: after propose_reference_blueprint, or for the logical section ids later tools need. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A4.4/5.0
Behavior4/5

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 elsewhere; the description adds the return payload shape (stage, revision, sections, blockers), which is genuinely useful context. It stops short of saying whether blockers block downstream tools or how the stage/revision values should be interpreted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines: what it shows first, when to use it second, a concrete example last. Every line earns its place and the agent can act after reading only the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden — and it does enumerate stage, revision, sections, and blockers, which is enough to call the tool and expect a usable result. It omits any note on what a missing/not-yet-proposed blueprint returns, which is the one remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single fully documented parameter (100% schema coverage) the baseline is 3; the description goes further by giving a concrete JSON example and reinforcing that assetId is the reference asset id. It does not restate the ref_ prefix pattern, which the schema already covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Show the proposed outline' — and enumerates exactly what is returned: stage, revision, sections with logical section ids, and blockers. This distinguishes it from proposal-side siblings like propose_reference_blueprint and from other reads such as get_reference_overview or get_reference_regions without requiring a schema open.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when:' clause names the triggering event (after propose_reference_blueprint) and a second condition (need for logical section ids consumed by later tools). It does not explicitly exclude or contrast with near-neighbours like get_reference_overview or get_reference_set, so it falls just short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_capacity_draftGet Reference Capacity DraftA
Read-onlyIdempotent
Inspect

Read the saved seat-count plan for a traced image and whether the chart changed since. Use when: resuming in a new session, or for the draft revision. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe, idempotent, read-only, closed-world operation. The description adds useful behavioral context by saying the tool also reports whether the chart changed since the saved plan was created, which is important for resuming work.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured with purpose first, usage context second, and a compact example third. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple: one fully documented parameter, rich annotations, and no output schema. The description adequately covers what is retrieved and when to use it, though without an output schema it could say more about the exact shape of the returned draft/staleness data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single required assetId parameter is already documented in the schema as coming from upload_reference_image. The description adds an example value but does not add meaning beyond the schema's existing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Read), a specific resource (the saved seat-count plan for a traced image), and an additional returned fact (whether the chart changed since). It distinguishes the draft retrieval from save/apply/plan siblings through the words 'saved' and 'draft revision'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage contexts: 'resuming in a new session' and 'for the draft revision.' It does not name a sibling alternative or explain when not to use it, so it falls short of a full 5, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_overviewGet Reference OverviewA
Idempotent
Inspect

Show the whole uploaded image and the ids of its zoom tiles. Use when: right after upload; required before classify_reference_source. Next: classify_reference_source, or get_reference_tile to read small text. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds sequencing context that the annotations cannot express, but it does not explain why the annotations declare readOnlyHint=false for what reads as a 'get/show' operation — no mention of tile generation, caching, or any side effect. It also doesn't disclose output shape or whether the tile ids cover the full image. With annotations present the bar is lower, but the mismatch between the verb and readOnlyHint=false leaves 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose line followed by labeled 'Use when', 'Next', and 'Example' lines — every line carries information and none repeats structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does cover the return content (full image plus zoom tile ids) plus the correct downstream sequence. Slightly incomplete in that it doesn't say whether this needs to be re-called after upload, or what happens if the asset hasn't been classified yet.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sole parameter is already documented as 'Id from upload_reference_image'. The description's example supplies the concrete assetId format, which reinforces the regex pattern in a directly usable way.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb-and-resource pair: it returns the full uploaded image plus the ids of its zoom tiles. It clearly differentiates itself from the sibling get_reference_tile, which is described as the tool for reading small text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the moment to call it ('right after upload') and states a hard prerequisite relationship ('required before classify_reference_source'). It also routes the agent forward with a named alternative (get_reference_tile) for a distinct condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_regionGet Reference Region Close-upA
Read-onlyIdempotent
Inspect

Show a close-up of one numbered area. Use when: an area's label or role is unclear. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "regionId": "reg_4f1c2a9e7b3d5f8e"} Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
regionIdYesFrom get_reference_regions

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive; the description adds genuine operational context by naming the error state reference_analysis_pending and instructing to wait retryAfterSeconds before retrying. It doesn't describe what the 'close-up' actually returns, which an agent would still want to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short front-loaded lines: purpose, when-to-use, and a concrete example plus error handling. Nothing is wasted and the key constraint is not buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should convey what 'close-up' returns (image crop, tile, metadata), and it does not. The pending-error path is covered, but the return-value gap leaves the agent partially guessing about the result of the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents where assetId and regionId come from, so the description only duplicates that with a worked example. Useful for format confirmation but adds little semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Show a close-up of one numbered area'), which distinguishes it from the plural get_reference_regions and the broader get_reference_overview. It doesn't name those siblings explicitly, so routing still relies on the agent inferring from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when: an area's label or role is unclear' gives a clear triggering condition, and the pending-analysis note tells the agent how to proceed on failure. It stops short of saying when to prefer alternatives like get_reference_regions or get_reference_tile.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_regionsGet Deterministic Reference RegionsA
Read-onlyIdempotent
Inspect

Number the coloured areas of a traceable plan and return the marked-up image with region ids. Use when: ready to say what each area is. Next: get_reference_region for unclear areas, then submit_region_semantics. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"} Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is read-only, idempotent, non-destructive, and closed-world. The description adds useful operational behavior, including the marked-up image return and the reference_analysis_pending error with retryAfterSeconds handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then follows a compact workflow structure: use-when, next step, example, and error handling. Every line contributes operational information without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with no output schema, the description covers purpose, workflow position, example invocation, and a key failure mode. It gives enough context for an agent to call it correctly and handle the pending-analysis state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the single assetId parameter with its expected pattern and source from upload_reference_image. The description provides an example value but does not add substantive meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it numbers coloured areas of a traceable plan and returns a marked-up image with region ids. It also differentiates the next tool, get_reference_region, for unclear areas, so the agent can distinguish this tool from its workflow siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use it: 'Use when: ready to say what each area is.' It names the alternative for unclear areas and the subsequent tool, submit_region_semantics, giving a clear workflow positioning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_setGet Reference SetA
Read-onlyIdempotent
Inspect

Show which image the chart is traced from and which extra images add detail. Use when: before configure_reference_set, which needs its revision.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety needs no restatement. The description adds the useful fact that the payload carries a revision value consumed downstream, but it does not describe what the response looks like beyond that, and there is no output schema to fill the gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: what it returns, then when to call it. Every clause carries information and the usage cue is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description is the only place an agent can learn the return shape, and it only sketches it ('which image', 'extra images', 'revision') without naming fields or form. Adequate to decide to call it, thin on what comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing to disambiguate; the baseline applies. The description correctly implies the set is inferred from the current chart rather than identified by an id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete read: it reveals the source/traced image plus the auxiliary detail images for the current reference set. That is distinguishable from list_reference_images and get_reference_overview, though it never names those siblings as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit sequencing rule: call this before configure_reference_set because that tool needs the revision returned here. No when-not-to-use guidance is given, but the primary decision context is covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_source_classificationGet Reference Source ClassificationA
Read-onlyIdempotent
Inspect

Show how an uploaded image is classified and what blocks tracing it. Use when: a reference tool refused, or to get the revision for classify_reference_source. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A3.6/5.0
Behavior3/5

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 that the response explains 'what blocks tracing', which is useful diagnostic context beyond the annotations, but it does not say what the classification fields look like or how blockers are enumerated (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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences plus a compact example, with the purpose front-loaded and the usage trigger immediately after. No filler, though the classification/blocker split could be stated more crisply.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema and full annotation coverage, the description gives the agent enough: what it returns (classification + blockers), when to call it, and a concrete call shape. Only the shape of the returned classification/blocker data is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is fully documented with a regex pattern and the wording 'Id from upload_reference_image'. The description's example repeats the same format rather than adding semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb+resource: 'Show how an uploaded image is classified and what blocks tracing it', which tells an agent exactly what the call yields. It is distinguishable from classify_reference_source, though the phrasing 'get the revision for classify_reference_source' is slightly ambiguous about whether it returns a revision token or classification detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger conditions: 'Use when: a reference tool refused, or to get the revision for classify_reference_source'. This routes the agent from a failure state to the diagnostic tool and names the related sibling. It stops short of stating when-not to use it (e.g. versus get_reference_overview or read_reference_image).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_tileGet Reference TileB
Idempotent
Inspect

Show one zoomed-in tile of an uploaded image, with ids of finer tiles. Use when: reading small labels. A dense seat plan needs every 2x tile opened before tracing. Next: classify_reference_source. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "tileId": "tile_4f1c2a9e7b3d5f8e"}

NameRequiredDescriptionDefault
tileIdYesFrom get_reference_overview or get_reference_tile
assetIdYesId from upload_reference_image

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The verb 'Show' reads as a pure read, yet annotations declare readOnlyHint=false and idempotentHint=true — the description never explains that the tile is materialized/rendered on demand, so an agent cannot reconcile the two. It also says nothing about what a tile actually is (image bytes, URL, dimensions), whether opening a tile is rate-limited or costly, or how deep the tile pyramid goes. With no annotations covering those traits, the description carries the burden and falls short.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then when-to-use, then the next step, then a compact example — no wasted sentences. The 'every 2x tile opened before tracing' sentence is slightly jargon-heavy but earns its place as workflow guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe what comes back; it only says 'with ids of finer tiles' and leaves the tile payload, zoom-level numbering and termination condition (when there are no finer tiles) unexplained. For a tool in a multi-step visual-ingestion pipeline, an agent needs that to know when the descent is finished.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters, their regex patterns and their provenance. The description adds only a concrete example with valid id shapes, plus the implicit hint that tileId values also come from this tool ('ids of finer tiles'). That is marginal added meaning over the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Show one zoomed-in tile of an uploaded image, with ids of finer tiles' — the zoomed-in scope and the finer-tile ids distinguish it from get_reference_overview. It never names the neighbouring tile tools (get_reference_region, get_reference_regions, read_reference_image) so the boundaries must be inferred, which keeps 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: reading small labels' gives an explicit trigger, and 'Next: classify_reference_source' places it in the workflow. 'A dense seat plan needs every 2x tile opened before tracing' implies the exhaustive-open pattern required. What is missing is a when-not clause or an explicit alternative (e.g. use get_reference_overview first / prefer get_reference_region for larger areas).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_row_seatsGet Row SeatsB
Read-onlyIdempotent
Inspect

List a row's seats with ids, labels, category and settings. Use when: before update_seats or reset_seats. Example: {"rowId": "row_a1b2c3"}

NameRequiredDescriptionDefault
rowIdYesRow id from get_chart
floorIdNoFloor id; default: first floor

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile needs no restating. The description adds that the response carries ids, labels, category and settings, but says nothing about ordering, pagination, or volume of seats returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded lines with no filler: purpose first, then timing, then an example. The example is compact and immediately actionable, though the extra example line is a small luxury for a two-parameter read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does name the returned fields, which is the right instinct for a read tool. It still leaves the seat payload shape and the get_seats overlap unexplained, so an agent has enough to call it but not enough to be confident it picked the right tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so rowId and the optional floorId are already fully documented, including the note that rowId comes from get_chart. The example {"rowId": "row_a1b2c3"} illustrates the shape but adds no meaning beyond the schema, and floorId is not referenced in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List a row's seats") plus the returned fields (ids, labels, category, settings), so the operation is unambiguous. However, it never distinguishes itself from the sibling get_seats, which an agent could easily mistake for the same read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "Use when: before update_seats or reset_seats" line gives real workflow context and sequencing. But the obvious alternative for the same reading task, get_seats, is not mentioned at all, so the agent has no rule for choosing between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seatsGet Event SeatsA
Read-onlyIdempotent
Inspect

Show what chosen seats of a live event are now: free, held, booked, blocked, reserved (kept aside under a name) or config-blocked (off sale by the event setup), with section, category and channel. No buyer details. Use when: "which seats in row A are still free?", "is section 101 sold out?", or before plan_inventory_change. Choose seats as plan_inventory_change does. Not for: changing seats (use plan_inventory_change). Example: {"eventKey": "ev_1350a828b5ff", "selector": {"rows": [{"section": "101", "rows": ["A"]}]}, "states": ["free"]}

NameRequiredDescriptionDefault
limitNoSeats per page, 1 to 200 (default 100)
cursorNopage.nextCursor from the previous get_seats call
statesNoOnly seats in these states, e.g. ["free"]
eventKeyYesKey from find_events or list_chart_events
selectorYesOne of: seats (labels), rows ([{section, rows}]), sections (ids or labels), categories (keys)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so credit goes for what they don't cover: the state taxonomy being reported, the explicit privacy note 'No buyer details', and the compatibility guarantee that the selector is chosen the same way plan_inventory_change chooses seats. It stops short of describing result shape/ordering or pagination behavior, which is the only remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then 'Use when', 'Not for', and a compact JSON example. Every sentence contributes a distinct routing or semantic fact; nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, non-destructive query tool with full schema coverage (limit/cursor documented as pagination), the description covers purpose, filtering semantics, privacy, and the follow-up tool. The one omission is that it never signals results are paginated or how many seats a page holds, which an agent doing a 'sold out?' check would want; otherwise it is sufficient to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents eventKey, selector variants, states, limit and cursor; the baseline would be 3. The description adds real value by showing a worked example that demonstrates the selector object shape and the states filter, and by cross-referencing that selection semantics match plan_inventory_change.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (show) and resource (seat states of a live event) and enumerates the exact state vocabulary the tool reports (free, held, booked, blocked, reserved, config-blocked) plus the attributes returned (section, category, channel). This is clearly distinguishable from mutation siblings like plan_inventory_change or update_seats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' block with three concrete phrasings, an explicit 'Not for: changing seats (use plan_inventory_change)', and a pointer that this is a precursor to plan_inventory_change. Nothing is left to inference about when to pick this tool vs the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_section_contextGet Section Review ContextA
Read-onlyIdempotent
Inspect

Read one section (or up to four joined): outline, rows, categories, source plan and neighbours. Use when: checking a section before fixing or recording it. Next: record_section_review. Example: {"floorId": "floor_main", "sectionIds": ["sec_a1b2c3"]}

NameRequiredDescriptionDefault
limitNoPage size
offsetNonextOffset from the last reply
floorIdYesFloor id
sectionIdsYes1-4 section ids

TDQS

A3.8/5.0
Behavior3/5

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 fully covered without the description. What the description adds is the return surface (outline, rows, categories, source plan, neighbours), which is useful given there is no output schema, but it says nothing about paging behavior, error cases, or cost of requesting four joined sections.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three lines with labeled sections (purpose, Use when, Next, Example), zero filler, and the read scope is front-loaded before the workflow hints. Every sentence carries information an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter read-only tool with no output schema, the description compensates by naming the returned components and the downstream step, which is what an agent needs to sequence the review workflow. The remaining gap is pagination guidance, although the offset parameter's schema text ("nextOffset from the last reply") partly covers it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so required floorId/sectionIds, the 1-4 maxItems bound and the offset/limit paging semantics are already documented in the schema. The description reinforces the "up to four joined" cardinality and the example shows a valid floorId+sectionIds payload, but adds no new meaning to limit/offset or id formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Read) plus a bounded resource (one section, or up to four joined) and an enumeration of the payload: outline, rows, categories, source plan and neighbours. That is enough to distinguish it from write-side siblings like update_sections or record_section_review, though it never names the nearest read-side alternatives such as get_event_sections or get_section_work_queue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: checking a section before fixing or recording it" gives an explicit trigger condition, and "Next: record_section_review" states the follow-on step in the workflow. It lacks any "don't use this when" or named alternative, so it is context-rich but not fully exclusionary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_section_work_queueGet Section Work QueueA
Read-onlyIdempotent
Inspect

List sections with your review progress, as a to-do list for checking a chart. Use when: checking a large traced chart. "reviewed" is your note, not publish approval. Next: get_section_context. Example: {"limit": 25}

NameRequiredDescriptionDefault
limitNoPage size
offsetNonextOffset from the last reply
floorIdNoFloor id; default all floors

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real semantic context beyond them: "reviewed" is a personal note, not publish approval, which prevents a costly misinterpretation of the returned state. It does not discuss pagination behavior or what the returned section entries look like, but with annotations in place the bar is low.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then usage, then caveat, then next step — every sentence carries information and nothing is padded. The style is telegraphic and the inline example is marginally useful, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-required-parameter, read-only list tool with a fully documented schema and no output schema, the description covers what it does, when to use it, a caveat about the returned field, and the next call. Only the paging loop (offset/nextOffset) is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, and floorId are already documented in the schema; the description only adds an illustrative call {"limit": 25}. No additional meaning is added for offset paging or floorId scoping, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list sections along with the caller's review progress, framed concretely as a to-do list for chart checking. This is clearly distinguishable from get_section_context (detail for one section) and get_chart_review, though it does not explicitly name a sibling to avoid.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: checking a large traced chart" gives an explicit trigger condition, and "Next: get_section_context" prescribes the follow-up step in the workflow. There is no explicit when-not or named alternative to skip, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_table_chairsGet Table ChairsA
Read-onlyIdempotent
Inspect

List a table's chairs with ids, labels and side (tables sold per chair only). Use when: before update_seats on chairs. Example: {"tableId": "table_d4e5f6"}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
tableIdYesTable id from get_chart

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint, idempotentHint and destructiveHint=false, the description adds useful behavior-specific details: returned fields are ids, labels and side, and the tool is restricted to tables sold per chair only. It does not discuss ordering or pagination, but for a simple read-only list the added context is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded, uses three compact lines, and includes a concrete example without unnecessary prose. Every element contributes to selection or invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only tool with annotations and a fully described schema, the description covers purpose, usage timing, return fields and an invocation example. The main remaining gap is that output structure is not fully described, though no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so tableId and floorId are already documented in the schema. The example reinforces tableId usage but adds no syntax or meaning beyond the structured fields, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: listing a table's chairs with ids, labels and side. This is clearer than a generic list tool and distinguishes the chair-level resource, though it does not explicitly contrast itself with siblings such as get_seats or get_row_seats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool: before update_seats on chairs. That gives a clear workflow context, but it does not state exclusions or name alternative tools for other seat/chair queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venue_3d_structureGet Venue 3D StructureA
Read-onlyIdempotent
Inspect

Describe the chart in 3D without drawing it: floor heights, each section's height, tier and rake, surface type, 3D heights of walls, rails, screens and stages, and which view-from-seat photos cover what. Use when: before and after 3D changes (update_sections height or rake, manage_chart_floors heights, update_shapes heightM, set_view_from_seat_fallback), or when the user asks how the 3D view is set up. Not for: seeing it; render_preview can draw the 3D view.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful behavioral context by clarifying that it does not draw/render anything and instead reports 3D configuration data, though it does not discuss auth or output size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the purpose, organized into Use when and Not for sections, and every sentence carries useful routing or scope information. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description enumerates the meaningful returned information: floor heights, section height/tier/rake, surface type, 3D heights, and photo coverage. Together with the use-case routing, that is sufficient for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there are no parameter semantics to explain. The baseline for zero-parameter tools applies, and the description does not need to compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: describes the venue chart in 3D without drawing it. It enumerates the exact 3D properties returned and explicitly distinguishes itself from render_preview, so an agent can identify it without opening siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use when' triggers tied to concrete sibling operations and a direct 'Not for' exclusion naming render_preview. The routing guidance is complete and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venue_spec_formatGet Venue Spec FormatA
Read-onlyIdempotent
Inspect

Return the Venue Spec format (a JSON Schema) and worked examples for a theatre, wedding, club, arena, expo and comedy club. Use when: before your first build_from_venue_spec, or when the user wants a file to import into the Designer themselves. Not for: reading the current chart (use get_chart).

NameRequiredDescriptionDefault
examplesNoHow many worked examples to include; default all

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds useful content context—that the output is a JSON Schema plus worked examples across venue types—going beyond the structured fields, though it doesn't detail response size or format nuances.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the return value, followed by crisp use and not-for clauses. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Read-only, single-optional-param tool with full annotation coverage and documented param; description conveys what is returned and when to call it. Only minor gap is not describing the shape/size of the returned schema and examples.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single enum param is fully documented in the schema, so baseline 3 applies. The description implies the existence of worked examples that the param controls, adding marginal context, but does not explain how none/one/all differ.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource: 'Return the Venue Spec format (a JSON Schema) and worked examples,' and enumerates the venue categories covered. This clearly distinguishes it from build_from_venue_spec and the get_chart sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' clause names two triggering conditions (before first build_from_venue_spec, or user wants a file to import into Designer), and a 'Not for' clause routes to get_chart. This is textbook when/when-not/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

group_segmented_rowsGroup Segmented RowsA
Destructive
Inspect

Join rows split by aisles into one row for buyers; no seat moves. Use when: e.g. "K-left, K-centre and K-right are all row K". Example: {"rowIds": ["row_a1b2c3", "row_d4e5f6"], "boundaries": ["break"], "displayLabel": "K", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
rowIdsYesRow ids in reading order
floorIdNoFloor id; default: first floor
boundariesYesOne per join; break = aisle
displayLabelNoRow name buyers see
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.7/5.0
Behavior3/5

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 the useful behavioral detail "no seat moves," but it does not explain what row segment records are destroyed or merged, whether the operation is reversible, or what authorization is required. With annotations doing the heavy lifting, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly compact: it front-loads the action, adds a use-when example, and provides a concrete invocation example with no filler. Every sentence contributes to selecting or invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers purpose and one example but omits what the result looks like and what exactly is changed or removed. Given the annotations and the 100% schema coverage, the remaining gaps are moderate rather than severe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters, including rowIds, boundaries, displayLabel, and expectedUpdatedAt, are already documented in the schema. The example illustrates a realistic call shape but does not add significant meaning beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: joining aisle-split rows into one buyer-facing row, with the important qualifier "no seat moves." It does not explicitly name alternatives such as ungroup_segmented_row, merge_rows, or split_row, so sibling differentiation depends on the reader inferring the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "Use when" line gives a concrete trigger example, such as "K-left, K-centre and K-right are all row K." It does not state when not to use this tool or name the alternative for undoing or merging in a different scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

insert_seating_blockInsert Seating BlockAInspect

Add a ready-made block: balcony, rows, ga-pen, tables, boxes or terrace. Use when: e.g. "add a couple of private boxes". Not for: exact counts (use add_row_block, add_table_array, add_ga_area). Example: {"blockKey": "boxes", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
blockKeyYesWhich ready-made block
placementNoSide of the layout; auto = rearauto
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=false), so the description's burden is lighter. It adds nothing about the mutation itself: no statement that expectedUpdatedAt guards against stale writes, that a stale value aborts the insert, or how many objects get created, which is exactly the behavior context an agent needs before mutating a chart.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact lines with purpose first, then routing guidance, then a concrete example, and no filler. The 'Use when'/'Not for' labels make it scannable, though the example is arguably redundant with a fully documented schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers intent, alternatives, and a sample call adequately for a 4-parameter mutation. With no output schema, however, the agent still doesn't know what an insert returns (created object ids, counts, or just an updated chart timestamp), and no conflict/failure behavior is described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so floorId defaults, the blockKey enum, and placement semantics ('auto = rear') are already documented. The example payload reinforces that blockKey and expectedUpdatedAt are the pair passed together, but adds no new meaning about the parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Add a ready-made block') and enumerates the block kinds, which lets an agent distinguish it from the row/table/GA builders. One gap: the enumeration omits 'wheelchair-platform', which is present in the blockKey enum, so the stated list is slightly narrower than the tool actually supports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit 'Use when' with a natural-language example ('add a couple of private boxes') and an explicit 'Not for: exact counts' exclusion that names three concrete alternatives (add_row_block, add_table_array, add_ga_area). Both the selection condition and the routing destination are stated, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

join_ga_areasJoin GA AreasA
Destructive
Inspect

Merge touching standing areas into one; capacities add up and the others are removed. Use when: e.g. "join the two pits". Not in safe mode. Example: {"gaAreaIds": ["ga_s7t8u9", "ga_v1w2x3"], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
gaAreaIdsYesStanding-area ids to merge
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the destructiveHint=true annotation by explaining exactly what is destroyed: the non-surviving areas are removed and their capacities accumulate into the result. The safe-mode restriction is also behavioral context not present in the annotations. Missing only details like irreversibility or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines: purpose first, then when-to-use with its caveat, then a compact example. Zero filler and the most important constraint is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It surfaces the destructive merge behavior, the safe-mode restriction, and the concurrency token's source (via schema), which is sufficient for an agent to call it correctly. It could additionally say what the tool returns or how to recover a merged area, but those are minor for this scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so gaAreaIds and expectedUpdatedAt are already documented in the schema itself. The inline example shows both in use together but adds no semantics beyond what the schema states (e.g., what happens if expectedUpdatedAt is stale), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource: 'Merge touching standing areas into one', and states the outcome (capacities add up, others removed). This distinguishes it from add_ga_area and update_ga_areas by making clear it is a combining operation on existing standing areas rather than creation or field edits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete trigger ('join the two pits') and an explicit exclusion ('Not in safe mode'), which is actionable context. It does not name a sibling alternative for the case where areas merely need editing, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_channelsList Sales ChannelsA
Read-onlyIdempotent
Inspect

List an event's sales channels (partners, agencies, box office, sponsors) with their seats free, held, booked and blocked, state, sale route and own prices. Use when: e.g. "how many seats does the travel agent have?", or before a channel plan. Next: get_channel, or plan_inventory_change to change a channel or move seats. Example: {"eventKey": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
eventKeyYesKey from list_chart_events
includeArchivedNoAlso list archived channels; default false

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds real value by naming the data returned per channel and routing to mutating alternatives, though it doesn't discuss ordering, pagination, or volume of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then compact labeled sections (Use when / Next / Example). Every line carries actionable information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must convey return content — which it does by enumerating channel types and per-channel seat counts, state, sale route and prices. Combined with the routing hint and example payload, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with eventKey documented as coming from list_chart_events and includeArchived defaulting to false. The description only reiterates the eventKey via an example and adds no semantics beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (an event's sales channels), enumerates the channel types, and lists the exact fields returned (seats free/held/booked/blocked, state, sale route, own prices). This clearly distinguishes it from the singular sibling get_channel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' clause with a concrete natural-language query example and a 'Next:' routing hint naming get_channel for single-channel detail and plan_inventory_change for mutations. When/when-not and alternatives are both present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_chart_eventsList Scoped Chart EventsA
Read-onlyIdempotent
Inspect

List events using this chart with free, held, booked and blocked counts, section states and inventoryVersion. Use when: the user asks about events, or you need an eventKey. Next: get_event_sections.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the read-only, non-destructive, idempotent, closed-world safety profile. The description adds useful behavioral context beyond annotations by disclosing the returned fields (counts, section states, inventoryVersion), which matters because 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tightly packed sentences with no waste: it front-loads the resource scope and return data, then gives usage and next-step guidance. Every phrase contributes to selection or invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only listing tool with annotations covering safety, the description is nearly complete: it explains what is returned and what to call next. It could be slightly stronger by clarifying how this differs from find_events, but no critical invocation detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline for parameter semantics is 4. The description does not need to explain parameter meaning, and the empty input schema confirms no additional parameter guidance is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('List events') and scopes it to 'using this chart,' while also naming the returned data (free/held/booked/blocked counts, section states, inventoryVersion). It does not explicitly differentiate from the sibling find_events tool, so it is clear but not fully sibling-discriminating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage context ('Use when: the user asks about events, or you need an eventKey') and a recommended next step ('Next: get_event_sections'). However, it does not state when not to use this tool or name an alternative such as find_events, leaving some ambiguity for broad event queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_chartsList ChartsA
Read-onlyIdempotent
Inspect

List the charts you can work on, newest first, with their ids and names. A workspace connection sees every chart in the workspace; a one-chart connection sees only its chart. Use when: the user names a chart ("the Riverside one") and you need its id, or before creating a new one. Not for: reading a chart's contents (use get_chart). Next: select_chart with the id, or create_chart.

NameRequiredDescriptionDefault
limitNoMaximum charts to return (default 50).
cursorNonextCursor from the previous page, to read the next one.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context: result ordering (newest first), return fields (ids/names), and the connection-dependent visibility scope. It doesn't mention pagination behavior despite cursor support, which keeps it shy of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very tight: a scoping sentence followed by labeled Use when / Not for / Next lines. Front-loaded with the core action and zero redundant phrasing; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-param read tool with full schema coverage and annotations carrying safety, the description is complete: it covers action, ordering, returned fields, scope behavior, and routing to the next tool. No output schema exists, yet the return content (ids and names) is already conveyed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit and cursor are already documented, and the description adds nothing parameter-specific. Baseline 3 applies since the schema carries parameter semantics entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list the charts), plus the ordering (newest first) and the returned fields (ids and names). It also clarifies the scoping rule distinguishing a workspace connection from a one-chart connection, and explicitly separates itself from get_chart, so an agent can pick it without opening sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use when' triggers (user names a chart and you need its id, or before creating one), an explicit 'Not for' exclusion routing to get_chart, and a 'Next' pointer to select_chart/create_chart. This is the full when/when-not/alternative triple.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_event_configurationsList Event ConfigurationsA
Read-onlyIdempotent
Inspect

List this chart's event configurations: saved per-event setups of the venue (e.g. "concert with thrust") and their versions. Use when: you need a configuration id. Next: get_event_configuration. Example: {}

NameRequiredDescriptionDefault
includeArchivedNoInclude archived

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile needs no restating. The description adds that results are chart-scoped and include versions, but says nothing about how archived configurations are treated (the one meaningful behavioral lever here) or pagination/result size, and there is no output schema to fill that gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short structured lines — purpose, when-to-use, next step, example — with zero filler and the purpose front-loaded. Nothing could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter list tool with rich annotations and full schema coverage, the description gives purpose, routing, and a call example, which is nearly everything needed. The only real omission is whether archived configurations are excluded by default.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% on the single parameter (includeArchived), so the schema already carries the semantics. The description adds no guidance on when archived entries matter, leaving it at the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (List) plus resource scoped to a chart, with a domain gloss explaining what an event configuration actually is ("saved per-event setups of the venue") and an illustrative example ("concert with thrust"). It also distinguishes itself from the retrieval sibling by ending with "Next: get_event_configuration."

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: you need a configuration id" gives an explicit triggering condition, and "Next: get_event_configuration" names the natural follow-up tool. There is no statement of when-not to use it, but with a single closely related retrieval sibling the routing is largely unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_event_reservationsList Event ReservationsA
Read-onlyIdempotent
Inspect

List what a live event keeps off sale by hand: named reservations (id, name, seats, end time, who made them) and other blocked seats grouped by reason. Use when: before release_reservation or unblock_all, or e.g. "what is held back for the sponsor?". Next: plan_inventory_change. Example: {"eventKey": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
eventKeyYesKey from list_chart_events

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description adds real value by describing the shape of the result (reservation fields, blocked seats grouped by reason), which matters since no output schema exists. It stops short of noting permissions or whether released holds are visible here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight lines: what it returns, when to use it, what comes next, plus one example. No filler, and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A read-only, single-parameter tool with no output schema: the description covers purpose, return contents, usage timing, and the follow-up step. Nothing an agent needs to select or invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, with the schema itself explaining eventKey as a key from list_chart_events. The description supplies a concrete example payload, which is mildly helpful but adds little beyond the schema — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — listing what an event holds off sale by hand — and enumerates the two outputs (named reservations with id/name/seats/end time/owner, and blocked seats grouped by reason). This is clearly distinguishable from generic reads like get_event or list_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('before release_reservation or unblock_all') and gives a natural-language trigger example ('what is held back for the sponsor?'). It also names the follow-up tool ('Next: plan_inventory_change'), so the agent knows both entry and exit points.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_gatesList GatesA
Read-onlyIdempotent
Inspect

List the venue's gates, the areas each one serves, its step-free routes, and the "Every seat has an entrance" check with the areas that still have no gate. Use when: before adding or changing gates or entrances, or to find which sections are not yet told which gate to use. Not for: the whole chart (use get_chart). Next: place_gate for a new gate, or set_object_entrance for the areas the check lists.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered; the description adds real value by spelling out the returned content, including a compliance-style coverage check that an agent could not infer from the name. It does not mention result size, ordering, or pagination, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the payload definition, then clearly labeled 'Use when', 'Not for', and 'Next' blocks. No redundant restatement of the title and every clause carries routing or content information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and annotations covering safety, the description supplies nearly everything: what is returned, when to call it, what to call instead, and what to call next. Only the shape of the returned coverage check (boolean vs. list of areas) is left slightly implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a venue-scoped, argument-free call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (the venue's gates) and enumerates the payload: areas each gate serves, step-free routes, and the 'Every seat has an entrance' coverage check with ungated areas. It also distinguishes itself from the chart-wide read by naming get_chart as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' (before adding or changing gates/entrances, or finding sections not yet assigned a gate) and explicit 'Not for' with a named alternative (get_chart). It even routes forward to the follow-up tools (place_gate, set_object_entrance).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ordersList OrdersA
Read-onlyIdempotent
Inspect

List one event's orders, newest first, with buyer name and email, status, money, seats and the event's order totals. Use when: "show me today's orders", "which orders need attention?", "all refunded orders for Friday". Needs the Orders permission. Not for: one buyer or order (use find_order). Example: {"eventKey": "ev_1350a828b5ff", "status": "confirmed", "from": "2026-11-01"}

NameRequiredDescriptionDefault
toNoPlaced on or before: a date covers that whole day (UTC)
fromNoPlaced on or after: a date (2026-11-07) or an ISO time, in UTC
limitNoOrders per page, 1 to 100 (default 25)
queryNoWords from a buyer name, email, order reference or seat
cursorNopage.nextCursor from the previous list_orders call
paidByNoonline, box_office, cash, card_external, complimentary or free
statusNoOnly orders in this status, e.g. confirmed or refunded
eventKeyYesKey from find_events

TDQS

A4.2/5.0
Behavior3/5

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 needs no restating. The description adds genuinely useful context beyond them: the 'Needs the Orders permission' authorization requirement and the default newest-first ordering. It does not mention result-volume or rate-limit behavior, so it adds value but not richly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then usage cues, exclusions, and a concrete example — each line carries distinct information. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating the returned fields including the event order totals. With 8 fully described params and permissions noted, an agent has what it needs; only pagination/total-count expectations are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema, establishing a baseline of 3. The description's example object shows a realistic combination (eventKey + status + from) but introduces no semantics beyond what the schema states, such as UTC day-boundary intent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List one event's orders') plus the ordering ('newest first') and the fields returned (buyer name/email, status, money, seats, totals). An agent can immediately distinguish this bulk listing from find_order/get_order siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use cues with quoted example intents ('show me today's orders', 'all refunded orders for Friday') and an explicit 'Not for' exclusion pointing to find_order for a single buyer/order. It also names the required permission, which is a real gating condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_reference_capacity_questionsList Reference Capacity QuestionsA
Read-onlyIdempotent
Inspect

List the open questions in the saved seat-count plan (category names, prices, colours, whether SeatLayer may work out rows). Use when: resuming, or deciding what to ask the user. Next: answer_reference_capacity_questions. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is covered. The description usefully clarifies that the questions belong to the *saved* seat-count plan, implying a prior save step, but does not say what happens when no saved draft exists (error vs. empty list) or what the returned questions look like structurally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded lines with clear labels (statement, Use when/Next, Example) and zero filler. Purpose is stated before usage guidance and the follow-up tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description partially compensates by naming the kinds of questions returned. For a single-parameter read-only listing tool this is nearly sufficient, though the absence of any note on failure/empty-state behavior leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage and a single required parameter whose description already points to upload_reference_image, the schema carries the load. The description's embedded example restates the parameter name and the ref_ prefix format already implied by the schema pattern, adding little new semantic information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the open questions in the saved seat-count plan') and clarifies the domain with concrete examples (category names, prices, colours, row inference). It does not differentiate itself from the nearby sibling 'list_unresolved_reference_questions', which an agent could easily confuse it with, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: resuming, or deciding what to ask the user' gives explicit triggering situations, and 'Next: answer_reference_capacity_questions' routes the agent forward. There is no exclusion guidance (e.g. when to use list_unresolved_reference_questions or get_reference_capacity_draft instead), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_reference_imagesList Reference ImagesA
Read-onlyIdempotent
Inspect

List the plan images uploaded to this chart, with their ids, sizes and file names. Use when: you need a reference id again.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds real value beyond that by scoping the listing to images on this chart and naming the returned fields, which the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the resource scope front-loaded and the usage cue second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers the essentials by naming the returned fields. It does not mention ordering, whether results can be empty, or whether all uploads or only a subset are returned, which is a minor remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 per the rubric and there is no parameter semantics to compensate for. Nothing in the schema is left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (plan images uploaded to this chart), and enumerates what comes back (ids, sizes, file names). That is enough to distinguish it from read_reference_image and upload_reference_image without opening either schema, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: you need a reference id again" gives an explicit triggering condition rather than leaving usage implied. It stops short of naming alternatives (read_reference_image, get_reference_overview) or stating when not to use it, so it sits below the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_unresolved_reference_questionsList Unresolved Reference QuestionsA
Read-onlyIdempotent
Inspect

List plan areas still needing an answer: undescribed, unsure, guessed or unnamed. Use when: before propose_reference_blueprint. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"} Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds useful behavioral context by identifying the pending-analysis error and instructing the agent to wait retryAfterSeconds before calling again.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then provides usage timing, an example, and an error-handling note. Every line is short and operationally useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete enough for a one-parameter, read-only list tool: it describes what will be listed, when to call it, and the transient pending-analysis case. It does not describe the return shape, but no output schema exists and the tool is simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the assetId parameter is already documented as coming from upload_reference_image. The example adds invocation guidance, but it does not add semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list plan areas still needing an answer, with concrete categories (undescribed, unsure, guessed, unnamed). The purpose is clear, but it does not explicitly distinguish this from the similar sibling list_reference_capacity_questions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear workflow trigger: use before propose_reference_blueprint. It also explains the reference_analysis_pending retry behavior, but it does not state when not to use it or name an alternative sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_view_evidence_reportsList View Evidence ReportsA
Read-onlyIdempotent
Inspect

List buyer "Report this view" reports for this chart: seat, message and status. Use when: asked about view complaints, or before retract_confidence_evidence.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds the returned fields and a workflow precondition, plus the implicit fact that it is scoped to "this chart" despite having no chart parameter. It says nothing about volume, pagination, or behavior on an empty report list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler: what it lists and what it returns come first, followed by the trigger and workflow note. Nothing is redundant with the annotations or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the necessary work by naming the returned fields. For a zero-parameter read tool it is largely sufficient; only the absence of any pagination or result-size indication keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description's mention of "this chart" helpfully clarifies that scope comes from ambient context rather than an argument, which is the only parameter-like ambiguity present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List buyer 'Report this view' reports") and enumerates the fields returned (seat, message, status), which distinguishes it from adjacent report tools like get_chart_review or get_event_report. It does not explicitly name a contrasting sibling, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit trigger ("asked about view complaints") and a workflow relationship ("before retract_confidence_evidence"). There are no stated exclusions or negative conditions, so a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_chart_floorsManage Chart FloorsA
Destructive
Inspect

Add, rename, set the height of, or remove a floor (level). Use when: e.g. "add a balcony level". remove deletes everything on it and needs confirmRemove: true. Next: add seats to the new floor with add_row_block and its floorId. Example: {"action": "add", "name": "Balcony", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
nameNoFloor name; for add and rename
actionYesWhat to do
floorIdNoFloor id; not for add
baseHeightMNoMetres above the ground floor
confirmRemoveNoRequired for remove
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, but the description adds the crucial detail that remove deletes everything on the floor and requires confirmRemove: true, plus the optimistic-concurrency expectation via expectedUpdatedAt. It stops short of explaining consequences such as what happens to seats if a floor is later renamed or shrunk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the operation set, then usage, then the destructive caveat, then the follow-up and an example. Nothing is redundant and the most dangerous fact (remove wipes contents) is prominent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no output schema, the description covers destructive consequences, the confirmation gate, the concurrency token, and the natural next step. A brief note on the return value (e.g. the new floorId) would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the worked example shows how action, name and the opaque expectedUpdatedAt token combine in practice, which is more than the schema conveys. The floorId/height linkage to update-height is only implied rather than spelled out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names four specific operations on a specific resource (floor/level), so the scope is unambiguous. It is clearly distinguishable from seat/row siblings such as add_row_block, which the description explicitly defers to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: e.g. 'add a balcony level'" gives a concrete trigger, and the Next line routes the agent to add_row_block with the returned floorId for seating work. There is no explicit when-not, and it doesn't say whether an existing floor must exist before update-height/rename.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

merge_rowsMerge RowsA
Destructive
Inspect

Join straight rows on one line into one row; the first keeps its name and the rest are removed. Use when: a row was built in pieces. Not for: rows across an aisle (use group_segmented_rows). Example: {"rowIds": ["row_a1b2c3", "row_d4e5f6"], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
rowIdsYesRow ids on one straight line
floorIdNoFloor id; default: first floor
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

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 still adds real value by saying the first row keeps its name and the others are removed. It does not address what happens to seats on the removed rows or whether the merge can be undone, which is the one meaningful gap for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines: definition, usage/exclusion, then a concrete example. The distinguishing behavior is front-loaded and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the definition covers purpose, trigger, exclusion and a call example. The remaining gap is the post-merge effect on seats and irreversibility, which the agent must currently infer from destructiveHint alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the 'row ids on one straight line' constraint and the expectedUpdatedAt provenance from get_chart, so the schema does the heavy lifting. The description's example only illustrates the required pair already documented in the schema, adding little beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Join straight rows on one line into one row', and adds the key outcome that the first row keeps its name while the rest are removed. This is enough to distinguish it from group_segmented_rows, which operates on a different kind of row.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit positive trigger ('Use when: a row was built in pieces') and an explicit exclusion with the alternative named ('Not for: rows across an aisle (use group_segmented_rows)'). The routing decision is fully pre-solved for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mirror_section_assemblyMirror Section AssemblyAInspect

Make a mirror copy of a section and its contents on the other side of the stage. Use when: e.g. "copy the left balcony to the right". Example: {"sourceSectionId": "sec_a1b2c3", "axis": "vertical", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
axisYesvertical flips left to right
floorIdNoFloor id; default: first floor
focalScopeNoWhose stage to mirror aroundauto
sourceSectionIdYesSection id
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state this is a non-read-only, non-idempotent, non-destructive mutation, so the description does not need to restate the safety profile. It adds that the copy includes the section's contents and appears on the other side of the stage, but it does not explain the expectedUpdatedAt concurrency behavior or what exactly happens to newly created objects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus an example, with the core action and usage condition front-loaded. Every element supports selecting or invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with complete schema descriptions and coverage by annotations, the description gives enough context to identify and invoke it. It is slightly incomplete on concurrency and return behavior, but no output schema exists and expectedUpdatedAt is documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is already well documented. The description includes an example payload showing sourceSectionId, axis, and expectedUpdatedAt, but it does not add semantic detail beyond the schema for floorId or focalScope.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Make a mirror copy of a section and its contents' and scopes it to 'the other side of the stage.' It is clear what the tool does, though it does not explicitly contrast itself with the related sibling repeat_section_radially.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a concrete 'Use when' example: copying the left balcony to the right. It gives clear context for invoking the tool, but it does not name when-not to use it or point to alternative mirroring/duplication tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_gatePlace GateAInspect

Add a named gate (a way in or out) on the edge of the venue. Say which section it serves, or which side of the venue it is on; SeatLayer puts it on the outside of that edge, clear of other gates and labels. Use when: e.g. "Gate C by section 104", "an exit on the east side", "a step-free entrance at the back". Not for: telling areas which gate to use (use set_object_entrance after) or changing a gate (use update_gate). Next: set_object_entrance, then list_gates. Example: {"name": "Gate C", "use": "in", "stepFree": true, "near": {"sectionId": "sec_a1b2c3"}, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
useNoWhat people use it for: in, out or both; default in
nameNoName on the gate, e.g. "Gate C"; default the next free letter
nearYesWhere it goes: beside a section, or in the middle of one side of the venue
opensNoWhen it opens, in words, e.g. "90 min before"
floorIdNoFloor id; default the section's floor, else the first floor
stepFreeNoLevel or ramped, no stairs
hideFromBuyersNoOrganizer-only gate: buyers see no sign and no "Enter by" line
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the safety story is covered. The description adds genuinely useful behavior beyond that: automatic outside-edge placement, clearance from other gates/labels, and optimistic-concurrency via expectedUpdatedAt. It does not address whether repeated calls create duplicate gates despite idempotentHint=false, which matters for an add tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then the auto-placement rule, then Use/Not-for/Next lines and a compact example. Every sentence carries actionable information; nothing is redundant with the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 8 parameters including a nested anyOf, the description does well by giving an example and a follow-up chain. The remaining gap is that it never says what the call returns (presumably a gate id needed by set_object_entrance), leaving the agent to infer the handle for the next step.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the prose adds meaning the schema does not: the mutual intent of the `near` union ("beside a section, or in the middle of one side of the venue") and the fact that it is a placement anchor rather than a filter. The inline example further clarifies how `near`, `use`, and `stepFree` combine.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Add a named gate") plus the placement semantics: it goes on the outside of the edge it is anchored to, clear of other gates and labels. It also names the two sibling tools doing related-but-different work (set_object_entrance, update_gate), so an agent can distinguish it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit "Use when" examples map real utterances to this tool, a "Not for" clause redirects to set_object_entrance and update_gate, and a "Next" line describes the follow-up sequence. This is a full when/when-not/alternatives treatment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_inventory_changePlan a Live Inventory ChangeA
Read-onlyIdempotent
Inspect

Preview a change to an event on sale; get a plan id, write nothing. Seats: block, unblock, reserve, reassign_category, move_to_channel. Also sections, channels and links, prices and settings, the map (move_event_to_chart, set_configuration_binding), the event (open_sales, close_sales, edit_live_event_date, set_event_mode, archive_event, delete_event). Use when: any change to an event on sale, e.g. "block section 101", "put Friday on sale" (open_sales). Held and booked seats never change. Next: show the summary; after the person says yes in chat, apply_inventory_change. Example: {"eventKey": "ev_1350a828b5ff", "action": "block", "selector": {"sections": ["101"]}, "reason": "Sponsor"}

NameRequiredDescriptionDefault
linkNoNew buyer link or report link options (expiresAt epoch ms); defaults apply
modeNoset_event_mode: test (no real money) or live
nameNoreserve only: the reservation's name, e.g. "Sponsor"
actionYesWhat to do; seat actions take a selector; unblock_all, release_reservation, channel and event actions do not
linkIdNoA link id from list_access_links or list_report_links
pricesNoset_event_prices: the rows to change; tier (id or name) for a category priced by ticket type
reasonNoWhy, kept in the event history, e.g. "Sponsor"
tablesNoset_table_booking_mode: table ids or labels and mode; chart = back to the chart
channelNoChannel: name, accessIntent (sale route), priceOverrides (full list), salesEndAt (close time; null removes)
windowsNoset_sales_window: per section, open (on sale now), timed (at a time) or threshold (once percent sold)
eventKeyYesKey from list_chart_events
releasesNoset_ticket_releases: the whole list in order, kept ones by id; times ISO with offset; rows: price per ticket type
selectorNoOne of: seats (labels), rows ([{section, rows}]), sections (ids or labels), categories (keys)
startsAtNoedit_live_event_date only: the new start with its UTC offset, e.g. 2026-11-21T20:00:00+05:30
timezoneNoedit_live_event_date only: a new IANA time zone, if it changes
autoEndAtNoset_sales_times: the event ends itself then
channelIdNoChannel actions: a channel id or name from list_channels; move_to_channel also takes "public"
releaseAtNoblock only: when the seats go back on sale by themselves, epoch ms
releaseIdNoclose_ticket_release: a release id or name from get_event_pricing
seatPriceNoset_seat_prices: {"price": 90}, or tiers [{tier, price}] for seats sold by ticket type
categoryKeyNoreassign_category only: the category to move to, a key from get_chart categories[].key
destinationNoArchiving a channel: "public" or another channel, where its seats go
holdMinutesNoset_hold_ttl: minutes seats stay held at checkout; null = default
salesCloseAtNoset_sales_times: online close time, with offset; null removes
configurationNoset_configuration_binding: a published version {id, version}, or null to remove it
reservationIdNorelease_reservation only: an id from list_event_reservations, or "all"
endActiveSessionsNoReplacing or revoking a buyer link: also end sessions opened through it now

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The 'write nothing'/'get a plan id' framing consistently reinforces the readOnlyHint and idempotentHint annotations. It adds real behavioral context beyond annotations: held and booked seats are never affected by the planned change. Missing are caveats about plan expiry or whether plans must be applied before recomputing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core behavior and outcome, followed by action enumeration, usage, next-step, and an example. The action listing is dense and reads as a wall of names, but every clause carries information an agent needs to route correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 27-parameter, enum-heavy mutation-preview tool with no output schema, the description covers purpose, workflow, sibling hand-off, and return intent (plan id + summary). Some per-action parameter guidance remains implicit, but the schema at 100% coverage fills most of that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description goes further by mapping action names to their selector/payload families (seats: block/unblock/reserve/reassign_category/move_to_channel, plus section, channel, price, map and event actions) and includes a concrete example payload. It still doesn't explain which params are valid per action exhaustively, but the action-to-parameter mapping is genuinely additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (preview a change), the resource (an event on sale), and the key outcome (get a plan id, write nothing). It also names the sibling apply_inventory_change, so an agent can immediately distinguish planning from applying.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the when: any change to an event on sale, with concrete examples ('block section 101', 'put Friday on sale'). It also describes the follow-up workflow — show the summary, get user confirmation, then call apply_inventory_change — leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_reference_capacityPlan Reference CapacityA
Read-onlyIdempotent
Inspect

Work out how a total seat and standing count spreads over the traced sections. Changes nothing. Use when: the outline is built and only totals are known, e.g. "1,200 seats". Not for: known rows or tables per section (use apply_reference_inventory). Every added fact needs evidence. Next: save_reference_capacity_draft if questions remain, else render_reference_capacity_preview. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "targetCapacity": 1200, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
targetCapacityYesSeats plus standing
numberingPolicyNoSeat numbering in each row
standingCapacityNoStanding part of targetCapacity
standingSectionsNoStanding sections (logicalSectionId) with evidence
categoryOverridesNoName and price categories by their plan colour
expectedUpdatedAtYesmeta.updatedAt from get_chart
accessibilityGroupsNoAccessible seat counts by type per section group
nonSellableSectionsNoSections that sell nothing, with reason
sectionCategoryGroupsNoGroup sections into categories when plan colours are not prices
standingSectionEvidenceNoOld form
standingLogicalSectionIdNoOld form; use standingSections
standingSectionSourceDescriptionNoOld form

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

'Changes nothing' is consistent with readOnlyHint=true and idempotentHint=true rather than contradicting them, and 'Every added fact needs evidence' is a genuine behavioral constraint not expressed in the annotations. It stops short of describing what the computed distribution/plan looks like or how ambiguity is surfaced, but with annotations covering the safety profile that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-sentence purpose, then labeled Use when / Not for / Next / Example blocks. No filler; the example is the only verbosity and it is load-bearing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, nested-object tool this covers entry condition, exclusions, workflow position, and evidence discipline well, and an output schema is absent so return values need not be explained. It leaves implicit what 'traced sections' are and how unresolved allocations get flagged, which is why it is not a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description earns a notch above by clarifying that the input is 'a total seat and standing count' and by giving a concrete minimal-required-parameter example, which disambiguates the three required fields in practice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — spreading a total seat/standing count over traced sections — and immediately distinguishes itself from apply_reference_inventory, which handles known per-section rows. An agent can pick between the two without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' (outline built, only totals known, e.g. "1,200 seats") and 'Not for' with a named alternative. It also routes forward: save_reference_capacity_draft if questions remain, otherwise render_reference_capacity_preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_chart_reviewPrepare Revision-Bound Chart ReviewA
Idempotent
Inspect

Run the final checks and return pictures of every floor to look over before publishing. Use when: the chart is finished. Pictures need the probe. Passing is not approval. Not for: quick looks (use render_preview). Next: record_chart_review_decision. Example: {"expectedUpdatedAt": 1790000000000} Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (idempotent, non-destructive, closed-world), and the description adds real value on top: a prerequisite ('Pictures need the probe'), a semantic caveat ('Passing is not approval'), and a specific recoverable error path ('error reference_analysis_pending; wait retryAfterSeconds, then call again'). It stops short of saying what state, if any, the call persists, which matters given readOnlyHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded imperative sentence, then labeled short clauses for usage, exclusion, next step, example, and error handling — no filler. A few phrases are so terse ('Passing is not approval', 'need the probe') that brevity shades into ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema, the description covers the return (images of every floor), the prerequisite, and one failure mode. It leaves unstated whether the call records a review pass (consistent with readOnlyHint=false) and which tool actually supplies 'the probe'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented as 'meta.updatedAt from get_chart'. The description's example value conveys the epoch-millisecond format, but it does not explain the optimistic-concurrency behavior if the value is stale, so it stays at the schema-does-the-work baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete composite action: run final checks and return rendered images of every floor prior to publishing. It names the sibling it is not (render_preview), so the agent can separate it from a lightweight render. The only weakness is the vague 'Pictures need the probe', which leaves the exact output/precondition slightly fuzzy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit gating conditions are given: 'Use when: the chart is finished', 'Not for: quick looks (use render_preview)', and 'Next: record_chart_review_decision'. This is a complete when/when-not/alternative/next-step map, better than most definitions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_reference_blueprintPropose Reference BlueprintAInspect

Propose the chart outline from the traced plan: region ids per section, outline style, and the stage. Use when: the areas are described. Put all parts of one printed section in one entry. Nothing is for sale yet. Next: get_reference_blueprint, then approve_reference_blueprint. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "name": "Grand Theatre", "sections": [{"regionIds": ["reg_4f1c2a9e7b3d5f8e"], "geometryMode": "auto"}], "focal": {"strategy": "region", "regionId": "reg_0a1b2c3d4e5f6a7b"}, "expectedBlueprintRevision": null} Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
nameYesVenue name
focalYesStage region, or interior-envelope for an arena with an open middle
assetIdYesId from upload_reference_image
sectionsYesOne per printed section: regionIds, geometryMode, aisleCount (0 for contour)
physicalScaleNoKnown real length of the stage, to set the scale
expectedBlueprintRevisionYesnull first; then revision from get_reference_blueprint

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the non-read-only, non-idempotent profile, and the description adds genuinely non-derivable behavior: this is a draft proposal ('Nothing is for sale yet') and analysis may still be in flight, returning reference_analysis_pending with a retry hint. It stops short of saying what happens if a blueprint already exists or whether a second call overwrites the first.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose, then use-when, next-step, example, and error path — each line earns its place. Some phrasing is terse to the point of ambiguity ('the areas are described', 'Nothing is for sale yet') and the rationale is compressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter nested mutation with no output schema, it covers the entry condition, payload shape via example, sequencing, and the pending error case. It does not describe what is returned or how the proposed blueprint relates to any existing one, which leaves a small gap for a write tool without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: the worked example shows a valid focal/sections payload, and 'Put all parts of one printed section in one entry' clarifies the grouping semantics of the sections array. The revision-null-first handshake is restated from the schema rather than added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Propose the chart outline from the traced plan') and enumerates the payload contents (region ids per section, outline style, the stage). 'Next: get_reference_blueprint, then approve_reference_blueprint' positions it precisely relative to siblings, so an agent can tell it apart without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit precondition ('Use when: the areas are described'), explicit downstream sequence, and an explicit failure/retry path ('error reference_analysis_pending; wait retryAfterSeconds, then call again'). It also states the entry-granularity rule ('Put all parts of one printed section in one entry').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_event_configurationPublish Event ConfigurationA
Idempotent
Inspect

Publish an approved configuration version so events can use it. Needs a connection allowed to publish. Use when: the version is approved. Next: activate_event_configuration, or bind it: plan_inventory_change set_configuration_binding. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "version": 1, "expectedRevision": 3}

NameRequiredDescriptionDefault
versionYesVersion number
configurationIdYesId from list_event_configurations
expectedRevisionYesVersion revision from get_event_configuration

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly=false, idempotent=true, destructive=false), but the description adds non-annotation context: an authorization prerequisite ('Needs a connection allowed to publish'), a state prerequisite (version must be approved), and the downstream effect on event usage. It does not say what happens on a stale expectedRevision, which is the main remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short front-loaded lines: capability, constraint, decision rule, next step, then a concrete payload. Nothing is padded and the most important routing information comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-param mutation with an optimistic-concurrency field and no output schema, the description supplies prerequisites, follow-up tools, and an example payload. It is nearly complete; only conflict/error behavior for a mismatched expectedRevision is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each field already documents its origin (list_event_configurations, get_event_configuration), so baseline is 3. The inline example adds realistic value formatting (an 'ec_' prefixed id) but does not explain the concurrency semantics of expectedRevision.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Publish an approved configuration version') plus the effect ('so events can use it'), which cleanly separates it from approve_event_configuration (pre-approval) and activate_event_configuration (post-publish activation). An agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: the version is approved' gives an explicit precondition, and the 'Next:' line names two concrete successors (activate_event_configuration, or bind via plan_inventory_change set_configuration_binding). It stops short of stating when NOT to use it (e.g., unapproved or already-published versions), so it is not fully exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_reviewed_chartPublish Approved Chart RevisionA
DestructiveIdempotent
Inspect

Publish the approved chart version. Needs a connection allowed to publish; events on sale keep their version. Use when: the review was approved. Fails if the chart changed since. Next: list_chart_events. Example: {"reviewId": "crp_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
reviewIdYesThe approved review id
expectedUpdatedAtYesupdatedAt the review was made for

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond annotations: a publish-permission requirement, the side effect that events on sale keep their version, and the optimistic-concurrency failure (chart changed since review). It leaves implicit what the destructiveHint actually destroys (the previously live chart version), which prevents a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action and followed by use condition, failure mode, next step, and a concrete example. The example is slightly verbose but earns its place by clarifying the two required params.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param mutation with no output schema, the description covers precondition, permission requirement, concurrency failure, and follow-up. Only the return/confirmation shape is unaddressed, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline is 3. The description lifts it by explaining the semantic role of expectedUpdatedAt as a staleness guard ('fails if the chart changed since') and the example shows a valid reviewId shape and epoch-millis timestamp.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Publish the approved chart version'. The qualifier 'approved' distinguishes it from the preparation step (prepare_chart_review) and the approval step (record_chart_review_decision), though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: the review was approved' gives an explicit precondition, and 'Fails if the chart changed since' gives the failure condition. 'Next: list_chart_events' routes the agent forward. No explicit 'do not use' or named alternative for the unapproved case, so short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_reference_imageRead Reference ImageA
Read-onlyIdempotent
Inspect

Return one uploaded image as a picture. Use when: you need to see the original again (vision check required). Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b"}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description adds value beyond them by disclosing the return shape (an actual picture, not a URL or metadata) and the vision-check prerequisite — important 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, action first, then the when-to-use condition, then a concrete example. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A one-parameter read tool with full annotation coverage and no output schema is adequately specified: the description covers input source, return type, and the vision prerequisite. Only the image format/size or failure behavior for a missing assetId is left unstated, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the assetId description already points back to upload_reference_image, so the schema does the heavy lifting. The inline example illustrates a valid id but adds little beyond the pattern constraint; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns one uploaded image as a picture, which is clearly distinct from the sibling upload_reference_image and list_reference_images. It does not explicitly name those siblings, but the single-asset retrieval scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: you need to see the original again (vision check required)" gives an explicit triggering condition and a capability prerequisite. It stops short of naming an alternative such as get_reference_tile or list_reference_images for discovery, but the guidance is actionable without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_chart_review_decisionRecord Chart Review DecisionA
Destructive
Inspect

Approve or reject a review after looking at its pictures. Does not publish. Use when: the pictures were checked. Approve needs no blockers, all checks true and an unchanged chart. Next: publish_reviewed_chart, or fix and prepare_chart_review again. Example: {"reviewId": "crp_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "decision": "approve", "reviewerKind": "user-confirmed", "checklist": {"labelsReadable": true, "visualHierarchyApproved": true, "inventoryEvidenceApproved": true, "referenceGeometryApproved": true}, "notes": "Checked.", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
notesYesWhat was checked, or why rejected
decisionYesapprove or reject the reviewed chart
reviewIdYesFrom prepare_chart_review
checklistYesAll true to approve
reviewerKindYesuser-confirmed if the user looked and agreed
expectedUpdatedAtYesupdatedAt the review was made for

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, so the description must add the real behavioral constraints, and it does: approve requires no blockers, all checklist flags true, and an unchanged chart, plus the clarification that this does not publish. It stops short of explaining what a reject does downstream or the optimistic-concurrency failure mode of expectedUpdatedAt.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded imperative sentence, then terse labeled lines for when/next/example. Every line carries distinct information and the example is worth its length for a 6-parameter mutation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers purpose, preconditions, and next steps. Remaining gap is what the tool returns or what state a rejection leaves the review in.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so baseline would be 3, but the description adds a full worked example payload that demonstrates the exact shape of the nested checklist, the reviewerKind value, and the expectedUpdatedAt convention, which is meaning beyond the field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (approve or reject) on a named resource (review), and the scope boundary 'Does not publish' separates it from publish_reviewed_chart. An agent can distinguish this from get_chart_review or prepare_chart_review immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when: the pictures were checked') and an explicit successor/alternative pair ('Next: publish_reviewed_chart, or fix and prepare_chart_review again'), which routes the agent through the review workflow without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_section_reviewRecord Section Review CheckpointAInspect

Save your progress note on a section. Not a chart change or publish approval. Use when: after checking with get_section_context. Next: get_section_work_queue. Example: {"floorId": "floor_main", "sectionIds": ["sec_a1b2c3"], "expectedUpdatedAt": 1790000000000, "expectedLedgerRevision": 3, "unitFingerprint": "9f2c4e1a7b3d5f8e0a2c4e6b8d1f3a5c7e9b0d2f4a6c8e1b3d5f7a9c0e2b4d6f", "state": "needs-fix", "notes": "Row K reversed.", "remainingIssues": ["Row K"], "evidence": []}

NameRequiredDescriptionDefault
notesYesWhat you found
stateYesmanual-needed = a person must fix it in Designer
floorIdYesAs sent to get_section_context
evidenceYesWhat you looked at; reviewed needs source and canvas
checklistNoAll true for reviewed
sectionIdsYesAs sent to get_section_context
remainingIssuesYesOpen problems; empty for reviewed
unitFingerprintYesFrom get_section_context
expectedUpdatedAtYesupdatedAt from get_section_context
expectedLedgerRevisionYesFrom get_section_context

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-destructive, non-idempotent write, and the description usefully clarifies that the write is a note checkpoint rather than a chart mutation. However, it never explains the concurrency contract implied by expectedUpdatedAt/expectedLedgerRevision/unitFingerprint — what happens on a stale revision, whether repeat calls overwrite, or whether the call can be rejected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose, then when/next/example in telegraphic order with no filler. The example is long but is the most information-dense part for a 10-parameter, 9-required tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter nested-payload write with no output schema, the description supplies prerequisite, follow-up, and a complete example. The gap is the optional 'checklist' object: it is absent from both the example and the prose, and the description also omits any return/failure semantics, leaving the agent to infer when the checklist must be populated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The full worked example goes beyond the schema by showing the required payload as a coherent whole — a 'needs-fix' state paired with remainingIssues and an empty evidence array — which clarifies field interplay that per-property descriptions state only in fragments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('Save your progress note on a section') plus an explicit negative boundary ('Not a chart change or publish approval') that separates it from update_sections and publish_reviewed_chart. An agent can identify the operation 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit prerequisite ('after checking with get_section_context'), an explicit next step ('get_section_work_queue'), and implicit exclusions via the 'not a chart change' line. This is the when/when-not/alternatives pattern in compressed form.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

relabel_rowsRelabel Visible RowsA
Destructive
Inspect

Rename rows in order for buyers (A, B, C or 1, 2, 3); booking labels stay. Use when: e.g. "letter the rows A to T, skipping I and O". Not for: one row name (use update_rows) or sections (use relabel_sections). Example: {"rowIds": ["row_a1b2c3", "row_d4e5f6"], "scheme": "letters", "skipAmbiguous": true, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
rowIdsYesRow ids, named top to bottom
schemeYesletters (A, B...) or numbers (1, 2...)
floorIdNoFloor id; default: first floor
reverseNoName bottom to top
startAtNoStart number; 1 = A
displayTypeNoWord instead of "Row"; "" clears
skipAmbiguousNoSkip I and O
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructive=true and non-idempotent, so the safety bar is lowered, but the description adds a genuinely non-obvious behavioral fact: booking labels are preserved while buyer-facing labels change. It stops short of stating undo/rollback or what happens if the passed rowIds are stale, though expectedUpdatedAt in the schema hints at optimistic concurrency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines — purpose, when, when-not, example — with zero filler. The example is compact and directly actionable rather than decorative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk mutation with 8 parameters and no output schema, the definition covers purpose, alternatives, the key side effect on booking labels, and a full call example. Only gap is failure semantics (stale expectedUpdatedAt, partial application) which an agent would want before mutating many rows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns extra credit by giving a worked example that shows how rowIds, scheme, skipAmbiguous, and expectedUpdatedAt combine in one call, which the schema alone does not convey. It still doesn't explain reverse/startAt/displayType interactions beyond what the schema says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (rename rows, in order) plus the scope qualifier that buyers see the new labels while booking labels stay. It is immediately distinguishable from update_rows (single row name) and relabel_sections (sections).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' with a concrete example utterance and explicit 'Not for' routing to update_rows and relabel_sections. An agent has both the positive trigger and the exclusion conditions without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

relabel_sectionsRelabel SectionsA
Destructive
Inspect

Rename sections for buyers: in sequence (A, B or 101, 102) by position, or each to its own name with names. Use when: e.g. "number the sections 101 up, left to right" or "call these North Stand, East Stand...". Not for: rows (use relabel_rows). Use scheme, startAt and direction, or names, not both. Example: {"sectionIds": ["sec_a1b2c3", "sec_d4e5f6"], "scheme": "numbers", "startAt": 101, "direction": "left-to-right", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
namesNoInstead of a sequence: each section id with the name buyers see
schemeNoNaming scheme for a sequence
floorIdNoFloor id; default: first floor
startAtNo1 = A; 101 gives 101, 102...
directionNodocument = as listed
sectionIdsNoSection ids to number in sequence
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true / readOnlyHint=false, so the mutation profile is covered. The description adds genuine context beyond that: names are what buyers see (change is externally visible), the two modes are mutually exclusive, and the example shows expectedUpdatedAt as a concurrency guard. It stops short of saying that existing buyer-facing labels are overwritten or whether the chart must be in an editable/unpublished state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then use/not-for/constraint/example in a tight telegraphic sequence — no filler sentences. Slightly compressed phrasing ('in sequence (A, B or 101, 102) by position') costs a little readability but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter destructive mutation with no output schema, the description covers modes and selection but not the consequences: whether existing labels are lost, whether renaming interacts with rows/seats beneath the sections, or whether any publish/draft precondition applies. Adequate to invoke correctly, incomplete on blast radius.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description rises above it by documenting the cross-parameter constraint (scheme/startAt/direction vs. names, never both) that the schema cannot express, plus an end-to-end example payload. It does not explain direction semantics or startAt arithmetic beyond what the field descriptions already say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (rename sections) with the scope made concrete: buyer-facing names, two distinct modes (sequence vs. explicit names). It also names the sibling it is not for (relabel_rows), so an agent can distinguish it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use with two natural-language trigger examples ('number the sections 101 up, left to right', 'call these North Stand, East Stand...'), an explicit exclusion routing to relabel_rows, and a mutual-exclusivity rule ('use scheme, startAt and direction, or names, not both') that tells the caller how to choose between the two modes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_previewRender Current Chart PreviewA
Read-onlyIdempotent
Inspect

Show a PNG picture of the saved chart as buyers will see it (view "chart"), or drawn over the traced floor plan (view "reference-overlay"), with a list of visual problems such as clashing labels or seats too small to tap. Use when: after validate_current_chart, to look at your work on desktop and mobile before saying it is done, and before prepare_chart_review. Not for: rule checks (use validate_current_chart). Pictures need begin_vision_probe first; without it, checks and a link only. Next: fix every item in quality, then prepare_chart_review. renderer.buyerPixelParity false means a simplified drawing, not the exact buyer view. States: overview, interaction, venue3d.

NameRequiredDescriptionDefault
viewNochart = what buyers see; reference-overlay = the chart over the traced floor plan (default)reference-overlay
stateNooverview = whole map; interaction = zoomed in with seat states; venue3d = 3D. Chart view onlyoverview
floorIdNoOptional persisted floor id returned by get_chart; defaults to the first floor
viewportNoBuyer screen size for the chart view; ignored by reference-overlaydesktop

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile, and the description adds real behavior: an image requires begin_vision_probe first, otherwise only checks and a link are returned. It also warns that renderer.buyerPixelParity=false means a simplified drawing rather than the exact buyer view — a caveat an agent would otherwise misread.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the Use when / Not for / Next structure is easy to scan. There is minor redundancy in re-listing the three state values that the schema enum already documents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still explains what comes back: a PNG plus a quality list, or checks and a link when the vision probe is absent. The prerequisite, the post-condition, and the buyerPixelParity caveat together make it complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum descriptions already explain chart vs reference-overlay, the three states, and that viewport is ignored by reference-overlay. The description largely restates those values ('States: overview, interaction, venue3d') rather than adding syntax or constraints, so it sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact: show a PNG picture of the saved chart, in either buyer view or reference-overlay, plus a list of visual problems. It also explicitly separates itself from the sibling that does rule checks (validate_current_chart), so an agent can pick it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit ordering: after validate_current_chart, before prepare_chart_review, and on desktop and mobile before declaring the work done. It names the exclusion ('Not for: rule checks') and points to the correct alternative, plus a 'Next' step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_reference_capacity_previewRender Reference Capacity ProposalA
Read-onlyIdempotent
Inspect

Draw the seat-count plan as buyers would see it, desktop and mobile, without saving. Use when: before apply_reference_capacity_plan. Send the plan_reference_capacity fields. A good picture does not approve prices. Next: apply_reference_capacity_plan. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "targetCapacity": 1200, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
targetCapacityYesSeats plus standing
numberingPolicyNoAs in plan_reference_capacity: seat numbering in each row
standingCapacityNoStanding part of targetCapacity
standingSectionsNoAs in plan_reference_capacity: standing sections (logicalSectionId) with evidence
categoryOverridesNoAs in plan_reference_capacity: name and price categories by their plan colour
expectedUpdatedAtYesmeta.updatedAt from get_chart
accessibilityGroupsNoAs in plan_reference_capacity: accessible seat counts by type per section group
nonSellableSectionsNoAs in plan_reference_capacity: sections that sell nothing, with reason
sectionCategoryGroupsNoAs in plan_reference_capacity: group sections into categories when plan colours are not prices
standingSectionEvidenceNoOld form
standingLogicalSectionIdNoOld form; use standingSections
standingSectionSourceDescriptionNoOld form

TDQS

A4.1/5.0
Behavior4/5

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 largely covered. The description still adds real value: 'without saving' and the caution 'A good picture does not approve prices' make clear that a preview carries no approval semantics. It does not describe rate limits or the cost of rendering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded sentences, an explicitly labeled use condition, a next-step pointer and one compact example. No sentence restates the tool name, and every statement carries operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool whose schema is fully described, the description covers when to call it, what it does and what it does not do. The one gap is the return value: with no output schema, the description never says what the preview produces (for example, image links or a rendered view identifier), so the agent cannot anticipate the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 13 fields, which sets the baseline at 3. The description adds value beyond that by tying the inputs to the plan_reference_capacity fields and by including a concrete example showing the shape of assetId, targetCapacity and expectedUpdatedAt. Optional fields such as numberingPolicy and accessibilityGroups are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: draw the seat-count plan as buyers see it, desktop and mobile, without saving. The 'without saving' clause cleanly separates it from apply_reference_capacity_plan. It never mentions the sibling render_preview, so an agent must still infer the difference between those two rendering tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit sequencing: 'Use when: before apply_reference_capacity_plan' plus a 'Next' pointer gives the agent a clear place in the workflow. It stops short of full guidance, because it lists no circumstances where you should skip the preview or use render_preview instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reorder_chart_categoriesReorder Chart CategoriesA
DestructiveIdempotent
Inspect

Set the order of categories in the buyer legend. Use when: e.g. "VIP first". Send every key once. Example: {"categoryKeys": ["cat_vip", "cat_standard"], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
categoryKeysYesEvery category key once, in order
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds the key operational rule, 'Send every key once', which explains the full-replacement semantics behind the destructive hint. It doesn't spell out what happens to categories that are omitted from the list, which keeps it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines with zero filler: purpose first, then the trigger, then a concrete payload example. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema and rich annotations, the description supplies the ordering intent, the send-every-key rule, and a working example. Missing only the failure mode for a stale expectedUpdatedAt and the fate of omitted categories, both minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already well documented in the schema. The description's example shows how expectedUpdatedAt is paired with the key order, but it adds little format detail beyond what the schema already states, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line gives a specific verb and resource: set the order of categories in the buyer legend. That is clearly distinct from create_chart_category or delete_chart_category, though it never explicitly contrasts with the closest sibling, update_chart_categories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: e.g. "VIP first"' gives a concrete trigger scenario that tells the agent when this tool is the right pick. It stops short of naming alternatives or stating when not to use it, so it lands at clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

repeat_section_radiallyRepeat Section RadiallyAInspect

Copy a section and its contents around the stage in a ring or arc, e.g. for an arena bowl. Use when: e.g. "24 sections all the way round". totalSections includes the original. Example: {"sourceSectionId": "sec_a1b2c3", "totalSections": 24, "labelStart": 101, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
directionNocw (clockwise, default) or ccwcw
labelStartNoFirst copy number
labelPrefixNoText before each number
labelPaddingNoZero-pad to this many digits
sweepDegreesNoDegrees; 360 = full ring
totalSectionsYesIncluding the original
includeContentsNoCopy what is inside too
minimumAisleGapNoMin gap between sections, chart units
sourceSectionIdYesSection id
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the agent knows this creates new objects without destroying the source. The description adds the "totalSections includes the original" counting rule, but never explains the optimistic-concurrency role of expectedUpdatedAt, the 2–60 section bound, or what happens on a stale timestamp.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core behavior is front-loaded in one sentence, followed by a short usage cue and a compact example; nothing is padded. The example JSON only restates required fields already in the schema, so that line earns slightly less than its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation with no output schema, the description is silent on what comes back — notably the new section identifiers an agent would need after generating 23 copies. It covers intent and counting semantics but leaves the post-call picture and failure modes unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including labelStart, sweepDegrees and minimumAisleGap is already documented in the schema. The description's one semantic note (totalSections counts the original) duplicates the schema wording, so it adds little beyond the structured data — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and effect: copy a section and its contents around the stage in a ring or arc, with a concrete use case (arena bowl). That clearly separates it from the many add_*/update_* siblings, though it never names a neighbouring tool (e.g. mirror_section_assembly) to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit "Use when: e.g. '24 sections all the way round'" supplies a recognizable trigger phrase, which is stronger than implied usage. It stops short of exclusions or alternatives, so the agent gets context but no guidance on when NOT to reach for this instead of a manual add/duplicate flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_missing_toolReport Missing ToolA
Read-only
Inspect

Tell SeatLayer the user asked for something no tool can do, so it can be added. Saves a short note for the SeatLayer team; changes nothing in the chart or events. Use when: no tool here fits, or on ?tools=discover search_tools found none. Tell the user plainly it cannot be done here, and where to do it if you know. Not for: an error from a tool (read its message and retry).

NameRequiredDescriptionDefault
requestYesWhat the user wanted, in one sentence, with no names, emails or phone numbers
searchedNoThe words you searched with, if any

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'changes nothing in the chart or events,' which is the key assurance an agent needs before calling. It also adds operational guidance ('Tell the user plainly it cannot be done here'), but does not note that idempotentHint is false, i.e. repeated calls create duplicate notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, labeled sentences — what it does, when to use it, when not to — with the effect statement front-loaded. There is no filler and no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two well-described parameters and no output schema, the description covers purpose, effect on state, and user-facing messaging, which is sufficient to call it correctly. The one omission is duplicate-call behavior, consistent with idempotentHint=false, which matters for a note-submission tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself documents both parameters, including the no-PII constraint on 'request'. The description only indirectly gestures at 'searched' via the search_tools reference, so it adds little beyond the structured fields — the baseline 3 applies when the schema carries this weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — telling SeatLayer about an unmet capability, which saves a note for the SeatLayer team — and immediately bounds it with 'changes nothing in the chart or events.' No sibling tool does anything comparable, so an agent can identify it without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when:' clause covers both triggers (no tool fits; search_tools on ?tools=discover returned nothing), and the 'Not for:' clause excludes the main false positive — an error from an existing tool, where the correct action is to read the message and retry. Alternatives and exclusions are both named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_order_refundRequest a Refund (Admin Approves)A
Idempotent
Inspect

Files a request that an org admin approves in the dashboard to refund or cancel an order. Moves no money and changes no order itself; returns the approval link (24 hours). Use when: "refund order 1234 5678", "cancel seat C5, the customer is ill". cancel means no money moves through SeatLayer (refunded elsewhere, lost dispute): give reason. Needs the Orders permission. Next: give the person approvalUrl; get_order shows whether it was approved. Example: {"eventKey": "ev_1350a828b5ff", "orderRef": "#1234 5678", "action": "refund", "amountMinor": 2000}

NameRequiredDescriptionDefault
noteNoWhy, in the person's words; shown to the admin
seatsNoOnly these seats of the order (labels from get_order tickets)
actionYesrefund: money back through the payment provider; cancel: void tickets, money handled outside SeatLayer
reasonNocancel: lost_dispute, refunded_elsewhere or other (with note)
eventKeyYesKey from find_events
orderRefYesOrder reference, e.g. "#1234 5678", from list_orders or find_order
amountMinorNorefund only: amount in minor units; leave out for the whole remaining balance
notifyBuyerNocancel: email the buyer that it was cancelled

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly=false, destructive=false, idempotent=true; the description adds the substantive behavior behind that: an admin must approve in the dashboard, no money moves and the order is unchanged by this call, the approval link expires in 24 hours, and cancel means money is handled outside SeatLayer. These are exactly the operational facts an agent needs and none of them are in 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core effect and the no-side-effects caveat, then usage, then next steps and an example — a sensible order for an 8-parameter tool. Slightly repetitive (cancel semantics appear in both prose and schema, and the parenthetical "refunded elsewhere, lost dispute" restates enum values), but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and an approval workflow, the description covers what an agent would otherwise guess wrong: the return value (approvalUrl with 24h expiry), the required permission, that approval is asynchronous, and how to verify the outcome via get_order.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description goes beyond it by stating the conditional requirement that cancel needs a reason and by giving a complete example payload that shows how eventKey, orderRef, action and amountMinor combine. It does not add much on seats, note or notifyBuyer, which the schema already documents well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Files a request that an org admin approves ... to refund or cancel an order") and immediately clarifies the mechanism: it files a request rather than moving money or mutating the order. That framing separates it from mutation-style siblings and from read siblings like get_order/list_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit "Use when" examples with literal user phrasings ("refund order 1234 5678", "cancel seat C5"), a clear rule for choosing cancel vs refund, the prerequisite (Orders permission), and an explicit next step (give the person approvalUrl; use get_order to see if approved). Nothing 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.

resend_ticketsResend TicketsA
Idempotent
Inspect

Email an order's tickets again to the address already on the order. Changes no order, seat or money. Use when: "the buyer never got their tickets", "send the tickets again". At most 3 per order per hour; a repeat within 10 minutes is not sent twice. A new address is set in the dashboard, not here. Needs the Orders permission. Next: tell the person where the tickets went (sentTo). Example: {"eventKey": "ev_1350a828b5ff", "orderRef": "#1234 5678"}

NameRequiredDescriptionDefault
eventKeyYesKey from find_events
orderRefYesOrder reference, e.g. "#1234 5678", from list_orders or find_order

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations: annotations only say it is non-destructive, idempotent and open-world, while the description adds the actual side effect (an email is sent), the rate limit, the dedupe window, the required Orders permission, and the fact that no order/seat/money state changes. It also names the return field (sentTo) so the agent can report the outcome. No contradictions with destructiveHint=false or idempotentHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and its safety profile, then use cases, then limits, then a follow-up hint and example. Every sentence carries distinct information; nothing is repeated from the name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description covers what matters for a two-parameter email action: prerequisites (Orders permission), rate limiting, idempotency behavior, the destination address policy, and where the result field lives. An agent can invoke and report on this tool without further discovery.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented with their provenance (find_events, list_orders/find_order). The description adds a concrete example showing the expected value shapes, but supplies no additional syntax or constraints beyond the schema — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — re-send an existing order's tickets to the address already on file — and immediately bounds the scope with 'Changes no order, seat or money.' That negative scoping separates it cleanly from sibling mutation tools like update_seats or request_order_refund.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger phrases ('the buyer never got their tickets', 'send the tickets again'), an explicit exclusion (a new address is set in the dashboard, not here), and operational limits (3 per order per hour, no duplicate send within 10 minutes). An agent knows both when to call it and when to redirect the user elsewhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_seatsReset SeatsA
DestructiveIdempotent
Inspect

Clear all single-seat changes so seats follow their row or table again. Use when: e.g. "clear the special settings on row A". Example: {"seatIds": ["row_a1b2c3:0"], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
seatIdsYesIds from get_row_seats or get_table_chairs
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real value beyond them by specifying what is destroyed (single-seat overrides) and what the resulting state is (seats follow row/table again) — key for judging blast radius. It omits any note on optimistic-concurrency failure behavior, which matters for a destructive call gated by expectedUpdatedAt.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact lines with the effect front-loaded, then the trigger, then a call example — no filler. The 'Use when: e.g.' construction is slightly clipped and could read more cleanly, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-read-only mutation the description covers intent, scope and a sample payload, and it correctly relies on the schema for parameter detail. With no output schema, though, it never says what comes back (updated counts, per-seat results) or how a stale expectedUpdatedAt surfaces, leaving the agent without a recovery path after a conflict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema already documents floorId, seatIds and expectedUpdatedAt. The inline example adds meaning the schema lacks by showing the composite seat id format ('row_a1b2c3:0') and that expectedUpdatedAt is a millisecond-style integer, which reduces malformed calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and effect: 'Clear all single-seat changes so seats follow their row or table again' — the agent knows exactly what state transition happens (overrides removed, seats re-inherit from row/table). It does not name the sibling it is the inverse of (update_seats), so differentiation is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when: e.g. "clear the special settings on row A"' line gives a concrete trigger phrase, which is useful routing signal. However, it names no alternative (notably update_seats, which sets the very per-seat overrides this clears), and the row-level phrasing sits awkwardly against a seatIds-only interface, leaving the agent to infer that a whole row means enumerating its seat ids.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_reference_sectionsRestore Sections From Private Reference ContoursA
DestructiveIdempotent
Inspect

Snap chosen section outlines back to the shape traced from the floor plan. Seats, names, categories and prices inside them are kept. Use when: diff_vs_reference shows a traced section that drifted from the plan. Not for: sections drawn by hand without a traced plan, or moving seats. Next: validate_current_chart, render_preview, then diff_vs_reference again. Example: {"sectionIds": ["sec_orchestra_left"], "expectedUpdatedAt": 1790000000000} Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
floorIdNoOptional persisted floor id returned by get_chart; defaults to the first floor
sectionIdsYesOne to 25 section ids from get_chart or diff_vs_reference
expectedUpdatedAtYesmeta.updatedAt from the latest get_chart or diff_vs_reference call

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, idempotent=true, openWorld=false, so the safety profile is known; the description adds value on top by naming the side effects precisely (outlines are rewritten, interior seats/names/categories/prices are kept) and by documenting a real runtime state (error reference_analysis_pending with retryAfterSeconds and a retry instruction). It also warns against manually drawn sections, which explains when the tool is meaningless.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight lines with the core action front-loaded, then labeled Use when / Not for / Next / Example blocks plus a one-line error case. No filler and no repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers prerequisite (a traced plan must exist), side effects, follow-up validation, and a pending-analysis error. The remaining gap is return-value and conflict behavior: it never says what comes back, nor what happens if expectedUpdatedAt is stale — only the example hints at the staleness contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters are documented in the schema (floorId default, sectionIds 1-25, expectedUpdatedAt as meta.updatedAt). The description only adds a concrete example payload and the phrase "chosen section outlines" for sectionIds; it says nothing about the optimistic-concurrency semantics of expectedUpdatedAt or the floorId default, so it stays at the baseline 3 for schema-does-the-work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Snap chosen section outlines back to the shape traced from the floor plan" is a specific verb + resource + source of truth, and the follow-up clause states exactly what is preserved (seats, names, categories, prices). An agent can distinguish this from update_sections or update_shapes without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger ("Use when: diff_vs_reference shows a traced section that drifted from the plan"), explicit exclusions ("Not for: sections drawn by hand without a traced plan, or moving seats"), and an explicit follow-up sequence (validate_current_chart, render_preview, then diff again). This is the full when/when-not/next chain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retract_confidence_evidenceRetract Confidence EvidenceA
DestructiveIdempotent
Inspect

Withdraw an approved Verified View record. Needs a connection allowed to publish, and confirmRetract: true. Use when: the record is wrong. Next: set_confidence_evidence. Example: {"scope": "row", "objectId": "row_a1b2c3", "confirmRetract": true, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
scopeYesWhat the record covers
floorIdNoFloor id (needed for floor)
objectIdNoRow, table or section id (seat, row, section)
seatIndexNoFor seat: index from get_row_seats
confirmRetractNoMust be true to retract
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true, idempotent=true, readOnly=false, so the safety profile is covered. The description adds value beyond them by naming the required publish-level connection permission and the mandatory confirmRetract guard, though it doesn't say what state the record lands in after retraction or how a stale expectedUpdatedAt is handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines: purpose, prerequisite, when-to-use, next-step, example. Everything is front-loaded and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param destructive mutation with no output schema, the description covers purpose, gating permission, confirmation flag, and sequencing. It leaves out the return/error behavior (e.g. what happens on optimistic-concurrency failure), which keeps it short of fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The example payload goes further by showing a realistic combination of scope, objectId, confirmRetract, and expectedUpdatedAt, which clarifies how the optional identifier params interact with the scope enum better than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Withdraw an approved Verified View record.' This is immediately distinguishable from approve_confidence_evidence, set_confidence_evidence, and clear_confidence_evidence in the sibling list, and the closing 'Next: set_confidence_evidence' reinforces which lifecycle step comes after.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: the record is wrong' gives an explicit trigger condition, and 'Needs a connection allowed to publish, and confirmRetract: true' states the prerequisite. It does not contrast with the nearby alternative clear_confidence_evidence, which is the one real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_event_configurationRoll Back Event ConfigurationA
DestructiveIdempotent
Inspect

Make an older published version the default again. Events keep their version. Needs a connection allowed to publish. Use when: the newest version was a mistake. Next: bind it to an event: plan_inventory_change set_configuration_binding. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "targetVersion": 1, "expectedParentRevision": 6}

NameRequiredDescriptionDefault
targetVersionYesOlder published version
configurationIdYesId from list_event_configurations
expectedParentRevisionYesconfiguration.revision from get_event_configuration

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the description earns credit for adding what those hints cannot: that events retain their version binding, and that the caller must have publish permission. It does not describe behavior on a stale expectedParentRevision, but the schema covers that parameter's meaning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tight, front-loaded, and uses labeled 'Use when' / 'Next' / 'Example' sections so an agent can scan it fast. The only waste is the run-together tool names in the 'Next' line, which cost a moment of parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter destructive mutation with no output schema, the definition supplies purpose, trigger, permission prerequisite, post-step, and a worked example. The remaining gap — what happens to the previously default version and how conflicts are surfaced — is modest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline of 3 applies, and the description exceeds it with a concrete example object showing all three required parameters with realistic values (ec_ id, targetVersion 1, expectedParentRevision 6). This makes the rollback-to-older-version intent of targetVersion tangible.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Make an older published version the default again' — and clarifies the effect is on the default pointer, not on events ('Events keep their version'). It does not differentiate itself from the sibling activate_event_configuration, which an agent could plausibly confuse with this operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when: the newest version was a mistake') and a prerequisite ('Needs a connection allowed to publish'), plus a follow-up step. It lacks a when-not clause and the 'Next' line names two tools run together ('plan_inventory_change set_configuration_binding'), which is slightly ambiguous routing advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_reference_capacity_draftSave Reference Capacity DraftAInspect

Save a seat-count plan (fields as plan_reference_capacity) so open questions can be answered later. Creates no seats. Use when: the plan still has questions for the user. Next: list_reference_capacity_questions. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "targetCapacity": 1200, "expectedUpdatedAt": 1790000000000, "expectedDraftRevision": null}

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
targetCapacityYesSeats plus standing
numberingPolicyNoAs in plan_reference_capacity: seat numbering in each row
standingCapacityNoStanding part of targetCapacity
standingSectionsNoAs in plan_reference_capacity: standing sections (logicalSectionId) with evidence
categoryOverridesNoAs in plan_reference_capacity: name and price categories by their plan colour
expectedUpdatedAtYesmeta.updatedAt from get_chart
accessibilityGroupsNoAs in plan_reference_capacity: accessible seat counts by type per section group
nonSellableSectionsNoAs in plan_reference_capacity: sections that sell nothing, with reason
expectedDraftRevisionYesnull first; then draft revision
sectionCategoryGroupsNoAs in plan_reference_capacity: group sections into categories when plan colours are not prices
standingSectionEvidenceNoOld form
standingLogicalSectionIdNoOld form; use standingSections
standingSectionSourceDescriptionNoOld form

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-destructive, non-idempotent write; the description adds real value by stating 'Creates no seats', clarifying the write is plan-only. However, it says nothing about the optimistic-concurrency behavior implied by expectedUpdatedAt/expectedDraftRevision (what happens on a stale revision) or what the call returns, which matters for a non-idempotent mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded lines — purpose, trigger, next step — with no filler, which is well above average. The example line is long and largely restates constraints already documented in the schema, so it earns slightly less than full marks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter mutation with no output schema, the description covers the when and the follow-up but omits the return value (draft id? revision?) and conflict/error semantics. An agent could invoke it correctly but would not know what to expect back or how to recover from a stale-revision failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description mostly defers to the schema by pointing at plan_reference_capacity for field meanings. The example JSON illustrates the first-call shape (expectedDraftRevision: null) but covers only 4 of 14 parameters, so it doesn't meaningfully extend the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Save a seat-count plan') and immediately scopes the effect ('Creates no seats'), which separates it from apply_reference_capacity_plan. It references plan_reference_capacity for the field vocabulary, so an agent knows this is the draft-persistence counterpart, though it never names the apply tool directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit condition ('Use when: the plan still has questions for the user') and a next step ('Next: list_reference_capacity_questions'), which is strong routing. It stops short of the inverse case — what to do once questions are resolved (apply_reference_capacity_plan) — leaving the exit path implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_sightlinesScore SightlinesA
Read-onlyIdempotent
Inspect

Estimate which seats have a restricted view of the stage or screen in a configuration. A model; changes nothing. Use when: e.g. after adding a screen or sound desk. Next: apply_suggested_restrictions. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c"}

NameRequiredDescriptionDefault
versionNoDefault: active or latest
maxSeatsNoSeat limit
configurationIdYesId from list_event_configurations
targetElementIdNoProduction element id; default: first stage or screen
includeSeatChairsNoChairs in front block the view

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, and "A model; changes nothing" is consistent with them, restating that safety profile plus the modelling nature of the call. Beyond that it discloses nothing about cost, latency, seat-cap limits (maxSeats), or what the estimate contains. Consistent but adds little 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short labelled fragments, front-loaded with the core purpose followed by when/next/example — very scannable with no filler. The prose is somewhat telegraphic, so the reader must already know the domain vocabulary, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Five parameters and no output schema, yet the description says nothing about what the estimate returns — per-seat flags, counts, a screen-view percentage, or whether anything persists for apply_suggested_restrictions to consume. For a read-only modelling call the safety side is fully covered by annotations, but the return-shape gap is a real omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so version, maxSeats, targetElementId and includeSeatChairs are all documented in the schema already; baseline 3 applies. The description adds only an example configurationId value, not meaning for any of the other four parameters or how targetElementId/default-stage selection affects the estimate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource combination ("estimate which seats have a restricted view of the stage or screen") scoped to a configuration, plus a disambiguating clause "A model; changes nothing" that separates pure computation from mutation tools in the sibling list. It does not explicitly name a contrasting sibling, but the pipeline pointer to apply_suggested_restrictions makes the boundary inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: e.g. after adding a screen or sound desk" gives a concrete trigger condition, and "Next: apply_suggested_restrictions" establishes the workflow sequence. There is no explicit "do not use when" or statement of prerequisites (published configuration? draft allowed?), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_chartSelect ChartA
Idempotent
Inspect

Switch to another chart in the workspace. Every later call (reads, edits, reviews, events) works on it until you switch again, including after a reconnect. Use when: the user wants to work on a different existing chart. Not for: one-chart connections (refused) or new charts (use create_chart). Next: get_chart. Example: {"chartId": "c_5ee63de1786e40f483739b8a4f5dd699"}

NameRequiredDescriptionDefault
chartIdYesThe chart to address, from list_charts.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the stateful side effect: every subsequent read/edit/review/event call targets the new chart until the next switch, persisting across reconnects, and that one-chart connections are refused. It does not say what happens on an invalid or unauthorized chartId, which is the only notable gap. Importantly, the stateful-switch framing explains why readOnlyHint=false despite no chart data being modified, so there is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short, labeled lines: behavior, when, not-for, next, example. Front-loaded with the stateful consequence that matters most, and every line carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Single required parameter, no output schema, annotations already covering safety and idempotency. The description supplies everything else an agent needs: scope, exclusions, persistence semantics, and the follow-up call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents chartId as coming from list_charts, so the baseline is 3. The example supplies the ID shape ('c_5ee63de...'), which is a small addition beyond the schema but not explanatory semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Switch to another chart in the workspace') and immediately disambiguates from siblings: not create_chart, not for one-chart connections. An agent can pick this over the ~150 other tools 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' / 'Not for' structure names both exclusion cases and routes to the correct alternative (create_chart) plus the natural next step (get_chart). This is exactly the when/when-not/alternatives pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_active_referenceSet Active ReferenceA
Destructive
Inspect

Show an uploaded image faded under or over the chart in Designer, for tracing by eye. Use when: the user wants the plan visible behind the chart. Not for: building the chart from it (use get_reference_overview and the reference steps). Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
layerNoUnder or over the seatsbelow
assetIdYesId from upload_reference_image
opacityNoImage opacity
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the agent knows this mutates state. The description adds the visual behavior (faded overlay for tracing) but never explains what the destructive behavior actually is — e.g. whether an existing active reference is replaced, or that expectedUpdatedAt acts as an optimistic-concurrency guard that fails on a stale value. For a destructive mutation, that is a meaningful gap, though annotations cover part of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight, front-loaded lines: purpose, when, when-not, example. No filler, and the routing information precedes the example payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Purpose, routing and a call example are present, and there is no output schema to explain. However, for a destructive, non-idempotent mutation the description leaves the agent without the failure/overwrite model (stale expectedUpdatedAt, replacement of a prior active reference), which is what an agent most needs here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so layer enum, opacity bounds, assetId pattern and expectedUpdatedAt provenance are all documented in the schema. The description's example reinforces the shape of a valid call but adds no semantics beyond the schema, notably leaving the concurrency meaning of expectedUpdatedAt unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Show') plus resource ('an uploaded image faded under or over the chart in Designer') and its intent ('for tracing by eye'). This clearly distinguishes it from sibling reference tools like get_reference_overview or read_reference_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use when' (user wants the plan visible behind the chart) and an explicit 'Not for' that redirects to the correct alternatives (get_reference_overview and the reference steps). Both the trigger and the exclusion are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_confidence_evidenceSet Confidence EvidenceA
Idempotent
Inspect

Record how trustworthy a seat, row, section, floor or venue view is (Verified View). Saved as a draft buyers cannot see. Use when: the view was checked or modelled. Next: approve_confidence_evidence. Example: {"scope": "venue", "evidence": {"evidenceId": "ev_2026", "modelVersion": "v4", "evidenceKind": "organizer-approved", "modelLevel": "geometry-verified"}, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
scopeYesWhat the record covers
floorIdNoFloor id (needed for floor)
evidenceYesHow the view was made and checked
objectIdNoRow, table or section id (seat, row, section)
seatIndexNoFor seat: index from get_row_seats
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotent=true, destructive=false, readOnly=false, so the mutation profile needs less work. The description adds genuinely new state information: the record is saved as a draft that buyers cannot see, which no annotation conveys. It does not mention that expectedUpdatedAt enforces an optimistic-concurrency check, leaving one behavioral trait only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences followed by a single concrete example, with zero filler. The reader learns what, when, and what next in the first two lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object mutation with no output schema and no annotations in the description, the definition covers purpose, visibility of the draft, and the follow-up tool. Minor gaps remain around concurrency (expectedUpdatedAt staleness) and what happens on conflict, but the schema carries most of that detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter and nested evidence field is already documented, which sets the baseline at 3. The worked example restates the payload shape rather than adding format or semantics beyond the schema; it does confirm scope/evidence/expectedUpdatedAt are all required in practice but adds no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (record) and resource (trust level of a seat/row/section/floor/venue view), naming the exact scope set. It distinguishes itself from nearby siblings such as approve_confidence_evidence, clear_confidence_evidence and retract_confidence_evidence by making clear this only creates a draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: the view was checked or modelled' gives an explicit trigger, and 'Next: approve_confidence_evidence' routes the agent forward. It stops short of stating when-not-to-use (e.g. use approve/retract/clear instead), so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_event_configuration_bindingSet Event Configuration BindingA
Destructive
Inspect

Use a published configuration for an event not yet on sale, or remove it (null); its removed seats are blocked. Use when: e.g. "the 12 March show uses the concert setup" while it is in setup. On sale: plan_inventory_change set_configuration_binding instead. Needs "Manage live events" (publish permission in Designer). Fails if a removed seat is held or booked. Next: get_event_sections. Example: {"eventKey": "ev_1350a828b5ff", "expectedRevision": 0, "configuration": {"id": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "version": 2}}

NameRequiredDescriptionDefault
eventKeyYesKey from list_chart_events
configurationYesConfiguration id and version; null removes
expectedRevisionYesFrom get_event_configuration_binding

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructive=true, and the description adds meaningful specifics: the event must not yet be on sale, removed seats become blocked, and the call fails if a removed seat is held or booked. It also names the permission needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then uses compact labeled guidance for use cases, alternatives, permissions, failure modes, next step, and example. No wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description supplies the operational context needed to invoke correctly: preconditions, permissions, failure behavior, next tool, and a concrete example.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the three parameters and null removal. The description still adds an example payload showing expectedRevision and configuration id/version usage, which is useful beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: bind a published configuration to an event not yet on sale, or remove the binding with null. It explicitly distinguishes this from the on-sale alternative, plan_inventory_change set_configuration_binding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete when-to-use example, the on-sale alternative tool, required permission, failure condition, and recommended next tool. The decision path is explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_event_seat_blocksBlock or Unblock Event SeatsA
Destructive
Inspect

Take free seats in one section of an event not yet on sale off sale, or release blocked ones. Use when: e.g. "hold A1-A10" while the event is in setup. Needs "Manage live events" (publish permission in Designer). All-or-nothing on wrong labels or states. Not for: an event on sale (use plan_inventory_change block or unblock), or many seats. Next: get_event_section_inventory. Example: {"eventKey": "ev_1350a828b5ff", "sectionId": "sec_a1b2c3", "action": "block", "labels": ["A-1", "A-2"], "expectedInventoryVersion": 42}

NameRequiredDescriptionDefault
actionYesblock or unblock
labelsYesLabels from get_event_section_inventory
eventKeyYesKey from list_chart_events
releaseAtNoAuto-unblock time, epoch ms; block only
sectionIdYesFrom get_event_sections
expectedInventoryVersionYesinventoryVersion from get_event_section_inventory

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, and the description adds real context beyond them: the required 'Manage live events' permission and the all-or-nothing failure behavior on bad labels or states. It still says nothing about what happens on a stale expectedInventoryVersion or what the call returns, so it stops short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation, then tightly segmented into Use when / Not for / Next / Example. Every line carries information, though the opening sentence is dense and would read faster as a short 'block/unblock seats' statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers permission, atomicity, scope exclusion, the follow-up read, and a full call example. The remaining gap is optimistic-concurrency behavior around expectedInventoryVersion, which an agent calling this tool would want spelled out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the concrete example raises it: it shows the actual id shapes for eventKey ('ev_...'), sectionId ('sec_...'), the label format ('A-1'), and how expectedInventoryVersion and action are supplied together. It does not illustrate the optional releaseAt, which is the one parameter whose semantics could use help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb (take off sale / release) and resource (free seats in one section of an event not yet on sale), and the 'Not for' line separates it from plan_inventory_change. The phrasing 'Take free seats ... off sale' is slightly convoluted and has to be parsed, which keeps it from a 5, but the operation and its scope are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' with a worked example ('hold A1-A10' during setup), an explicit 'Not for' naming the alternative (plan_inventory_change for events on sale), and a 'Next:' step pointing at get_event_section_inventory. The agent knows when to pick this tool, when to pick the sibling, and what to do afterwards.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_event_section_statesSet Event Section StatesA
Destructive
Inspect

Open, close (visible, not for sale) or hide whole sections of an event not yet on sale. Use when: e.g. "close the balcony" while the event is in setup. Needs "Manage live events" (publish permission in Designer); bookings are kept. Not for: an event on sale (use plan_inventory_change open_sections, close_sections or hide_sections), or single seats. Next: get_event_sections. Example: {"eventKey": "ev_1350a828b5ff", "updates": [{"sectionId": "sec_a1b2c3", "state": "closed"}], "expectedInventoryVersion": 42}

NameRequiredDescriptionDefault
updatesYessectionId and state per section
eventKeyYesKey from list_chart_events
expectedInventoryVersionYesinventoryVersion from get_event_sections

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds value beyond them: the required 'Manage live events' permission, the reassurance that bookings are kept, the precondition that the event must not be on sale, and the optimistic-concurrency guard via expectedInventoryVersion. That is exactly the extra context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then segmented into Use when / Not for / Next / Example. Every line carries operational information; no filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description covers permission needs, preconditions, data-preservation guarantees, the correct sibling for the out-of-scope case, and the follow-up verification step. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents eventKey, updates and expectedInventoryVersion on its own (baseline 3). The description lifts this by supplying a concrete call example showing a full updates entry and a plausible version value, and by pointing at get_event_sections as the source of expectedInventoryVersion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb set (open, close, hide) against a specific resource (whole sections of an event not yet on sale), and clarifies that 'closed' means visible-but-not-for-sale. The scope qualifier 'not yet on sale' immediately separates it from inventory-planning siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' example ('close the balcony' during setup) plus an explicit 'Not for' clause that names the alternative tool and even its specific parameters (plan_inventory_change open_sections/close_sections/hide_sections) for events already on sale, and excludes single seats. Nothing 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.

set_object_entranceSet EntranceA
DestructiveIdempotent
Inspect

Tell buyers which gate to use: sets the entrance of sections, rows, tables, booths or standing areas to a gate. A section is set with all of its parts, and its rows follow it. Use when: e.g. "sections 101 to 105 enter by Gate A", after place_gate, or for the areas list_gates says have no entrance. gateId null clears it. Not for: a free-text entrance with no gate on the map (use update_sections entrance). Next: list_gates to confirm the entrance check passes. Example: {"sectionIds": ["sec_a1b2c3", "sec_d4e5f6"], "gateId": "gate_a1b2c3", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
gateIdYesGate id from list_gates; null clears the entrance
objectIdsNoRow, table, booth or standing-area ids, for places outside any section
sectionIdsNoSection ids from get_chart
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.6/5.0
Behavior4/5

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 behavior annotations don't: the cascade to a section's rows and parts, and that gateId null clears the entrance. It does not spell out what 'destructive' means in practice (e.g. overwriting existing entrances or failure modes when expectedUpdatedAt is stale), so it stops short of full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then labeled Use when / Not for / Next / Example sections. Every line carries routing or invocation information; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation with no output schema, the description covers target, trigger, exclusion, follow-up and an example. Remaining gaps are modest: it doesn't state whether sectionIds and objectIds can be mixed in one call, or cross-chart constraints, which matter for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns above baseline by restating that null clears the entrance and by supplying a worked example that shows how sectionIds, gateId and expectedUpdatedAt compose for a single call. objectIds and expectedUpdatedAt semantics beyond 'meta.updatedAt' are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource: 'sets the entrance of sections, rows, tables, booths or standing areas to a gate', and adds the cascade rule that a section is set with all its parts and its rows follow. It also names the case it does not cover (free-text entrance via update_sections), so an agent can separate it from update_sections and place_gate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' triggers (e.g. 'sections 101 to 105 enter by Gate A', after place_gate, or for areas list_gates reports as having no entrance), an explicit 'Not for' with the alternative tool, and a 'Next' step to confirm with list_gates. When/when-not/alternatives are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_row_spacingSet Row SpacingB
Destructive
Inspect

Set an even gap between rows, or straighten and space them evenly. Use when: e.g. "more legroom in rows A-F". Example: {"rowIds": ["row_a1b2c3", "row_d4e5f6"], "gap": 36, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
gapNoChart units (28 normal); unless straightenAndSpaceEvenly
rowIdsYes2-100 row ids from get_chart, no repeats
floorIdNoFloor id; default: first floor
expectedUpdatedAtYesmeta.updatedAt from get_chart
straightenAndSpaceEvenlyNoStraighten and space evenly; ignores gap

TDQS

B3.4/5.0
Behavior3/5

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 communicated structurally. The description adds the important behavioral fact that straightenAndSpaceEvenly ignores gap, but it never says what destruction occurs (seat positions moved/dropped?) or that expectedUpdatedAt is a conflict guard.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines with the core action front-loaded and an example at the end; nothing is padded. It is terse to the point of omitting prerequisites, but structurally sound.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation over up to 100 rows, the description omits what happens to existing seats, whether the operation is reversible, and what a success response contains (no output schema). Schema annotations fill some gaps, but the behavioral picture is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so gap units, rowIds bounds, floorId default, and expectedUpdatedAt all carry their own documentation. The description's worked example is mildly helpful for concreteness but adds no semantics the schema lacks, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Set an even gap between rows') and covers the alternate mode ('straighten and space them evenly'). An agent can tell this mutates row geometry, though the boundary with siblings like update_rows or update_row_block_style is not stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when: e.g. "more legroom in rows A-F"' gives a scenario cue, which is more than nothing. But there is no exclusion or named alternative for when spacing changes should instead go through update_rows, so the routing is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_shape_configurationsSet Shape Configuration MembershipA
DestructiveIdempotent
Inspect

Include or leave out one shape in a configuration; saves a new draft version. Use when: e.g. "the thrust is only used for concerts". Next: submit_event_configuration. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "objectId": "shape_thrust01", "enabled": true, "expectedParentRevision": 3}

NameRequiredDescriptionDefault
enabledYesInclude or leave out
objectIdYesShape id
configurationIdYesId from list_event_configurations
expectedParentRevisionYesconfiguration.revision from get_event_configuration

TDQS

A3.6/5.0
Behavior3/5

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 known. The description usefully adds that this writes a new draft version rather than affecting the live configuration, but it does not explain what the destructive aspect actually entails (e.g. inventory impact of excluding a shape) or how a stale expectedParentRevision is handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the operation and its side effect in the first clause, then layers use-case, next step, and example in a scannable order. The example is somewhat long relative to the prose but stays relevant; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All four parameters are required and there is no output schema, yet the description never says what comes back (a new revision number? draft id?) or what to do on a revision conflict. For a destructive draft-mutating call in a revisioned workflow, that leaves a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters including expectedParentRevision and enabled are already documented in the schema. The example JSON illustrates a realistic call, which adds modest value, but the description introduces no semantics beyond what the schema fields already say (e.g. what happens to revision on success).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (include/leave out) acting on a single shape within a configuration, plus the side effect of saving a new draft version. It distinguishes itself from siblings like update_shapes by scoping to configuration membership, though it never explicitly names update_event_configuration or submit_event_configuration as the alternative paths for other edits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete when-to-use scenario ("the thrust is only used for concerts") and a workflow pointer ("Next: submit_event_configuration"), so an agent knows where this sits in the draft-to-publish sequence. It does not state when NOT to use it or which sibling handles editing shape geometry instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_view_from_seat_fallbackSet View-From-Seat Fallback PhotoA
DestructiveIdempotent
Inspect

Set or clear one 360° photo shown as the view from every seat without a closer photo. Use when: one panorama for the venue or a floor. Not for: many photos (use create_panorama_manifest_job). Example: {"url": "https://photos.example.com/hall-360.jpg", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
urlYes360° photo URL; null removes
floorIdNoFloor id; default whole venue
metadataNoPhoto settings; null clears
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

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 genuine context beyond that: it explains the fallback layering (only seats lacking a closer photo are affected), which conveys the true blast radius of a destructive mutation, and 'set or clear' signals reversibility. It does not explain what happens when expectedUpdatedAt is stale, which is the remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the core action, then use/avoid guidance, then a concrete call example. Every line carries distinct information with no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation with full schema coverage, rich annotations, and no output schema, the description covers purpose, scope, alternative, and an example. It stops short of describing behavior on optimistic-lock conflict, but nothing an agent needs to select and invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's example illustrates url and expectedUpdatedAt in use and reinforces the null-to-clear semantics from the schema, but adds no format or constraint detail beyond what the schema already documents for floorId and metadata.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (set/clear) and a precise resource (one 360° photo used as the view-from-seat fallback), plus the exact scope: every seat without a closer photo. This distinguishes it cleanly from create_panorama_manifest_job without requiring the agent to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Uses explicit 'Use when' / 'Not for' structure and names the alternative tool (create_panorama_manifest_job) for the many-photo case. The selection condition (one panorama for the venue or a floor) is stated directly, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

split_rowSplit RowA
Destructive
Inspect

Cut a row in two at a seat; a new row gets the rest. Use when: e.g. "split row K after seat 12". Example: {"rowId": "row_a1b2c3", "index": 12, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
indexYesSeats kept in the first row
rowIdYesRow id from get_chart
floorIdNoFloor id; default: first floor
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered; the description adds the meaningful outcome that the remainder moves to a NEW row. It says nothing about whether existing seats/bookings in the row are affected, whether the operation can be undone via merge_rows, or the optimistic-concurrency failure mode, which is a notable 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight lines: behaviour first, trigger second, concrete example third. Every sentence carries information and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, an agent still doesn't know what the call returns (e.g. the new row's id, needed to chain further edits) or what constraints must hold on the source row. What is present is accurate and useful, but the definition is thinner than the operation's blast radius warrants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by supplying a concrete invocation example showing a realistic rowId, an index, and an expectedUpdatedAt value. It still adds no semantics for floorId (default-first-floor) or the concurrency guard beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Cut a row in two") plus the outcome ("a new row gets the rest"), which is unambiguous. It never names a sibling such as merge_rows as the inverse operation, but the operation itself is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The explicit "Use when" trigger with a natural-language example ("split row K after seat 12") tells an agent exactly the situation that selects this tool. There is no when-not guidance or mention of the inverse (merge_rows) for reversal, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_event_configurationSubmit Event ConfigurationA
Idempotent
Inspect

Send a draft configuration version for review. Use when: a draft is ready to check. Next: approve_event_configuration. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "version": 1, "expectedRevision": 1}

NameRequiredDescriptionDefault
versionYesVersion number
configurationIdYesId from list_event_configurations
expectedRevisionYesVersion revision from get_event_configuration

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that this is a state transition into review and what follows it, but says nothing about stale expectedRevision failures, whether the submission can be withdrawn, or what a successful response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three terse lines with the action first, then the condition, then the next step and a concrete example. Nothing is redundant and nothing needs to be read twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param mutation with full annotation coverage and no output schema, the description covers purpose, trigger, and successor step adequately. The main remaining gap is failure behavior around expectedRevision mismatches, which an agent would need to handle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already documents its provenance (list_event_configurations, get_event_configuration). The worked example adds modest value by showing all three fields together and revealing the configurationId format prefix, though it does not explain the optimistic-concurrency role of expectedRevision.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: sends a draft configuration version for review. The workflow position is clarified by naming approve_event_configuration as the next step, which implicitly separates it from approve/publish siblings, though it does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: a draft is ready to check" gives a clear triggering condition, and "Next: approve_event_configuration" routes the agent forward. There is no explicit statement of when NOT to use it (e.g., already-submitted or published configs), but the usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_region_semanticsSubmit Reference Region SemanticsAInspect

Say what each numbered area is (section, floor, zone, aisle, label...), its printed name and how sure you are. Use when: after get_reference_regions; up to 50 areas per call. Guesses stay open questions, never seats for sale. Next: list_unresolved_reference_questions, then propose_reference_blueprint. Example: {"assetId": "ref_3f2b9c1e-4a5d-4e8f-9b0a-1c2d3e4f5a6b", "observations": [{"regionId": "reg_4f1c2a9e7b3d5f8e", "role": "section", "visibleLabel": "Stalls A", "confidence": 0.95, "evidence": "source-visible"}]} Plan still being read: error reference_analysis_pending; wait retryAfterSeconds, then call again.

NameRequiredDescriptionDefault
assetIdYesId from upload_reference_image
observationsYesUp to 50 areas: role, printed label, parent area, confidence, evidence

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-readonly, non-destructive, non-idempotent write operation. The description adds useful operational behavior beyond that: at most 50 areas per call, guesses stay unresolved rather than becoming sale inventory, and the reference_analysis_pending state requires waiting before retrying. It still does not explain overwrite or repeat-submission semantics, so it is strong but not fully exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose, then compresses usage, limits, next steps, an example, and error handling into clearly labeled fragments. Every sentence or clause contributes actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema, explicit annotations, and no output schema, the description provides the workflow context, call limit, retry behavior, and a concrete example needed to invoke this mutation correctly. No critical calling detail appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already carries the formal parameter definitions. The description still adds practical meaning by explaining that observations map each region to its interpreted role, visible label, and confidence, and the example concretely illustrates the expected object shape and field usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: submit semantics for each numbered reference area, including role, printed name, and confidence. It also distinguishes the step from siblings by naming get_reference_regions before it and list_unresolved_reference_questions followed by propose_reference_blueprint afterward.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool ('after get_reference_regions'), gives a per-call limit, clarifies that guesses remain open questions, and names the next workflow steps. The pending-plan error with retryAfterSeconds guidance further removes ambiguity about retrying.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ungroup_segmented_rowUngroup Segmented RowA
Destructive
Inspect

Undo a joined row; its pieces show as separate rows again. Use when: rows were joined by mistake. Example: {"groupId": "rowgroup_a1b2c3", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
groupIdYesThe joined row id from get_chart
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is carried structurally. The description adds the concrete post-state (pieces become separate rows), but says nothing about consequences such as what happens to seat assignments, whether the operation can be reversed with group_segmented_rows, or why expectedUpdatedAt matters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact lines: effect first, trigger condition second, example third. Nothing is redundant and the most important information (what it undoes) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the definition covers the effect and the optimistic-concurrency parameter but not the blast radius (seats/rows affected, reversibility) or what the response contains. Adequate to invoke, thin for judging consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so groupId ("from get_chart") and expectedUpdatedAt ("meta.updatedAt from get_chart") are already fully documented. The inline example reinforces the call shape but adds no semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (undo a joined/segmented row) and the resulting state ("its pieces show as separate rows again"), which clearly marks it as the inverse of group_segmented_rows among siblings. It stops short of naming the sibling tools it complements, but the operation is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: rows were joined by mistake" gives an explicit trigger condition, which is more than most definitions in this set. It does not cover when NOT to use it (e.g. to split a normal row use split_row, or to merge seats use merge_rows), so the routing guidance is incomplete rather than absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_boothsUpdate BoothsA
Destructive
Inspect

Change booths: names, category, booth type, buyer note, entrance. Use when: e.g. "B1-B4 are corner booths". label needs one booth id. Example: {"boothIds": ["booth_m1n2o3"], "boothType": "corner", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
noteNoBuyer note; "" clears
labelNoBooking name; one booth only
floorIdNoFloor id; default: first floor
boothIdsYesBooth ids
entranceNoEntrance, e.g. "Door 4"; "" clears
nameSizeNoSize of its name on the map, 8-24; null resets
boothTypeNoOpen sides; null clears
nameOnMapNoShow its name on the map
categoryKeyNoCategory key from get_chart
displayTypeNoType word buyers see, e.g. "Pit"; "" clears
displayLabelNoBuyer-facing name; "" resets
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the risk profile is known. The description adds the single-booth constraint on `label` and demonstrates `expectedUpdatedAt` in the example, hinting at optimistic concurrency, but it never states what happens on a stale token, that fields not supplied are left untouched, or that one call applies the same values to up to 100 booths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the change surface, then usage, then a runnable example. Nothing is padded, though the 'label needs one booth id' fragment reads as a terse afterthought rather than integrated guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter destructive batch mutation, the definition covers targets and a sample payload but omits the critical semantics: whether the same values are broadcast to all `boothIds`, whether unspecified fields stay unchanged, and the concurrency-failure behavior implied by the required `expectedUpdatedAt`. No output schema exists, so the description should carry more of that burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage the schema already documents every parameter, including clearing semantics ('"" clears', 'null resets') and the `expectedUpdatedAt` provenance. The description adds little beyond restating a few field names and echoing the label constraint that the schema already states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Change booths') and enumerates the mutation surface (names, category, booth type, buyer note, entrance), which separates it from siblings like update_sections, update_tables and set_object_entrance. The word 'names' is slightly ambiguous between `label` and `displayLabel`, but the intent is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies a concrete trigger phrase ("B1-B4 are corner booths") that maps an agent intent to this tool, plus an operational constraint ('label needs one booth id'). It does not name alternatives or exclusions, so an agent must infer that section/table mutations belong to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_chart_categoriesUpdate Chart CategoriesA
Destructive
Inspect

Rename, price, recolour or change the seat shape of categories (the price levels buyers pick from); add ticket options like Adult/Child; or mark one not for sale. Use when: the user names prices, after build_semantic_venue (categories start unpriced), or for colourblind-safe colours (colorblindSafeReassign). Not for: new categories (create_chart_category) or moving seats between them (categoryKey on update_rows, update_sections, update_tables). Next: validate_current_chart. Hard-to-read colours are refused. Example: {"updates": [{"categoryKey": "cat-1", "label": "Premium", "price": 120}, {"categoryKey": "cat-2", "label": "Standard", "price": 80}], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
updatesNoOne entry per category to change (1 to 20). Omit when colorblindSafeReassign is true
expectedUpdatedAtYesmeta.updatedAt from the latest get_chart call
colorblindSafeReassignNotrue gives every category a distinct colourblind-safe colour in one step. Omit updates when set

TDQS

A4.4/5.0
Behavior3/5

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 mutation risk is known. The description still adds real value beyond them: unreadable colours are refused, notForSale parks a category as unsellable, and categories start unpriced after build_semantic_venue. It does not state what happens on a stale expectedUpdatedAt or what the tool returns, which is a notable gap for a destructive write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded verb phrase, then labelled 'Use when', 'Not for', 'Next', and 'Example' blocks. Dense but every clause carries new information; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, fully documented, no-output-schema mutation tool, the description covers selection, alternatives, follow-up and colour refusal. The remaining hole is the response shape and stale-token failure behaviour, which an agent chaining into validate_current_chart would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by supplying a concrete two-category example payload and by framing expectedUpdatedAt usage through the 'the user names prices' scenario. The colorblindSafeReassign mode (mutually exclusive with updates) is described but the description doesn't explain its cost or irreversibility.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the resource (categories, defined in-line as the price levels buyers pick from) and enumerates the specific operations: rename, price, recolour, change seat glyph, add ticket options, mark not for sale. It also explicitly distinguishes itself from create_chart_category and categoryKey on update_rows/update_sections/update_tables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use when' triggers (user names prices, after build_semantic_venue, colorblind-safe colours), an explicit 'Not for' exclusion routing to two sibling patterns, and a 'Next' step pointing at validate_current_chart. Nothing about selection 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.

update_chart_themeUpdate Chart ThemeA
Destructive
Inspect

Set the chart's look and branding: colours, font, seat size, what a section tap shows, brand name, logo, 3D materials. Use when: e.g. "dark background, gold accents". Send only changes; null resets. Not for: category colours (use update_chart_categories). Example: {"background": "#1A1A2E", "accent": "#D4AF37", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
accentNoAccent colour
logoUrlNohttps or data:image logo; null removes
venue3dNo3D materials; needs Event Configurations module
accentInkNoText colour on the accent
brandNameNoBrand name; null removes
decorFillNoDecor fill colour
hideBadgeNoNo effect; kept for old clients
seatScaleNoHow big seats are drawn, 0.15-1.6 (1 = normal); null resets
textColorNoMap text colour
backgroundNoHex; null resets
fontFamilyNoCSS font stack
rowLabelColorNoColour of row labels, hex; null resets
sectionDetailNoBuyer taps a section: rows = category-coloured row lines, then seats; seats = seats at once. Default rows; null resets
seatLabelColorNoColour of seat numbers, hex; null resets
selectionColorNoPicked-seat colour
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false; the description adds the important partial-update contract ("Send only changes; null resets"), which clarifies that omission preserves state while explicit null wipes a field — a real behavioural nuance. The included payload example also shows the optimistic-concurrency token in practice. Gaps: it does not state what happens on a stale expectedUpdatedAt or what the response returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight lines with the capability statement front-loaded, followed by usage, exclusion, and a concrete example. Every sentence carries information; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter destructive mutation with no output schema, the description covers what is being changed, the partial-update/reset contract, and the sibling boundary. It leaves error/precondition behaviour (concurrency conflicts, module dependencies) only to the schema, which is a modest but real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3; the description still adds value by grouping the 16 fields into recognizable theme facets and by showing a realistic multi-field payload containing the required expectedUpdatedAt token. It doesn't add format detail beyond the schema, so it stays below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Set the chart's look and branding") and enumerates the concrete facets covered: colours, font, seat size, section-tap behaviour, brand name, logo, 3D materials. It explicitly distinguishes itself from update_chart_categories, so an agent can tell the two apart without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit trigger example ("dark background, gold accents"), an explicit exclusion with the named alternative for category colours, and an operational rule ("Send only changes; null resets"). When-to-use, when-not-to, and alternative routing are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_chart_zonesUpdate Chart ZonesA
Destructive
Inspect

Rename or recolour zones, or set which stage they face. Use when: e.g. "call the upper zone Balcony". Example: {"updates": [{"zoneId": "zone_a1b2c3", "label": "Balcony"}], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
updatesYesPer zoneId: label, color, or which stage it faces
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=false, so the safety profile is covered. The description adds no behavior beyond that: it doesn't say whether a batch of updates is atomic, what happens on a stale expectedUpdatedAt, or how partial failures are reported. The example clarifies shape but not semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the action before the usage note and example. The example earns its space by showing the wrapper object shape. Minor redundancy between "rename" and the Balcony example, but no real padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with a nested update array, 100% schema coverage and no output schema, the description covers the essentials. It is still silent on optimistic-concurrency failure behavior, per-item atomicity, and the 100-item batch cap, which matter when planning a call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents expectedUpdatedAt as "meta.updatedAt from get_chart" and the updates array. The description reinforces this with a concrete JSON example, but leaves color format, copyFromZoneId, and useGlobalFocal entirely to the schema — a solid baseline of 3, not more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb set (rename, recolour, set facing stage) against a specific resource (zones), which clearly separates it from create_chart_zone and delete_chart_zone. It doesn't explicitly distinguish itself from adjacent mutators like update_chart_theme or relabel_sections, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "Use when" line plus a worked example ("call the upper zone Balcony") gives a concrete triggering scenario, so an agent knows when this is the right tool. There are no exclusions or named alternatives (e.g. create vs update vs delete a zone), which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_eventUpdate EventA
DestructiveIdempotent
Inspect

Change an event's name, venue, doors or end time, description, language, ticket limits or reference; its start and time zone only while in setup. Use when: e.g. "rename the Friday show", "doors open at 7", "max 6 tickets per order". Needs "Create and run events". A start change once on sale goes through plan_inventory_change (edit_live_event_date). Next: get_event. Example: {"eventKey": "ev_1350a828b5ff", "name": "Diwali Night"}

NameRequiredDescriptionDefault
nameNoNew event name
venueNoNew venue name or address
endsAtNoWhen it ends, ISO with offset; null clears
localeNoBuyer page language, e.g. hi-IN; null: automatic
doorsAtNoWhen the doors open, ISO with offset; null clears
eventKeyYesKey from find_events or list_chart_events
startsAtNoNew start (setup only); doors and end move with it, ISO 8601 with its UTC offset, e.g. 2026-11-14T19:30:00+05:30
timezoneNoNew IANA time zone (setup only)
descriptionNoWhat buyers read about the event; null clears
externalRefNoYour own reference for the event; null clears it
maxTicketsPerBuyerNoMost tickets per buyer (1-1000); null: default
maxTicketsPerOrderNoMost tickets in one order (1-100); null: default

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety profile (destructiveHint=true, idempotentHint=true), and the description adds behavior those annotations cannot express: the permission gate and the state-dependent constraint that startsAt/timezone are only mutable while the event is in setup, with a named alternative agent path once on sale. That setup-only restriction is the single most consequential behavioral fact about this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the mutability scope, followed by usage, permissions, the alternative path, and a worked example call — every element earns its place. The semicolon-chained first sentence is dense enough to require a second read, which costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with no output schema, the description covers mutability scope, permissions, restrictions, and next step, and the schema covers all field semantics. It stops short of describing failure modes (invalid ranges, edits on live events) which would matter for a destructive, non-reversible update.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter carries its own description, so the schema already does the heavy lifting. The description adds field grouping and the setup-only caveat, but it duplicates rather than extends what the schema states per-field. Baseline 3 is the right level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Change an event's") and enumerates exactly which fields are mutable, splitting them into always-editable versus setup-only. An agent can immediately tell this apart from create_event, duplicate_event, or the configuration tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete trigger phrases ("rename the Friday show", "doors open at 7"), states the required permission ("Create and run events"), and explicitly routes the post-on-sale start-change case to plan_inventory_change (edit_live_event_date). It also names the natural follow-up ("Next: get_event").

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_event_chartUpdate Event Map to LatestA
Destructive
Inspect

Move an event not yet on sale onto the latest published chart, keeping its blocks. Use when: a published change should reach an event in setup. On sale: plan_inventory_change move_event_to_chart instead. Needs "Manage live events" (publish permission in Designer). Refused if a blocked or channel seat would vanish; acknowledgeDroppedAssignments only after a person checks. Next: get_event_sections. Example: {"eventKey": "ev_1350a828b5ff"}

NameRequiredDescriptionDefault
reasonNoKept in the event history
eventKeyYesKey from list_chart_events
acknowledgeDroppedAssignmentsNoOnly after a person checked the refused channel seats

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (destructiveHint=true, idempotentHint=false) by explaining the actual failure mode — refusal when a blocked or channel seat would vanish — and that acknowledgeDroppedAssignments is a human-gated override. It also names the required permission ('Manage live events', publish in Designer), which the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six short, front-loaded lines: purpose, when, alternative, permission, refusal semantics, next step, example. No filler sentences and every line carries decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers prerequisites, refusal behavior, the human-approval gate, and the follow-up call. An agent has everything needed to call it correctly or to decline and escalate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns a bump by explaining the trigger condition under which acknowledgeDroppedAssignments becomes relevant ('Refused if a blocked or channel seat would vanish') and by supplying a concrete eventKey example. It adds little about 'reason' beyond the schema, so it stops short of 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Move an event ... onto the latest published chart') with the key scoping constraint ('not yet on sale', 'keeping its blocks'), and explicitly names the sibling used for the on-sale case. An agent can distinguish this from plan_inventory_change without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit 'Use when' condition (a published change should reach an event in setup), an explicit exclusion routing to plan_inventory_change move_event_to_chart for on-sale events, and a named next step (get_event_sections). Nothing about tool selection 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.

update_event_configurationCreate Event Configuration VersionA
Destructive
Inspect

Save a changed configuration as its next draft version; send the whole setup. Older versions stay. Use when: changing a configuration's objects or removed seats. Not for: switching one shape (use set_shape_configurations). Next: submit_event_configuration. Example: {"configurationId": "ec_4f1c2a9e7b3d5f8e0a2c4e6b8d1f3a5c", "expectedParentRevision": 3, "label": "Concert", "overlay": {"objectIds": [], "productionKillSeatIds": []}}

NameRequiredDescriptionDefault
labelYesSetup name
overlayYesThe complete new setup
configurationIdYesId from list_event_configurations
expectedParentRevisionYesconfiguration.revision from get_event_configuration

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: draft-versioning is non-destructive to history ('Older versions stay'), the payload is a wholesale replacement rather than a diff ('send the whole setup'), and the call is one step before submit_event_configuration. There is mild tension with destructiveHint=true, which an agent may read as overwriting, and it does not state what happens on an expectedParentRevision mismatch — but neither is a contradiction of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded imperative sentence, then labelled lines for use/not-for/next, then a compact JSON example. Every line earns its place and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, deeply nested schema with no output schema, the description supplies versioning semantics, replacement semantics, and the downstream step. It omits what the call returns (new revision or version id) and how revision conflicts surface, which an agent needs to chain correctly into submit_event_configuration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does add two useful things: the 'whole setup' wording clarifies that overlay is a full replacement rather than a patch, and the worked example shows a realistic configurationId/expectedParentRevision/label/overlay payload. It says nothing about the optimistic-concurrency token's failure behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Save a changed configuration as its next draft version', which is precise about both the mutation and its versioning semantics. It distinguishes itself from set_shape_configurations but never differentiates from create_event_configuration, the closest-named sibling that also produces configuration versions (and whose framing matches the title 'Create Event Configuration Version').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when: changing a configuration's objects or removed seats', an explicit exclusion with a named alternative ('Not for: switching one shape, use set_shape_configurations'), and a workflow pointer ('Next: submit_event_configuration'). Missing only the create_event_configuration vs. update_event_configuration boundary, which is the most likely routing mistake an agent could make here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ga_areasUpdate GA AreasA
Destructive
Inspect

Change standing areas: names, category, capacity, wheelchair places, and per-person or one-party sale. Use when: e.g. "make the pit 800". label needs one area id. Example: {"gaAreaIds": ["ga_s7t8u9"], "capacity": 800, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
labelNoBooking name; one area only
floorIdNoFloor id; default: first floor
capacityNoPeople it holds
entranceNoEntrance, e.g. "Door 4"; "" clears
nameSizeNoSize of its name on the map, 8-24; null resets
gaAreaIdsYesStanding-area ids
nameOnMapNoShow its name on the map
bookingModeNostanding per person, or sold to one party (whole, variable)
categoryKeyNoCategory key from get_chart
displayTypeNoType word buyers see, e.g. "Pit"; "" clears
cornerRadiusNoCorner rounding on the map
displayLabelNoBuyer-facing name; "" resets
maxOccupancyNoMax party (variable)
minOccupancyNoMin party (variable)
wheelchairPlacesNoPlaces for wheelchair users
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.6/5.0
Behavior3/5

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 by structured data. The description adds useful context about what can be modified and an example payload, but never mentions that changes are destructive to the existing chart state, nor how the required expectedUpdatedAt behaves as an optimistic-concurrency guard when it is stale.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the verb and resource, then the usage trigger, then a compact example — nothing wasteful. Minor polish issues: the guidance and the constraint are glued into one line with an awkward quote,

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter, non-idempotent destructive mutation with no output schema, the description covers the field families and the concurrency token's origin, which is the essential part. But it is silent on batch semantics across up to 100 gaAreaIds, on whether omitted fields are left untouched, and on what the agent should expect if expectedUpdatedAt is stale.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 16 parameters are already documented, which sets the baseline at 3. The description reinforces the editable set and supplies a worked example for gaAreaIds/capacity/expectedUpdatedAt, but adds no new semantics — and it leaves the important maxItems=100 batch question (are all listed areas set to identical values?) unanswered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific mutation ("Change standing areas") and enumerates the editable attribute families — names, category, capacity, wheelchair places, sale mode — which clearly separates it from the add_ga_area / join_ga_areas siblings. It stops short of naming an alternative outright, so it is clear but not fully differentiated in prose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: e.g. 'make the pit 800'" gives a concrete trigger condition, and "label needs one area id" warns about a precondition on a specific field. There are no when-not conditions and no sibling alternative is named (e.g. add_ga_area for new areas, join_ga_areas for merging), so the routing guidance is clear but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_gateUpdate GateA
DestructiveIdempotent
Inspect

Rename a gate, change what it is for (in, out or both), mark it step-free, say when it opens, or hide it from buyers. The areas it serves show the new name. Use when: e.g. "Gate A opens 90 minutes before", "make Gate B exit only". Passing the id of an Entrance or Exit landmark makes it a named gate. Not for: moving a gate (add one with place_gate, remove the old one with delete_chart_objects). Next: list_gates. Example: {"gateId": "gate_a1b2c3", "opens": "90 min before", "stepFree": true, "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
useNoin, out or both
nameNoNew name
opensNoWhen it opens, in words; null or "" clears it
gateIdYesGate id from list_gates, or an Entrance/Exit landmark id to make it a gate
stepFreeNoLevel or ramped, no stairs
hideFromBuyersNoOrganizer-only gate: buyers see no sign and no "Enter by" line
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring destructiveHint=true and idempotentHint=true, the description still adds real context: "The areas it serves show the new name" discloses a cross-object side effect the annotations cannot express, and the Entrance/Exit landmark note explains an implicit type-coercion behavior. It stops short of explaining the optimistic-locking consequence of expectedUpdatedAt (what happens on a stale value), which is the one behavioral gap left.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded capability sentence, then labeled Use when / Not for / Next / Example blocks. Every sentence carries distinct information — no restatement of the tool name and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation with no output schema, the definition covers what changes, the rename side effect, the sibling alternatives, and the follow-up read. It leaves the concurrency contract (why expectedUpdatedAt is required, and the failure mode on mismatch) to the schema's one-line hint, which is the main thing an agent could still get wrong.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by framing the fields as independently optional ("rename..., change..., or hide...", backed by a partial example) which the schema does not state through any required-set constraint. It also clarifies that the gateId may be a landmark id rather than only a gate id, adding semantics beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the specific verb set (rename, change use, mark step-free, set opens, hide) applied to a concrete resource, a gate. It also names what the tool is not for and points to the sibling that handles that case (place_gate, delete_chart_objects), so an agent can separate update_gate from place_gate without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is stated explicitly with trigger examples ("Gate A opens 90 minutes before", "make Gate B exit only"), an exclusion ("Not for: moving a gate") with the alternative tools named, and a follow-up step ("Next: list_gates"). This is the when/when-not/alternative pattern at full strength.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_row_block_styleUpdate Row Block StyleA
DestructiveIdempotent
Inspect

Switch a styled row block between lined-up and staggered seats. Use when: the block came from add_row_block with blockStyle; refused after hand edits. Example: {"groupId": "rowblock_a1b2c3", "blockStyle": "intertwined", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
groupIdYesRow block id from get_chart
blockStyleYesintertwined shifts every other row half a seat
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/destructive/idempotent profile, and the description adds meaningful context on top: the tool only applies to blocks created with blockStyle and will refuse blocks that have been hand-edited. It does not explain what the destructive mutation actually overwrites (seat positions or manual assignments), leaving that inference to the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact lines: purpose first, then usage condition and failure mode, then a single worked example. No filler, and the most decision-relevant sentence is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param mutation with full schema coverage, no output schema, and complete annotations, the description covers purpose, precondition, refusal mode, and a call example. The remaining gap is the consequence of the destructive flag — whether existing seat assignments are discarded — which an agent would want before invoking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum's effect is documented ("intertwined shifts every other row half a seat"), so the schema already carries most semantics. The inline example adds marginal value by showing the groupId format ("rowblock_a1b2c3") and a realistic expectedUpdatedAt value, clarifying it as a concurrency token.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Switch a styled row block") plus the two target states (lined-up vs staggered), which maps directly to the enum. It also traces its origin to add_row_block, separating it from generic row mutators like update_rows or set_row_spacing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when: the block came from add_row_block with blockStyle" gives a clear precondition, and "refused after hand edits" states when the tool will fail. It stops short of naming an explicit alternative for hand-edited blocks, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_rowsUpdate RowsA
Destructive
Inspect

Change rows: names, category, seat count, curve, numbering, labels, aisle seats, sale notes, view photo. Use when: e.g. "make rows A-C VIP" or "number row K right to left". label needs one row id. Not for: single seats (use update_seats) or naming in sequence (use relabel_rows). Example: {"rowIds": ["row_a1b2c3"], "categoryKey": "cat_vip", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
labelNoRow name used for booking; one row only
rowIdsYes1-100 row ids from get_chart, no repeats
floorIdNoFloor id; default: first floor
numberingNoSeat numbering: direction, step, scheme, prefix, startAt or endAt
seatCountNoSeats in the row, 1-300
aisleSeatsNoAisle-seat ends; null = unmarked
commercialNoRow sale notes; replaces the whole set
curveStyleNostraight, gentle, medium or strong
labelStyleNoRow name size, colour, visibility
categoryKeyNoCategory key from get_chart
displayTypeNoWord instead of "Row"; "" clears
displayLabelNoRow name buyers see; one row only
labelPositionNoWhere the row name shows
viewFromSeatUrlNohttps view photo; null removes
expectedUpdatedAtYesmeta.updatedAt from get_chart
labelPresentationNoRow name rotation and style

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the mutation profile is covered structurally. The description adds the single-row constraint for label and implies field-level replacement, but says nothing about the effect of expectedUpdatedAt mismatches, whether unspecified fields are preserved, or what a successful response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded action statement, then use-when, exclusions, and a compact JSON example—each element earns its place with no redundancy. The agent can parse scope and routing in a single pass.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter batch mutation with no output schema, the description covers purpose, scope, alternatives and a valid example. Remaining gaps are concurrency semantics for expectedUpdatedAt and the return shape, but annotations plus a fully documented schema absorb most of that burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so per-field documentation is already handled; the baseline would be 3. The description nonetheless adds value by naming the mutable attribute families and by surfacing the cross-parameter constraint that label/displayLabel apply to exactly one row, which the schema only states per-field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (change/update) and resource (rows), then enumerates the mutable attributes—names, category, seat count, curve, numbering, labels, aisle seats, sale notes, view photo. It explicitly names sibling tools update_seats and relabel_rows so the agent can distinguish scope without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete triggering utterances ("make rows A-C VIP", "number row K right to left") and an explicit exclusion clause routing single seats to update_seats and sequential naming to relabel_rows. It also states a precondition: label requires one row id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_seatsUpdate SeatsA
DestructiveIdempotent
Inspect

Change single seats or chairs: category, number, out of sale, accessibility, view notes, shape, style, photo. Use when: e.g. "A1 and A2 are wheelchair spaces". All or none change. Not for: whole rows or sections (use update_rows, update_sections). Example: {"seatIds": ["row_a1b2c3:0"], "accessibility": ["wheelchair"], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
glyphNoHow the seat is drawn; auto or null follows the category
labelNoBooking number; one seat only
floorIdNoFloor id; default: first floor
seatIdsYesIds from get_row_seats or get_table_chairs
skippedNotrue takes seats out of sale
commercialNoSale notes: restricted, obstructed, premium, note
labelStyleNoNumber size and colour
categoryKeyNoCategory key; null follows the row
labelPrefixNoRenumber as prefix + 1, 2, 3
displayLabelNoBuyer-facing name; one seat only
accessibilityNoAccessibility types; null clears
viewFromSeatUrlNohttps or data:image; null removes
expectedUpdatedAtYesmeta.updatedAt from get_chart
displayLabelPrefixNoBuyer names as prefix + 1, 2, 3
wheelchairSpaceTypeNono-seat = empty wheelchair bay

TDQS

A4.4/5.0
Behavior4/5

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 genuinely new behavior — 'All or none change' (atomic batch semantics) and a concrete request example showing expectedUpdatedAt usage — but never states what an update overwrites or what happens on a stale timestamp.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded verb+resource, then labeled 'Use when' / 'Not for' / 'Example' blocks. Every line carries routing or behavioral information; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation tool with no output schema, it supplies scope, atomicity, an input example and sibling routing. It does not cover ordering of batches, the stale expectedUpdatedAt failure mode, or the response shape, which keeps it short of full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented and the baseline of 3 applies. The description restates a subset of fields in prose ('category, number, out of sale, ...') without adding format or conflicting-value guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change single seats or chairs') and enumerates the mutable facets (category, number, accessibility, shape, style, photo). It explicitly separates itself from update_rows and update_sections, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Has an explicit 'Use when' example ('A1 and A2 are wheelchair spaces') and a 'Not for' exclusion naming the two sibling tools to use instead. The condition selecting this tool over row/section tools is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_sectionsUpdate SectionsA
Destructive
Inspect

Change sections: name, category of everything inside, zone, colour, entrance, view photo, 3D height and rake, curves. Use when: e.g. "section 101 is VIP" or "balcony 8 m up". label needs one section id. Not for: sequences (use relabel_sections) or single seats (use update_seats). Example: {"sectionIds": ["sec_a1b2c3"], "categoryKey": "cat_vip", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
rakeNoSeating rise in degrees
colorNoHex tint; null removes
labelNoBooking name; one section only
heightNoFront-edge height in metres; null = tier
zoneIdNoZone id; null removes from zone
floorIdNoFloor id; default: first floor
entranceNoEntrance, e.g. "Door 4"; null clears
elevationNoTier 0-3, used when height is unset
labelStyleNoName size, colour, visibility
sectionIdsYesSection ids
categoryKeyNoCategory key for everything inside
surfaceKindNo3D floor; null = automatic
displayLabelNoBuyer-facing name; one section only
edgeCurvatureNoOne bow per edge (0 straight); one section only
cornerSmoothingNo0 = sharp corners
viewFromSeatUrlNo360° view photo URL; null removes
viewFromSeatMetaNoPhoto settings; null clears
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a destructive, non-idempotent, non-read-only write, and the description does not contradict them. It adds genuinely operational context not in the annotations: that certain fields (label, edgeCurvature) are single-section only, and the example surfaces the required optimistic-concurrency token expectedUpdatedAt. It stops short of saying what happens on a stale token or confirming that omitted fields are left untouched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the payload-capable fields, then when-to-use, then exclusions, then a compact runnable example — no filler sentences. The prose field list is slightly blob-like ('3D height and rake, curves'), but every line earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter batch mutation with nested objects and no output schema, the definition covers trigger, exclusions, single-section constraints, and a valid call shape including the required concurrency token. Remaining gaps — return value, conflict behavior on expectedUpdatedAt mismatch, and batch semantics across up to 100 section ids — are modest but real for a destructive tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including per-field notes like 'null removes', 'one section only', and 'meta.updatedAt from get_chart', so the schema carries nearly the entire burden. The description mostly re-enumerates those same fields (colour, height, rake, curves) in prose without adding syntax or interaction rules beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (change) plus resource (sections) and enumerates the mutable aspects: name, category of contents, zone, colour, entrance, view photo, 3D height/rake, curves. That vocabulary maps cleanly onto the schema's fields, so an agent can tell this is a mutation tool for section properties rather than rows, seats, or sequences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger phrases ("section 101 is VIP", "balcony 8 m up"), an explicit exclusion list naming the alternatives with their own tool names (relabel_sections for sequences, update_seats for single seats), and an inline constraint reminder that label applies to one section id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_segmented_rowUpdate Segmented RowA
DestructiveIdempotent
Inspect

Rename a joined row or change which joins are aisles. An aisle whose seats touch gets one empty seat of space. Use when: fixing a row made by group_segmented_rows. Not for: undoing it (use ungroup_segmented_row). Example: {"groupId": "rowgroup_a1b2c3", "displayLabel": "K", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
groupIdYesJoined row id
smoothingNoDraw as one smooth line
boundariesNoOne per join; break = aisle
displayLabelNoRow name buyers see
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds a genuinely non-obvious side effect: "An aisle whose seats touch gets one empty seat of space," which warns that seat layout shifts on write. The example also exposes the optimistic-concurrency pattern around expectedUpdatedAt. It stops short of saying what is destroyed for a destructiveHint=true mutation (e.g. whether seats are renumbered or dropped).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short labeled lines — purpose, when, not-for, example — with the core action front-loaded. No sentence is filler, and the alternative tool is named inline rather than in prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, idempotent mutation with no output schema, the description supplies the prerequisite state (a row produced by group_segmented_rows), the inverse operation, and a valid call shape. It omits the return value and whether the caller must re-read the chart after seat spacing changes, which an agent would still need to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented, which sets the baseline at 3. The description adds conceptual framing for the boundaries parameter ("change which joins are aisles") and a concrete sample payload, but says nothing about floorId, smoothing, or displayLabel beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource pair: rename a joined row, or change which joins are aisles. It distinguishes itself from the sibling group_segmented_rows (which creates rows) and ungroup_segmented_row (the inverse), so an agent can pick it 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit "Use when: fixing a row made by group_segmented_rows" plus an explicit exclusion, "Not for: undoing it (use ungroup_segmented_row)". Both the trigger condition and the alternative are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_shapesUpdate Shape PresentationA
Destructive
Inspect

Restyle shapes and stages: label, stage caption direction, fill, outline, corners, opacity, 3D height, rotation, arrows, curves. Use when: e.g. "make the stage black". label and edgeCurvature need one shape id. Not for: stage kind (use update_stage_kinds) or moving shapes (Designer only). Example: {"shapeIds": ["shape_a1b2c3"], "fill": "#1F2937", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
fillNoHex colour; null resets
labelNoShape label; one shape only
strokeNoOutline colour and width; null removes
floorIdNoFloor id; default: first floor
heightMNo3D height in metres; null = default
lineCapNoLine shapes only
opacityNonull = fully solid
lineJoinNoLine shapes only
rotationNoDegrees clockwise about its centre
shapeIdsYesShape or stage ids
endEndingNoLine shapes only
labelStyleNoStage caption; stages only
startEndingNoLine shapes only
cornerRadiusNoRectangle corner rounding; null = square
edgeCurvatureNoOne bow per side (0 straight); one custom-outline shape only
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is known. The description adds the single-shape-id constraint for label/edgeCurvature and shows expectedUpdatedAt usage in the example, but it never says whether omitted fields are preserved or cleared, nor warns that existing styling is overwritten despite destructiveHint=true. Useful but not rich 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines: verb plus property inventory, a use trigger, exclusions, then a ready-to-adapt JSON example. The property list is long but it is the payload, not padding, and everything is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter, nested-object mutation with no output schema, the description covers scope, exclusions, per-property constraints, and the optimistic-concurrency token via the example. The remaining gap is partial-update semantics (what happens to fields not supplied) and any permission expectation, which an agent would still have to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns credit for mapping opaque parameter names to domain concepts: 'arrows' covers startEnding/endEnding, 'curves' covers edgeCurvature, 'corners' covers cornerRadius. It also restates the one-shape-only rule for label and edgeCurvature, which is easy to miss among 16 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb ('Restyle') and resource ('shapes and stages'), then enumerates the exact properties it touches (fill, outline, corners, opacity, 3D height, rotation, arrows, curves). An agent can immediately tell this is a presentation-only mutation versus a geometry tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete trigger example ('make the stage black'), an explicit exclusion with the correct alternative ('Not for: stage kind (use update_stage_kinds)'), and a second exclusion ('moving shapes (Designer only)'). This is the when/when-not/alternatives triad done properly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_stage_kindsUpdate Stage KindsA
Destructive
Inspect

Change a stage's kind, e.g. to thrust or a football pitch; redrawn in place. Use when: e.g. "make it a thrust stage". Example: {"updates": [{"stageId": "shape_a1b2c3", "stageKind": "thrust"}], "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
floorIdNoFloor id; default: first floor
updatesYesOne per stage
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety bar is lower. The description adds "redrawn in place", hinting that the stage geometry is regenerated rather than patched, and the example payload reveals the batch-plus-concurrency-token shape. It still does not say whether custom edits or dependent objects on the stage are lost when the kind changes, which is the main behavioral question for a destructive op.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines: what it does, when to reach for it, and a compact example. The purpose is front-loaded and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation with full schema coverage and no output schema, the description plus annotations cover what an agent needs to call it. It omits what happens on a stale expectedUpdatedAt conflict and how floorId defaults interact with stage lookup, which are the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline would be 3. The embedded example adds real value beyond the schema by showing a fully instantiated payload – a one-element update with stageId and enum stageKind plus a plausible expectedUpdatedAt – making the batch array and optimistic-concurrency field concrete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Change a stage's kind") and enumerates example kinds (thrust, football pitch), so an agent knows exactly what is mutated. It does not explicitly distinguish the tool from nearby siblings such as update_shapes, set_shape_configurations, or add_stage, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "Use when: e.g. 'make it a thrust stage'" line supplies a concrete trigger phrase that an agent can pattern-match against user requests. However, it offers no when-not guidance and never names an alternative tool (e.g. use update_shapes for other geometry edits), so routing between siblings is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_tablesUpdate TablesA
Destructive
Inspect

Change tables: names, category, chairs, shape, how sold (per chair, whole, party size), numbering, entrance. Use when: e.g. "sell table 12 whole". label needs one table id. Not for: single chairs (use update_seats). Example: {"tableIds": ["table_d4e5f6"], "bookingMode": "whole", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
labelNoBooking name; one table only
shapeNoround or rect
floorIdNoFloor id; default: first floor
seatArcNoRound tables: degrees of chairs
entranceNoEntrance, e.g. "Door 4"; "" clears
nameSizeNoSize of its name on the map, 8-24; null resets
tableIdsYesTable ids
nameOnMapNoShow its name on the map
seatCountNoChairs per table, 1-40
seatSidesNoRect tables: sides with chairs
bookingModeNoPer chair, whole table, or party size (variable)
categoryKeyNoCategory key from get_chart
displayTypeNoType word buyers see; "" clears
displayLabelNoBuyer-facing name; "" resets
maxOccupancyNoMax party (variable)
minOccupancyNoMin party (variable)
chairNumberingNoBuyer chair numbering; null resets
seatCountsBySideNoRect tables: chairs per side
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description adds an example invocation and the single-table-label constraint, but does not explain the blast radius of a destructive update (e.g. whether changing shape resets chair numbering or seat assignments) or the role of expectedUpdatedAt as an optimistic-concurrency guard.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the mutable field list, then the when/not-for routing, then a compact JSON example. Three short blocks, no filler, and the most decision-relevant information comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, routing, exclusion and a worked example for a 19-parameter destructive mutation whose parameters are fully documented in the schema and whose safety is covered by annotations. The remaining gap is the concurrency/versioning semantics of expectedUpdatedAt, which the schema labels but does not explain behaviorally.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 19 parameters is already documented in the schema with ranges, enums and reset semantics. The description only reinforces a couple of them (bookingMode 'whole', label single-table rule), so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Change) plus the resource (tables) and enumerates the mutable attributes: names, category, chairs, shape, booking mode, numbering, entrance. It explicitly distinguishes itself from the sibling update_seats by scoping to whole tables, so an agent can pick it without reading either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete 'Use when' example ('sell table 12 whole') and an explicit 'Not for: single chairs (use update_seats)' alternative. It also flags the precondition that label applies to one table id only, which is a real routing constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_textsUpdate Text PresentationA
Destructive
Inspect

Change text labels and icons: wording, size, font, colour, style, icon, zoom visibility. Use when: e.g. "rename the sign to Main Entrance". content needs one text id. Not for: new text (Designer only) or section names (use relabel_sections). Example: {"textIds": ["text_k2m9p0"], "content": "Main Entrance", "expectedUpdatedAt": 1790000000000}

NameRequiredDescriptionDefault
boldNotrue for bold, false for normal
colorNoHex colour; null resets
italicNotrue for italic, false for upright
contentNoNew wording; one text only
floorIdNoFloor id; default: first floor
iconKeyNoIcon objects only, e.g. entrance, exit, bar, first-aid, restrooms
textIdsYesText or icon ids
fontSizeNoFont size, 8-72
fontFamilyNoCSS font stack; null = theme font
labelImportanceNoorientation: readable at every zoom; detail: only zoomed in
expectedUpdatedAtYesmeta.updatedAt from get_chart

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, so the description need not re-state that this is a mutation. It does add one genuinely new behavioral rule ('content needs one text id'), but it never explains optimistic concurrency — that a stale expectedUpdatedAt will reject the call — nor what happens when some of up to 100 ids fail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the capability, then 'Use when', 'Not for', and a compact call example. Terse fragments with zero filler; every line either scopes the tool or aids invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter destructive mutation with no output schema, the description is functionally callable but thin on consequences: no mention of return shape, per-id partial failure, or what an expectedUpdatedAt mismatch does. The example helps, but the failure semantics an agent must anticipate are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already covers the key constraints (maxLength 240 on content, 8-72 font size, 'one text only', 'null resets'), so the schema carries the load. The description's cross-field constraint ('content needs one text id') is a modest addition already echoed by the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb plus resource plus enumerated editable attributes ('wording, size, font, colour, style, icon, zoom visibility'), so the agent knows exactly what surface it mutates. It explicitly separates itself from add_text (new text) and relabel_sections (section names), so the sibling boundary is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when' gives a concrete trigger example ('rename the sign to Main Entrance'), and 'Not for' names both the alternative tool (relabel_sections) and the out-of-scope case (creating text, Designer only). When/when-not/alternatives are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_reference_imageUpload Reference ImageAInspect

Upload a floor or seating plan image (PNG, JPEG, WebP) to trace the chart from; returns its id. Use when: the user shares a venue plan and you passed the vision probe. Not for: a PDF, or a plan seen only in the chat (read it; use build_from_venue_spec). Next: get_reference_overview, then classify_reference_source. Example: {"data": "data:image/png;base64,iVBORw0KGgo...", "filename": "plan.png"}

NameRequiredDescriptionDefault
dataYesBase64 image or data URL
filenameNoOriginal file name

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/non-idempotent/safe-write profile, and the description adds the vision-probe precondition, the id return, and the downstream pipeline order. It omits duplicate-handling semantics (what happens if the same image is uploaded twice, relevant given idempotentHint=false) and the ~11MB size cap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then labeled Use when / Not for / Next / Example blocks. Every line carries actionable information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter upload tool with no output schema, the description covers purpose, precondition, forbidden inputs, return value, and the follow-on tool chain. The main remaining gap is the size limit (10.6MB in schema) and what to do on oversized or duplicate uploads.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3, but the description adds real value: it constrains the data parameter to PNG/JPEG/WebP and the example shows the exact data-URL form ("data:image/png;base64,...") plus a filename example, clarifying format beyond the schema's bare 'Base64 image or data URL'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Upload a floor or seating plan image') plus the accepted formats (PNG, JPEG, WebP) and the return value ('returns its id'). It also distinguishes itself from build_from_venue_spec, which handles the chat-only-plan case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Use when' precondition (user shared a venue plan AND vision probe passed), an explicit 'Not for' exclusion naming the alternative tool for PDFs/chat-seen plans, and a 'Next:' chaining directive to get_reference_overview then classify_reference_source. This is a complete routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_current_chartValidate Current ChartA
Read-onlyIdempotent
Inspect

Check the draft against the rules publishing uses: overlaps and spacing, unreadable labels, unpriced seats, zone set-up and inventory limits. Returns a score, errors and warnings; changes nothing. Use when: after every change, and before render_preview or prepare_chart_review. Not for: fixing problems (use auto_fix_current_chart for safe fixes, or the matching update_ tool). Next: fix every error, then render_preview.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description still adds value by enumerating the rule categories that are evaluated and by describing the return shape (score plus errors and warnings), which no output schema provides. 'Changes nothing' restates the annotations rather than extending them, which keeps this below 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded blocks — what it does, when to use / when not, and what to do next — with zero filler. Every sentence carries actionable routing or outcome information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with no output schema, the description supplies everything needed: the checks performed, the fact that nothing is mutated, the shape of the result, and how it slots into the validate → fix → preview workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate; baseline is 4. The description correctly implies the target is the currently selected draft, consistent with the zero-arg schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check the draft) against a specific standard (the rules publishing uses) and enumerates the checked dimensions: overlaps/spacing, label readability, unpriced seats, zone set-up and inventory limits. It also states the return payload (score, errors, warnings), which makes it immediately distinguishable from auto_fix_current_chart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit three-way routing: use after every change and before render_preview/prepare_chart_review; explicitly not for fixing (pointing to auto_fix_current_chart and the matching update_ tool); and a stated next step (fix every error, then render_preview). Nothing 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 156 tool updates
    • First observedactivate_event_configuration
    • First observedadd_area
    • First observedadd_booth_array
    • First observedadd_curved_rows
    • First observedadd_ga_area
    • First observedadd_landmark
    • First observedadd_row_block
    • First observedadd_stage
    • First observedadd_step_free_route
    • First observedadd_table_array
    • First observedadd_text
    • First observedanswer_reference_capacity_questions
    • First observedapply_inventory_change
    • First observedapply_reference_capacity_plan
    • First observedapply_reference_inventory
    • First observedapply_suggested_restrictions
    • First observedapprove_confidence_evidence
    • First observedapprove_event_configuration
    • First observedapprove_reference_blueprint
    • First observedauto_fix_current_chart
    • First observedbegin_vision_probe
    • First observedbuild_from_venue_spec
    • First observedbuild_semantic_venue
    • First observedbuild_simple_chart
    • First observedclassify_reference_source
    • First observedclear_confidence_evidence
    • First observedcompile_reference_skeleton
    • First observedconfigure_reference_set
    • First observedconfirm_vision_probe
    • First observedcreate_chart
    • First observedcreate_chart_category
    • First observedcreate_chart_zone
    • First observedcreate_event
    • First observedcreate_event_configuration
    • First observedcreate_panorama_manifest_job
    • First observeddelete_chart_category
    • First observeddelete_chart_objects
    • First observeddelete_chart_zone
    • First observeddiff_vs_reference
    • First observeddivide_section_with_aisles
    • First observedduplicate_event
    • First observedfill_section_with_rows
    • First observedfill_sections_with_rows
    • First observedfind_events
    • First observedfind_order
    • First observedget_capabilities
    • First observedget_channel
    • First observedget_channel_report
    • First observedget_chart
    • First observedget_chart_review
    • First observedget_confidence_coverage
    • First observedget_event
    • First observedget_event_chart_freshness
    • First observedget_event_configuration
    • First observedget_event_configuration_binding
    • First observedget_event_log
    • First observedget_event_pricing
    • First observedget_event_report
    • First observedget_event_section_inventory
    • First observedget_event_sections
    • First observedget_order
    • First observedget_order_timeline
    • First observedget_panorama_manifest_job
    • First observedget_reference_blueprint
    • First observedget_reference_capacity_draft
    • First observedget_reference_overview
    • First observedget_reference_region
    • First observedget_reference_regions
    • First observedget_reference_set
    • First observedget_reference_source_classification
    • First observedget_reference_tile
    • First observedget_row_seats
    • First observedget_seats
    • First observedget_section_context
    • First observedget_section_work_queue
    • First observedget_table_chairs
    • First observedget_venue_3d_structure
    • First observedget_venue_spec_format
    • First observedgroup_segmented_rows
    • First observedinsert_seating_block
    • First observedjoin_ga_areas
    • First observedlist_access_links
    • First observedlist_channels
    • First observedlist_chart_events
    • First observedlist_charts
    • First observedlist_event_configurations
    • First observedlist_event_reservations
    • First observedlist_gates
    • First observedlist_orders
    • First observedlist_reference_capacity_questions
    • First observedlist_reference_images
    • First observedlist_report_links
    • First observedlist_unresolved_reference_questions
    • First observedlist_view_evidence_reports
    • First observedmanage_chart_floors
    • First observedmerge_rows
    • First observedmirror_section_assembly
    • First observedplace_gate
    • First observedplan_inventory_change
    • First observedplan_reference_capacity
    • First observedprepare_chart_review
    • First observedpropose_reference_blueprint
    • First observedpublish_event_configuration
    • First observedpublish_reviewed_chart
    • First observedread_reference_image
    • First observedrecord_chart_review_decision
    • First observedrecord_section_review
    • First observedrelabel_rows
    • First observedrelabel_sections
    • First observedrender_preview
    • First observedrender_reference_capacity_preview
    • First observedreorder_chart_categories
    • First observedrepeat_section_radially
    • First observedreport_missing_tool
    • First observedrequest_order_refund
    • First observedresend_tickets
    • First observedreset_seats
    • First observedrestore_reference_sections
    • First observedretract_confidence_evidence
    • First observedrollback_event_configuration
    • First observedsave_reference_capacity_draft
    • First observedscore_sightlines
    • First observedselect_chart
    • First observedset_active_reference
    • First observedset_confidence_evidence
    • First observedset_event_configuration_binding
    • First observedset_event_seat_blocks
    • First observedset_event_section_states
    • First observedset_object_entrance
    • First observedset_row_spacing
    • First observedset_shape_configurations
    • First observedset_view_from_seat_fallback
    • First observedsplit_row
    • First observedsubmit_event_configuration
    • First observedsubmit_region_semantics
    • First observedungroup_segmented_row
    • First observedupdate_booths
    • First observedupdate_chart_categories
    • First observedupdate_chart_theme
    • First observedupdate_chart_zones
    • First observedupdate_event
    • First observedupdate_event_chart
    • First observedupdate_event_configuration
    • First observedupdate_ga_areas
    • First observedupdate_gate
    • First observedupdate_row_block_style
    • First observedupdate_rows
    • First observedupdate_seats
    • First observedupdate_sections
    • First observedupdate_segmented_row
    • First observedupdate_shapes
    • First observedupdate_stage_kinds
    • First observedupdate_tables
    • First observedupdate_texts
    • First observedupload_reference_image
    • First observedvalidate_current_chart

Publisher details

Operator
Paiteq Private Limited (SeatLayer) · Publisher source
Operator website
https://seatlayer.io
Vendor relationship
First-party
Restrictions
Needs a SeatLayer account (free to start) with the admin role in its workspace. You sign in once with OAuth; no API key to copy. Changes to events on sale are shown as a plan first and run only after you approve.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables users to search for events, performers, and venues through the SeatGeek API. Provides event recommendations, detailed venue seating information, and performer discovery capabilities for ticketed entertainment events.
    4
    397 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables browsing live event, venue, and lineup listings city by city, with optional category filtering for gigs, club nights, comedy, theatre, and talks. Also returns full detail for any single event, including dates, venue and address, on-sale window, starting price, billed artists, and highlights such as age restrictions.
    21 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources