gma3-mcp
In short: connect an MCP client to grandMA3 onPC to inspect show data, program fixtures, edit cues/presets, control playback and read console feedback, with optional Lua and console input.
Connection: check bridge status, version, show, Lua policy and OSC config; start the bridge via OSC.
Commands: run grandMA3 command-line commands (bridge feedback or fire-and-forget OSC).
Inspection: objects, children, ranges, dumps, sequences, cues, executors, fixtures, pools and manual lookup.
Structured reads: fixture attributes, programmer values, fixture/universe DMX output, cue contents and recipes.
Fixture programming: select fixtures, set attributes, RGB colour, pan/tilt and clear programmer.
Cues: store, merge or overwrite cues and parts, set timing and triggers, goto and delete.
Playback: sequence/executor actions, read/set faders, assign and label executors.
Groups and MAtricks: store/read groups with selection grids, read/configure MAtricks.
Presets: read stored content/references, store the programmer with explicit modes and filters.
Phasers: build from steps or templates, store as presets, audition and release.
Recipes: read, edit and cook preset/cue recipe lines with coverage checks.
Speed and tempo: read/configure speed masters, tap/double/half/reset, measure running sequences.
Macros: read, store, edit and run macros.
Timecode: read, build and transport timecode shows with timed cue events.
Patch: list types/fixtures, add, readdress, rename, unpatch and delete fixtures (exclusive patch sessions).
Playback configuration: executor key/fader/encoder functions and locks; sequence playback settings.
Console input (opt-in): owned input interactions, hardkeys, PC keys, typing and bounded input sequences, plus status and release.
Feedback: read-only console state such as command line, MA state, page, selection, executors, faders and sequence activity.
Lua: opt-in arbitrary Lua execution and live Lua API search.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gma3-mcpset executor 1 fader to 75% and run sequence 2"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gma3-mcp
An MCP server for grandMA3 onPC. Connect an MCP client to inspect show data, program fixtures, store and edit cues, control playback and faders, and search the manual installed with onPC. Arbitrary Lua execution is available as a separate, opt-in capability.
Get started
Choose the guide for the computer running grandMA3 onPC and your MCP client:
Platform | Setup guide |
macOS | |
Windows |
Both guides cover building the server, copying the plugin, importing it into onPC, configuring your MCP client (ChatGPT desktop, Claude Code or Claude Desktop), and checking the connection. Start with the native setup for your platform. For ChatGPT in a browser, see ChatGPT web.
Running the MCP client on a different computer? See remote access over SSH. For container deployment, see Docker.
The documented live verification baseline is grandMA3 onPC 2.5.1.0 on macOS. Windows instructions are provided, but this does not establish equivalent live validation on Windows or other onPC versions. See the tested platform/version matrix for the distinction between live probes, automated checks and deployments still awaiting qualification.
Related MCP server: reaper-mcp
What you can do
Area | Capabilities |
Show inspection | Sequences, cues, executors, fixtures, pools, object properties and children |
Fixture programming | Select fixtures, set attributes, RGB color and position, clear the programmer |
Cue workflows | Create, merge, overwrite, label, time, trigger, go to and delete cues and parts |
Playback | Sequence and executor actions, faders, executor assignment and labeling, executor functions and sequence playback settings (Wrap Around, priority, restart, locks) |
Groups and MAtricks | Groups from explicit selection-grid cells or row, rectangle and mirror helpers (stored, read back and recall-checked), group and selection grid reads, MAtricks objects with wings, blocks, groups and fade/delay/phase/speed distributions |
Presets | Store the programmer into presets with explicit mode (selective, global, universal), forced conversion, merge/overwrite, scope, attribute and layer filters, embedding and input filter, refusing unrequested content and verifying the stored rows; read preset content, references and dependencies |
Phasers | Build effects from structured steps or templates (dimmer chase, alternating colours, pan/tilt circle) with step timing, phase distribution, direction, repetition and speed, in the console's Preview environment, stored as presets and read back step by step; explicit audition and release |
Recipes | Read, add, change, reorder and remove recipe lines in presets and cue parts; cook a preset, cue part, cue or sequence with an explicit option after listing the affected targets and their predicted coverage, protecting uncooked cue data |
Structured inspection | Fixture attributes, programmer values, fixture output, DMX and supported cue contents |
Reference | Local grandMA3 manual, live Lua API descriptions and the |
Advanced control | Command-line commands and optional Lua execution |
Console input (opt-in) | Logical MA keys, raw PC keys, text and bounded input sequences with explicit ownership, once the operator enables input on the console |
See the complete tool and configuration reference. Workflow tools report command outcomes and read-back verification separately; an uncertain outcome requires inspecting console state before trying the command again. Some console data is unavailable through the API and is reported as a limitation, rather than invented or returned as a misleading zero.
How it works
MCP client → stdio → Node.js MCP server → local TCP bridge → grandMA3 onPCThe Lua bridge plugin runs inside onPC and listens on 127.0.0.1:9800.
The MCP server translates tool calls into bridge requests. Both parts are required for
show inspection and workflow tools. The plugin also carries three instance-based
console interaction modules (owned input sessions, read-only feedback, continuous-control
admission) as extra components of the same XML. Input is off by default; the operator enables it per start on the console
keyboard backend (input=keyboard, real key presses through Keyboard()), the owned-Quickey backend
(input=quickey, real key presses through a provisioned Quickey bank on reserved executors), both on one instance
(input=mixed, the Quickey default with per-key Keyboard() overrides; combinations that are not qualified are refused)
or the fake backend (input=fake, events recorded only). The structured input tools (gma3_hardkey, gma3_keyboard,
gma3_type, gma3_input_sequence, gma3_input_interaction, status and release) expose it; while input is
owned by any client, the bridge refuses commands, property changes, playback, faders and Lua from every client
with an explicit [busy] error instead of running them into a changed console state. The read-only
feedback tool (gma3_feedback) observes command text, masters, Preview, page, selection,
executor assignment, fader levels and sequence activity without Lua, input or a free bridge.
gma3_command also supports write-only OSC when OSC input is configured in onPC. Automatic fallback
happens only if the bridge cannot be reached before dispatch; a command with an uncertain result is
never automatically replayed. gma3_start_bridge can start an already-imported plugin over OSC.
OSC is optional for the normal bridge setup and is not forwarded by an SSH tunnel. gma3_osc, gma3_configure_osc and
gma3_test_osc_input read, configure and test the console's OSC (see docs/tools/osc.md).
Before using it in a show
Tools operate on the live show and can change the programmer, playback and stored show data. Start with a disposable show and read-only queries. Save your show when you want show changes to persist; commands and enabled Lua can also perform file operations.
The bridge has no authentication. It accepts loopback connections only, so local applications can access it. Use the documented SSH setup for remote access.
Arbitrary Lua is disabled on the bridge by default. Its execution budget is best effort and is not a sandbox or a cancellation guarantee. Read Lua execution and hook policy before enabling it.
Commands that open a blocking dialog can stall the plugin. Use
/NoConfirmationwhere appropriate.
Documentation
Workflow details: fixtures, cues, executors, inspection, console input, console feedback, patch, playback configuration, groups and MAtricks, presets, phasers, recipes, speed masters and tempo, macros, timecode shows
Show setup from scratch: field-test gaps and fixes (SU-01 .. SU-10)
Hardkey, keyboard and feedback feature requests and evidence, console interaction modules
Tested platform/version matrix and pinned modules for independent consumers
Contributing and security
Please follow the code of conduct. See accessibility guidance and reporting for interface and documentation barriers. See contribution guidance for bug reports, development checks and pull requests. Report suspected vulnerabilities privately using the security policy.
License
grandMA3 and MA Lighting are trademarks of MA Lighting Technology GmbH. This project is independent and is not affiliated with, endorsed by, or supported by MA Lighting. No MA Lighting documentation, code, or libraries are redistributed here: the help tool reads the manual from your own onPC installation at runtime, and the bridge plugin uses the LuaSocket and JSON libraries already shipped inside onPC.
Available Tools
75 toolsgma3_assign_to_executorAssign a sequence to an executorA
Assign a sequence to an executor on an explicit page: sends 'Assign Sequence At Page .' (manual syntax). Before sending anything it checks read-only that the sequence and the page exist and what the executor currently holds; an executor holding a different object is only replaced with replace: true (otherwise the call fails with the previous assignment in the result), and an executor that already holds this sequence is left alone (alreadyAssigned: true, no command sent). Optional label: sends 'Label Page . ""' after assigning. On grandMA3 an executor has no label of its own: it shows its assigned object's name, so this RENAMES THE SEQUENCE itself, everywhere it appears (pools, other executors). If labelling fails after the assignment the outcome is partial. Does not change the fixture selection or the programmer and never sends Go/On/Off/Toggle or any playback keyword; whether the console changes the selected sequence on assignment is not controlled by this tool. verify (default true) reads the executor back and compares the assigned object (by name and class) and, when a label was given, the executor's displayed name and the sequence's own Name; executor configuration, fader/key functions and playback state are NOT verified. Mutations from this server are serialised, but another operator or client can still change the executor between the inspection and the assignment.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Executor page number (1-9999). The page must already exist; the tool does not create pages. | |
| label | No | Optional new name for the assigned sequence (an executor displays its assigned object's name). Names must not contain \ " $ & * ? , . ; ^ { } | ~ (the console strips them); leading/trailing spaces are trimmed. | |
| verify | No | Read the executor (and the sequence, when labelled) back and compare (default true). | |
| replace | No | Replace an executor that holds a different object (default false: fail and report the previous assignment). | |
| executor | Yes | Executor number on that page: 101-190 (keys), 201-290 (faders), 301-390 and 401-490 (knobs), plus the Xkeys 191-198 and 291-298. | |
| sequence | Yes | Sequence number to assign (must exist). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does: read-only pre-inspection, replace/fail semantics with the previous assignment returned, the partial-failure state when labelling fails, the fact that labelling RENAMES the sequence everywhere, and the serialisation caveat about other clients changing the executor between check and write. This is a mutation with complete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long and dense, but front-loaded with the primary command syntax and action before the branching rules, and every sentence carries non-obvious console semantics. Slightly bloated in the verify/security coda, but justified by the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing what comes back (previous assignment on failure, alreadyAssigned:true, partial outcome) and precisely what verify does and does not check. Nothing an agent needs to call this correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning on top of the schema: replace:true fails-with-previous-assignment otherwise, label renames the assigned object/sequence rather than the executor, and verify's scope (object name+class, plus displayed name when labelled). That goes beyond the schema's field-level text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Assign a sequence to an executor on an explicit page') and even gives the underlying manual syntax. An agent can immediately tell this apart from siblings like gma3_label_executor or gma3_configure_executor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich conditional context: when replace is needed, when the call fails (executor holds a different object), when it no-ops (alreadyAssigned), and what it deliberately does not do (no Go/On/Off, no fixture selection change). It never explicitly names a sibling alternative, however, even though gma3_label_executor overlaps with the label behavior described here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_build_phaserBuild a phaser and store it as a presetA
Build a repeatable effect from structured steps and store it into Preset ., reading every step back. Steps: per attribute an absolute and/or relative value (unit percent, or physical: degrees for Pan/Tilt) or a preset called into the step, plus step timing (width, transition, accel, decel). phaser: fixture distribution (phase {from, to} in degrees over the selection grid; from > to runs the other way; repeat {groups|wings|blocks: n} repeats it along X) and playback speed (speed_bpm, measure in beats, speed_master 1-16). These three are kept apart in the plan and the result. Templates (instead of steps): dimmer_chase {on, off, speed_bpm, spread}, alternating_colors {colors: [{red, green, blue} or {preset}], x2, speed_bpm, snap}, pan_tilt {pan, tilt (degrees), speed_bpm, spread}: a relative circle around the current position. preview: true returns the expanded steps and the console commands. fixtures are selected in list order on grid X (or group: a stored group with its grid). Every attribute is checked against every fixture before anything is sent (the console ignores unsupported attributes silently). The effect is built in the console's Preview environment (its own empty programmer; nothing is output) and the operator's Normal programmer is fingerprinted before and after: it is never touched. The built programmer is checked per fixture, step and layer, including the phase per fixture, then stored with the gma3_store_preset rules (mode selective or global, existing refuse|merge|overwrite, step presets embedded) and verified step by step; the Preview programmer is cleared and Preview left in every case. audition_ms (default 0: no playback) calls the stored preset on the fixtures in the Normal programmer, which must be empty, for that long and releases it with ClearAll. Requires exclusive: true (not for preview). If a build is interrupted, gma3_phaser_release leaves Preview. Needs bridge 0.23.0.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Preset mode (default selective). | |
| name | No | Preset name. | |
| unit | No | Unit of the step values (default percent). | |
| group | No | A stored group instead of fixtures; its grid sets the distribution order. | |
| steps | No | 2-16 steps. | |
| phaser | No | Phaser layers: playback speed, phase distribution, measure, speed master, repetition. | |
| preset | Yes | Target preset "<pool>.<number>"; an All pool (21-25) takes any attributes. | |
| verify | No | Read the stored preset back step by step (default true). | |
| preview | No | Only check and return the plan and commands (default false). | |
| existing | No | When the preset exists (default refuse). | |
| fixtures | No | Fixture ids or ranges, distributed in list order. | |
| template | No | A template instead of steps; see the description for its options. | |
| exclusive | No | Required (true) unless preview. | |
| audition_ms | No | Play the stored effect for this long in the empty Normal programmer, then release it (default 0: no playback; max 30000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it explains the console Preview environment, that nothing is output, that the Normal programmer is fingerprinted and never touched, per-fixture/step/layer validation, storage rules, step-by-step verification, clearing Preview in every case, exclusive requirement, and bridge version dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It front-loads the purpose and every sentence is information-dense for a 14-parameter nested tool, but the single unbroken paragraph is difficult to scan. Headings or bullets would improve structure, so it is not a 5 despite containing no obvious waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description still covers side effects, state isolation, storage behavior, verification, preview output, exclusive locking, interruption recovery, and version requirements. It is complete enough for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds substantial semantics beyond the schema: phase direction when from > to, repeat groups/wings/blocks along X, speed_master 1-16, template option shapes that the schema leaves as additionalProperties, audition release behavior, and the meaning of verify/existing. This is meaningfully richer than the structured fields alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb ('Build') and resource ('phaser'), plus the target preset and read-back behavior. It distinguishes structured steps from templates and is clearly separate from siblings like gma3_store_preset and gma3_phaser_release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage conditions: preview true returns the plan, exclusive true is required unless previewing, audition_ms requires an empty Normal programmer, and interrupted builds are recovered with gma3_phaser_release. It does not explicitly state when not to use this tool or name alternative effect-building tools, so it falls 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.
gma3_build_timecodeBuild a timecode show from timed cue events (never plays or records)A
mode (required): create (refuses an existing show), replace (removes its track groups, keeps the show) or append (adds a track group). tracks: [{sequence, events: [{at, action, cue?}]}]: at is seconds, "H:MM:SS.sss", "H:MM:SS:FF" (with fps 24, 25, 30 or 60) or {frames, fps}, rounded to the console's 1/16777216 s; action is go (Go+), go_back, goto (needs cue), on, off, toggle, top, pause, kill, flash_press / flash_release, temp_press / temp_release (pairs are checked: allow_unpaired to override). Events are stored in time order; events at the same time keep the order given (the console runs them in storage order). settings: loop_mode (loop, pause, off), loop_count, tc_slot ("internal" or 1-16: configures the source only), switch_off (keep, off), assert_previous_events. Sequences and cues are checked before anything is sent; a playing or locked show is refused. Every event is read back and compared exactly. Never sends Go, Record or anything that plays. Needs bridge 0.25.0.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| mode | Yes | ||
| name | No | ||
| tracks | Yes | ||
| verify | No | ||
| preview | No | ||
| settings | No | ||
| timecode | Yes | ||
| allow_unpaired | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: exact readback comparison of every event, pre-send validation of sequences/cues, refusal of playing or locked shows, same-time events executed in storage order, and an explicit 'never sends Go, Record or anything that plays'. The bridge 0.25.0 requirement is also disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Sized appropriately for a complex nested-payload tool: nearly every clause carries load-bearing detail (rounding, ordering, pair checking, refusals). It is a single dense paragraph rather than a front-loaded structure, which makes scanning harder, but there is little genuine filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, nested-object, no-output-schema, no-annotation tool, this is unusually complete — it covers validation, failure modes, post-condition verification, and side-effect limits. It is missing semantics for the required top-level timecode, plus name, preview, and the top-level fps, which matter given the 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters and nested objects, and the description compensates for most of it: mode, tracks.at formats (seconds, H:MM:SS.sss, H:MM:SS:FF with fps, {frames,fps}, 1/16777216 s rounding), the action enum's semantics including the gotcha that goto needs a cue and the press/release pair checking with allow_unpaired, and every settings field. Gaps remain for top-level timecode, name, fps, preview, and verify (the readback sentence only implies verify).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (build a timecode show) plus the scope (timed cue events), and the title's 'never plays or records' cleanly separates it from transport/playback siblings such as gma3_timecode_transport. An agent can tell what this does and what it deliberately does not do without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The three modes are given operational meaning (create refuses an existing show, replace removes its track groups but keeps the show, append adds a track group), which is real when-to-use guidance. It also states the precondition that sequences and cues are checked before anything is sent and that a playing or locked show is refused. It never names the sibling tool to use instead when you actually want playback, so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_clear_programmerClear selection / programmerA
Explicit clear with a required mode: "selection" sends ClearSelection (deselects fixtures, keeps all programmer values); "active" sends ClearActive (deactivates values, keeps selection and values); "all" sends ClearAll (clears the selection AND discards every programmer value). Nothing is implied: one command per call. Verifies Selection.CountTotalSelected == 0 for selection/all; programmer values cannot be read back (unavailable for active). Serialised against this server's other mutations only.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | selection = ClearSelection, active = ClearActive, all = ClearAll |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does so well: it explains the exact effect on selection and programmer values for each mode, notes verification behavior (Selection.CountTotalSelected == 0), mentions that programmer values cannot be read back for 'active', and discloses serialization against other mutations. It stops short of covering error conditions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then efficiently details each mode. It is dense but avoids fluff; a bulleted format might improve readability, but the current one-paragraph structure is compact and information-rich.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no annotations and no output schema, the description is complete: it covers mode semantics, effects, verification, read-back limitations, and concurrency. An agent has everything needed to invoke it correctly without requiring additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds substantial meaning by describing the concrete consequences of each enum value (deselects fixtures, deactivates values, discards every programmer value) beyond the schema's brief mapping. This extra detail on effects makes it more useful than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (clear) and resource (programmer selection/values), and precisely distinguishes the three mode behaviors (selection, active, all) with exact command names. It does not explicitly differentiate from sibling tools like gma3_hardkeys_release_all or gma3_programmer, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mode descriptions imply when to use each variant (e.g., keep values vs discard all), but there is no explicit guidance on when to choose this tool over sibling tools or any exclusions. Usage is therefore implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_commandExecute a grandMA3 commandA
Execute a grandMA3 command-line command exactly as it would be typed (without Please/Enter). Examples: "Go+ Sequence 1", "Fixture 1 Thru 10 At 50", "Store Cue 2 /Merge /NoConfirmation", "ClearAll", "FaderMaster Page 1.201 At 75 Fade 2". Returns the command line feedback (OK, Syntax Error, Illegal Command). Commands that produce output (List, etc.) print to the console history, not here; use gma3_get_object / gma3_list_children to read data. Via "osc" the command is sent fire-and-forget over OSC and no feedback is available.
| Name | Required | Description | Default |
|---|---|---|---|
| via | No | Transport. auto (default) uses the bridge and falls back to OSC only if the bridge cannot be reached before the command is sent. If the bridge accepted the command but no reply came back, the command is NOT resent (it may already have executed); the error says so. | |
| command | Yes | The command, e.g. 'Go+ Sequence 1' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does so: it discloses the return values (OK, Syntax Error, Illegal Command), the fact that output-producing commands write to console history instead, and that OSC transport yields no feedback. It also explains the retry semantics of the 'auto' transport (no resend after bridge acceptance).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then examples, return values, and caveats in a logical order; each sentence carries information. It is dense but not padded, though it could be slightly tighter in the transport sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter command-execution tool with no output schema and no annotations, the description covers everything an agent needs: invocation format, return signals, output-routing caveats, transport behavior, and the correct alternatives for reading data. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including the detailed 'via' enum and its fallback behavior. The description earns credit above baseline by supplying concrete command-syntax examples ('Fixture 1 Thru 10 At 50', 'Store Cue 2 /Merge /NoConfirmation') that clarify the expected format of the 'command' string beyond the schema's single example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Execute a grandMA3 command-line command exactly as it would be typed') and immediately distinguishes its scope from siblings by noting that output commands like List print to console history rather than here, routing the agent to gma3_get_object / gma3_list_children. An agent can tell it apart from the ~60 sibling tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use (raw command-line syntax) and when-not (data reads should use gma3_get_object / gma3_list_children), plus a clear transport caveat that 'osc' is fire-and-forget with no feedback. Alternatives and selection conditions are named, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_configure_executorConfigure a sequence executor's functionsA
Set the key, MA-key, fader and encoder functions and Fix of the sequence executor at Page . by writing its properties (KeyPress, KeyUnpress, MAKeyPress, MAKeyUnpress, Fader, Encoder, EncoderLeft, EncoderRight, Fix; unlike 'Assign At', this never clears the unpress function). The executor must hold a sequence; functions are validated against the sequence lists before anything is sent (keys: Flash, Temp, Swap, Black and Time are key-only). Executor settings belong to this executor only; sequence settings (Wrap Around, priority, ...) are configured with gma3_configure_sequence. lock: true/false sets the executor's own Lock. A page lock also blocks executor changes. Never sends Go, On, Off, Toggle, Flash or any other playback keyword and does not touch the selection, the programmer or fader levels; playback state is read before and after (playback.activeBefore/activeAfter) and configuration alone does not start playback. A locked target is refused before anything is sent (the console silently ignores writes to it) unless unlock: true, which unlocks the owning object, applies the changes and locks it again (relocking is attempted even after a failed change). preview: true performs only the reads and returns the planned changes (from -> to); values already set are reported as unchanged and never sent. Each value is written with one 'set' request whose reply must read back the requested value, because the console silently keeps the previous value for anything it does not accept; the first failure stops the remaining changes. A value that could not be read is unknown, never a default: the call is refused when a value the plan depends on (requested property, Lock, page Lock) is missing, and a set reply without a value is an unknown step. verify (default true) reads every changed property and the lock back. Mutations from this server are serialised, but not isolated from other operators or clients.
| Name | Required | Description | Default |
|---|---|---|---|
| fix | No | Fix the executor on every page (Fix). | |
| lock | No | Final state of the executor's own Lock; lock: false on a locked executor removes the lock (explicit unlock). | |
| page | Yes | Executor page number (1-9999); the page must exist. | |
| fader | No | Fader function: Empty, Master, X, XA, XB, Temp, Rate, Speed, Time (Empty clears it). | |
| unlock | No | Allow unlocking a locked executor and/or page for this call; the locks are restored afterwards (default false: refuse). | |
| verify | No | Read the changed properties back and compare (default true). | |
| encoder | No | Encoder function: Empty, Master, X, XA, XB, Temp, Rate, Speed, Time (Empty clears it). | |
| preview | No | Only read and report the planned changes (default false). | |
| executor | Yes | Executor number on that page: 101-190 (keys), 201-290 (faders), 301-390 and 401-490 (knobs), plus the Xkeys 191-198 and 291-298. | |
| key_press | No | KeyPress function: Empty, Go+, Go-, <<<, >>>, On, Off, Toggle, Top, Kill, Pause, Goto, Load, Select, SelectFixtures, Rate1, Speed1, Learn, LearnSpeed, HalfSpeed, DoubleSpeed, ReSync, FastSync, Flash, Temp, Swap, Black, Time (Empty clears it). | |
| key_unpress | No | KeyUnpress function: Empty, Go+, Go-, <<<, >>>, On, Off, Toggle, Top, Kill, Pause, Goto, Load, Select, SelectFixtures, Rate1, Speed1, Learn, LearnSpeed, HalfSpeed, DoubleSpeed, ReSync, FastSync (Empty clears it). | |
| encoder_left | No | EncoderLeft function: Empty, Go+, Go-, <<<, >>>, On, Off, Toggle, Top, Kill, Pause, Goto, Load, Select, SelectFixtures, Rate1, Speed1, Learn, LearnSpeed, HalfSpeed, DoubleSpeed, ReSync, FastSync (Empty clears it). | |
| ma_key_press | No | MAKeyPress function: Empty, Go+, Go-, <<<, >>>, On, Off, Toggle, Top, Kill, Pause, Goto, Load, Select, SelectFixtures, Rate1, Speed1, Learn, LearnSpeed, HalfSpeed, DoubleSpeed, ReSync, FastSync, Flash, Temp, Swap, Black, Time (Empty clears it). | |
| encoder_right | No | EncoderRight function: Empty, Go+, Go-, <<<, >>>, On, Off, Toggle, Top, Kill, Pause, Goto, Load, Select, SelectFixtures, Rate1, Speed1, Learn, LearnSpeed, HalfSpeed, DoubleSpeed, ReSync, FastSync (Empty clears it). | |
| ma_key_unpress | No | MAKeyUnpress function: Empty, Go+, Go-, <<<, >>>, On, Off, Toggle, Top, Kill, Pause, Goto, Load, Select, SelectFixtures, Rate1, Speed1, Learn, LearnSpeed, HalfSpeed, DoubleSpeed, ReSync, FastSync (Empty clears it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: it never sends playback keywords, does not touch selection/programmer/fader levels, reads playback state before/after, refuses locked targets unless unlock:true (with re-lock semantics), and details the single 'set'-with-read-back write model, unknown-value handling and verify default true. This is unusually complete disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and essentially every sentence conveys a distinct behavioral fact. The prose is dense and clause-heavy, which costs some readability, but there is little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with no annotations and no output schema, the description covers prerequisites (executor must hold a sequence), validation, refusal conditions, write/verify semantics, lock interplay and even the read-back state it returns (playback.activeBefore/activeAfter, from -> to plan). Nothing an agent needs 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.
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 beyond the schema: functions are validated against the sequence lists, keys Flash/Temp/Swap/Black/Time are key-only, lock:false explicitly unlocks, and unlock restores locks afterwards. That said, most per-parameter value detail already lives in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: setting KeyPress, MAKeyPress, fader, encoder and Fix functions of the sequence executor at Page <p>.<e> by writing its properties. It also distinguishes itself from nearby siblings by naming gma3_configure_sequence and contrasting with 'Assign <function> At'. An agent can tell what this tool does versus gma3_assign_to_executor and gma3_executor_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes sequence-level settings (Wrap Around, priority) to gma3_configure_sequence and confines executor settings here, notes the executor must hold a sequence, and documents the key-only function restriction. It also states the conditions governing lock/unlock, preview and verify.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_configure_matricksCreate or update a MAtricks objectA
Set MAtricks per axis (x, y, z): wings, blocks, groups, width, shift, shuffle (null or 0 = None) and fade/delay (seconds), phase (degrees), speed (BPM) distributions as {from, to}. With wings, a distribution runs from the outer edges (from) to the centre (to), so a centre-out delay is wings 2 with delay {from: , to: 0}. create: true creates a missing object with 'Store MAtricks ' and then writes EVERY property (Store copies the programmer's selection MAtricks), so the new object holds exactly the request; reset_unspecified: true does the same for an existing one. Otherwise only the given settings change; values already set are not sent. Each value is one 'set' whose reply must read back the requested value (the console silently ignores values it does not accept); the first failure stops the rest. A locked MAtricks is refused. Does not touch the selection or the programmer; apply it with 'Recall MAtricks '. preview: true reports the planned changes.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X-axis settings. | |
| y | No | Y-axis settings. | |
| z | No | Z-axis settings. | |
| name | No | MAtricks name. | |
| create | No | Create the object when it does not exist (default false: refuse). | |
| verify | No | Read the object back and compare (default true). | |
| preview | No | Only read and report the planned changes (default false). | |
| matricks | Yes | MAtricks pool number (1-9999). | |
| reset_unspecified | No | Reset every setting not given to None/default (always on for create). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: each set's reply must read back the requested value, the console silently ignores rejected values, the first failure stops the rest, a locked MAtricks is refused, and it does not touch the selection or programmer. This is unusually rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and every sentence carries operational content. It is dense and could be broken into clearer segments, but little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter nested config tool with no annotations and no output schema, the description covers creation, reset, verification, preview, failure/abort behavior, and the locked case. Nothing an agent needs to invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: the wings distribution edge semantics (outer-to-centre) and a worked 'wings 2 with delay {from: <outer>, to: 0}' example for centre-out delay.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Set MAtricks <n> per axis (x, y, z)' and the title clarifies create-or-update. An agent immediately knows this configures a MAtricks object's axis parameters. However, it does not differentiate itself from the sibling gma3_matricks, leaving some ambiguity about which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operating context: create: true makes a missing object, reset_unspecified: true resets an existing one, otherwise only given settings change, preview: true reports planned changes, and 'apply it with Recall MAtricks <n>'. Clear usage context, though no explicit when-not or sibling comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_configure_sequenceConfigure a sequence's playback settingsA
Set a sequence's playback settings by writing its properties: wrap_around (a chase loops only with Wrap Around on and a trigger on its first cue), priority, restart_mode, release_first_cue, auto_start, auto_stop, master_go_mode, auto_fix, auto_stomp, tracking, soft_ltp, off_when_overridden, kill_protect, swap_protect (protection from the Kill/Swap playback actions, not from editing), use_executor_time, include_link_last_go, xfade_mode, xfade_reload. lock: true/false sets the sequence's own Lock. Tempo links (SB-06): rate_master (a speed master 1-16 or "none": the cue timing (fades, delays, trigger times) runs at its effective BPM / 60, so 60 BPM is 1:1), speed_master (the phasers in the cues follow it), rate_scale and speed_scale (One, Mul2..Mul256, Div2..Div256), speed_from_rate. Masters are linked by name; a master without a unique name is refused. While a rate master is linked, moving the sequence's rate fader moves the shared master. Settings belong to the sequence, so they apply to EVERY executor that references it: the tool scans all pages and lists them (references) and warns when other executors share the sequence. Cue triggers and timing are set with gma3_set_cue_trigger / gma3_set_cue_timing. Never sends Go, On, Off, Toggle, Flash or any other playback keyword and does not touch the selection, the programmer or fader levels; playback state is read before and after (playback.activeBefore/activeAfter) and configuration alone does not start playback. A locked target is refused before anything is sent (the console silently ignores writes to it) unless unlock: true, which unlocks the owning object, applies the changes and locks it again (relocking is attempted even after a failed change). preview: true performs only the reads and returns the planned changes (from -> to); values already set are reported as unchanged and never sent. Each value is written with one 'set' request whose reply must read back the requested value, because the console silently keeps the previous value for anything it does not accept; the first failure stops the remaining changes. A value that could not be read is unknown, never a default: the call is refused when a value the plan depends on (requested property, Lock, page Lock) is missing, and a set reply without a value is an unknown step. verify (default true) reads every changed property and the lock back. Mutations from this server are serialised, but not isolated from other operators or clients.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | Final state of the sequence's Lock; lock: false on a locked sequence removes the lock (explicit unlock). | |
| unlock | No | Allow unlocking a locked sequence for this call; the lock is restored afterwards (default false: refuse). | |
| verify | No | Read the changed settings back and compare (default true). | |
| preview | No | Only read and report the planned changes and sharing executors (default false). | |
| auto_fix | No | AutoFix (Yes/No). | |
| priority | No | Priority: super, swap, htp, highest, high, ltp, low, lowest. | |
| sequence | Yes | Sequence number (must exist). | |
| soft_ltp | No | SoftLTP (Yes/No). | |
| tracking | No | Tracking (Yes/No). | |
| auto_stop | No | AutoStop (Yes/No). | |
| auto_start | No | AutoStart (Yes/No). | |
| auto_stomp | No | AutoStomp (Yes/No). | |
| rate_scale | No | RateScale: div256, div128, div64, div32, div16, div8, div4, div2, one, mul2, mul4, mul8, mul16, mul32, mul64, mul128, mul256. | |
| xfade_mode | No | XFadeMode: ab, split. | |
| rate_master | No | RateMaster: a speed master 1-16 or "none". | |
| speed_scale | No | SpeedScale: div256, div128, div64, div32, div16, div8, div4, div2, one, mul2, mul4, mul8, mul16, mul32, mul64, mul128, mul256. | |
| wrap_around | No | WrapAround (Yes/No). | |
| kill_protect | No | KillProtect (Yes/No). | |
| restart_mode | No | RestartMode: first_cue, current_cue, next_cue. | |
| speed_master | No | SpeedMaster: a speed master 1-16 or "none". | |
| swap_protect | No | SwapProtect (Yes/No). | |
| xfade_reload | No | XFadeReload (Yes/No). | |
| master_go_mode | No | MasterGoMode: none, go, on, top. | |
| speed_from_rate | No | SpeedFromRate (Yes/No). | |
| release_first_cue | No | ReleaseFirstCue (Yes/No). | |
| use_executor_time | No | UseExecutorTime (Yes/No). | |
| off_when_overridden | No | OffWhenOverridden (Yes/No). | |
| include_link_last_go | No | IncludeLinkLastGo (Yes/No). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: locked targets are refused before sending unless unlock:true (with re-lock attempted even on failure), preview performs only reads, verify reads back changed properties, a set reply without a value is an unknown step, and the first failure stops remaining changes. It also states explicitly that no playback keyword is sent and that configuration alone does not start playback, which is essential behavioural reassurance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in the first sentence and the dense behavioural caveats follow, which suits a 28-parameter mutation tool. It is nonetheless very long and contains some restatement (e.g. two clauses about not touching selection/programmer/faders and not starting playback), so it is not maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 28-parameter mutation tool with no annotations and no output schema, the description covers the safety profile, locking, verification, preview, read-back semantics, sharing warnings, and concurrency limits. An agent has everything needed to call it correctly and to predict failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description exceeds it by adding meaning the schema lacks: wrap_around requires a first-cue trigger, kill_protect/swap_protect guard against Kill/Swap actions (not editing), rate_master semantics (fades/delays/trigger times at effective BPM/60, 1:1 at 60 BPM), speed_master follows phasers, masters linked by name with unnamed masters refused. Several boolean flags (auto_fix, tracking, soft_ltp, etc.) are only echoed from the schema, so it is not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Set a sequence's playback settings by writing its properties') and enumerates the properties, so an agent knows exactly what is mutated. It distinguishes itself from siblings by routing cue triggers/timing to gma3_set_cue_trigger / gma3_set_cue_timing and by scoping settings to the sequence rather than an executor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use it (settings belong to the sequence and apply to every executor referencing it) and names the alternative tools for cue triggers and timing. What is missing is an explicit when-not-to-use versus gma3_configure_executor / gma3_set_property, which an agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_configure_speed_masterSet a speed master's tempo, scale and learn modeA
Sets one speed master (1-16): the tempo as bpm, hz or seconds (one of them; it is the EFFECTIVE tempo under the final speed scale, 0 stops the master, at most 225 x the scale factor), speed_scale (One, Mul2..Mul256, Div2..Div256 or a power-of-two factor) and learn_mode (ignore_scale, respect_scale, auto_increase_scale: how taps treat the scale). Sends set LearnMode, set SpeedScale and Master 3.N At BPM x, in that order. Refuses a locked master. Every sequence linked to the master follows the change (named in warnings). Master 16 follows the sound input and may move again. Reads the fader and scale back (verify, default true); preview: true sends nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| hz | No | ||
| bpm | No | ||
| master | Yes | ||
| verify | No | ||
| preview | No | ||
| seconds | No | Period of one beat in seconds. | |
| learn_mode | No | ||
| speed_scale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: it discloses the exact command sequence sent and its order, the locked-master refusal, that every linked sequence follows the change, that master 16 tracks sound input and may move again, and what verify/preview actually do. This is exactly the mutation-and-side-effect detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads purpose and the settings before behavior. Every clause carries real information, but the run-on form makes it harder to scan than it could be with brief structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description covers parameters, side effects, command order, failure mode, and the verify/preview readback path. Nothing an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 13%, so the description must compensate and does: master is bounded to 1-16, tempo is explained as the EFFECTIVE tempo under the final scale with 0 stopping the master and a 225x-scale cap, speed_scale lists legal values, learn_mode explains each tap/scale interaction, and verify/preview semantics are given. It adds meaning well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'Sets one speed master (1-16)', then enumerates the three settings it controls (tempo, speed_scale, learn_mode). Distinguishes itself from siblings like gma3_speed_masters and gma3_speed_master_action by naming exactly what it configures rather than merely reading or acting on masters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives operational context (verify defaults to true, preview sends nothing, refuses a locked master) that implies when to use it, but never explicitly names an alternative sibling or states 'use this instead of X when Y'. Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_cook_recipesCook recipes with an explicit optionA
Cook the recipes of a preset, a cue part, a cue (all its parts) or a whole sequence, at once and verified (the console also re-cooks group and preset changes by itself in the background a moment later, with merge low priority). mode is required: merge_low_priority (replaces cooked data, keeps every uncooked value), merge (also replaces uncooked values on the recipes' own fixtures and attributes), overwrite (deletes every uncooked value), remove (removes cooked data). First every affected target is listed with its lines, their problems (missing or empty group, missing preset), the coverage before and the cooked coverage the lines should give; merge and overwrite are refused while they would replace or delete uncooked values unless replace_uncooked: true. preview: true stops there. After Cook <target> /<Option> (verify, default true) each target is read back: every predicted fixture and attribute cooked, no cooked values on fixtures no line selects, uncooked values unchanged (merge_low_priority, remove) or changed only where allowed. Lines that are not predicted (phaser recipes, filters) are named; presets that embed other presets are noted (their recipes are not re-cooked). Needs bridge 0.24.0.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| target | Yes | Preset, or sequence with optional cue and part. | |
| verify | No | ||
| preview | No | ||
| replace_uncooked | No | Allow merge/overwrite to replace or delete uncooked values (default false: refuse). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses mutation semantics (what is replaced/deleted vs preserved per mode), the refusal behavior for merge/overwrite, the background re-cook with merge low priority, and bridge version requirement. This is substantive 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely long, dense run-on sentences with no paragraphing. Front-loads purpose but the detailed coverage/verification discussion could be trimmed or restructured; it reads as a spec dump rather than a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 params, nested target, no output schema, and a complex domain, the description covers mode semantics, verification, refusal behavior, background behavior, and prerequisites. It's arguably over-complete if anything.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 40%, and nested target object is only partly documented. Description compensates by explaining mode meanings, verify (verify, default true), preview, and replace_uncooked semantics — going beyond the schema's enum list and default note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cook) and resource (recipes of preset/cue/sequence) plus the four modes. Clearly distinguishable from siblings like gma3_edit_recipe or gma3_recipes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains mode selection semantics (merge_low_priority vs merge vs overwrite vs remove) and explains preview/verify flow, giving clear when-to-use guidance. Doesn't explicitly name alternatives but the mode descriptions function as decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_cue_contentsInspect stored cue contentA
Read what a cue stores without playing it back or loading it: cue properties (No, Name, TrigType, TrigTime, TrigSound, Release, Assert, Note), per part the timing (CueFade, CueDelay, CueInFade, CueInDelay, CueOutFade, CueOutDelay, SnapDelay), command, MIB settings, OwnDataPresent, and the recipes (selection, preset text plus the resolved preset reference or an explicit unresolved marker, values, FadeX/DelayX/SpeedX/PhaseX, enabled). expand_presets: true adds the referenced presets' data (GetPresetData) keyed by preset address. Works with gma3_lua disabled (structured bridge op, plugin >= 0.3.0). Read-only: never changes selection, programmer or playback. SUPPORTED MODE (onPC 2.5.1): recipe- and preset-based content only. NOT AVAILABLE: hard (non-recipe) fixture values stored in a part (storedValues is always null; a limitation is added when OwnDataPresent is Yes) and tracked/effective values (trackedValues: "not_reconstructed"; a part lists only what it stores). The fixtures filter applies to expanded preset data only (stated in limitations). Never sends Goto, Load or any playback command.
| Name | Required | Description | Default |
|---|---|---|---|
| cue | Yes | Cue number, e.g. 1, 2.5 or "10.001". | |
| part | No | Only this part (0..999). Default: all parts. | |
| fixtures | No | Fixture IDs/ranges ("1 Thru 5") to filter expanded preset data by fixture ID. Recipe selections are not expanded. | |
| sequence | Yes | Sequence number (or exact name). | |
| expand_presets | No | Read referenced presets with GetPresetData and include their flattened rows (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: declares read-only behavior ('never changes selection, programmer or playback'), notes it works with gma3_lua disabled and requires plugin >= 0.3.0, and discloses concrete limitations (storedValues always null, trackedValues 'not_reconstructed', fixtures filter scope).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and then adds dense but useful detail; nearly every clause (supported mode, limitations, param scope) earns its place. The single long paragraph is slightly heavy to parse, keeping it from a 5, but it is not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is responsible for return-value coverage, and it enumerates the returned property/part/recipe fields in detail. Combined with the mode and limitation disclosures, an agent has everything needed to invoke and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: expand_presets:true adds referenced preset data keyed by preset address (GetPresetData), and the fixtures filter is scoped to expanded preset data only. It clarifies cross-parameter interaction rather than restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read what a cue stores') plus scope ('without playing it back or loading it'), which cleanly distinguishes it from playback siblings like gma3_goto_cue and gma3_playback. The enumeration of returned fields (properties, per-part timing, recipes) leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the use case as inspection-without-playback and states 'Never sends Goto, Load or any playback command,' which routes the agent away from the playback tools. It doesn't name specific sibling alternatives, but the read-only inspection context and the supported-mode/not-available constraints give clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_cuesList cues of a sequenceC
List the cues of a sequence with cue number, name, trigger and timing properties.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| fields | No | Property names per cue (default: No, Name, TrigType, TrigTime, Command, Note) | |
| offset | No | ||
| sequence | Yes | Sequence number or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read but never states that it is non-mutating, says nothing about pagination behavior despite limit/offset existing, and does not describe what happens when the sequence is unknown or the property list is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no wasted words; the resource and the returned properties are stated immediately. It is efficient rather than padded, though the single sentence leaves no room for the routing or pagination details an agent would want.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented half of the parameter set, this description is too thin for a 4-parameter tool. An agent still cannot tell whether results are paged, how many cues come back per call, or how the tool relates to gma3_cue_contents and gma3_sequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: 'sequence' (number or name) and 'fields' (with its default list) are documented, while 'limit' and 'offset' are bare. The description's mention of cue number, name, trigger and timing roughly mirrors the default fields set, adding mild value, but it never explains the pagination parameters the schema leaves undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the cues of a sequence') and names the properties returned (cue number, name, trigger, timing), so the agent knows exactly what this returns. It does not, however, distinguish itself from nearby siblings such as gma3_sequences (lists sequences) or gma3_cue_contents (cue detail), so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g. sequence must exist), and no named alternative for retrieving cue data. The agent is left to infer that this is the browse-level tool versus gma3_cue_contents or gma3_get_object.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_delete_cueDelete one cueA
Delete exactly one explicit cue with Delete Sequence n Cue c /NoConfirmation. Ranges (Thru, +) are rejected. Checks the cue exists first and refuses (nothing sent) when it does not. Verifies by reading existence back: matched when gone, mismatched when it still exists, unavailable when unreadable. Does not change the selection or the programmer. Never retried. The mutation lock orders only this server's own mutations; it does not isolate the operation from another console operator or another client.
| Name | Required | Description | Default |
|---|---|---|---|
| cue | Yes | One cue number, fractional allowed (2, 2.5, "10.001"; max three decimals). Ranges (Thru, +) are rejected. | |
| verify | No | Read the result back after the mutation (default true). Verification is reported separately from the mutation steps. | |
| sequence | No | Sequence number (1..99999). Required unless use_selected_sequence is true; exactly one of the two. | |
| use_selected_sequence | No | Act on the console's currently selected sequence. It is resolved to its sequence number first, and the command is sent with that explicit number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: the existence pre-check that refuses with nothing sent, the post-mutation verification outcomes (matched/mismatched/unavailable), no change to selection or programmer, never retried, and an honest caveat that the mutation lock only orders this server's own mutations and does not isolate it from other operators or clients.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and rejected forms, then behavior and caveats. Every sentence is substantive, though the paragraph is dense enough that a couple of clauses (verification result taxonomy, lock caveat) could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no annotations, no output schema, and four parameters: the description covers preconditions, refusal semantics, verification return states, side-effect scope, retry policy, and concurrency caveat. Nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so cue, verify, sequence, and use_selected_sequence are already documented in the schema, making the baseline 3. The description reinforces the single-cue constraint and verification behavior but adds little parameter-level detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (one explicit cue), plus the exact console command form `Delete Sequence n Cue c /NoConfirmation`. It is clearly distinguishable from siblings like gma3_store_cue or gma3_goto_cue, and the 'exactly one' / 'ranges rejected' scoping pins down the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines the when-not condition: ranges (Thru, +) are rejected, so bulk deletes must go elsewhere. It also states the precondition that the cue must exist or the tool refuses. It stops short of naming a sibling alternative for ranged deletion, so it falls just below full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_dmxRead DMX output of a universeA
Raw DMX output for an explicit universe and channel range (channels 1..512; universe 1..1024, further bounded by the console's universe count). unit is explicit: "raw8" (0..255 per address) or "percent" (0..100 as the console converts it). Works with gma3_lua disabled (structured bridge op, plugin >= 0.3.0). Read-only: never changes selection, programmer or playback. Source is "dmx output": output levels, NOT programmer values. A universe that is not granted on this onPC returns no values with granted: false and a limitation (never zeros). nonzero_only is an explicit filter. patched: true additionally maps each returned address to its fixture/channel through the RT channels (bounded; stated in limitations when skipped). 16-bit attributes appear as two separate 8-bit addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last channel (1..512, >= from). Default: same as from. | |
| from | Yes | First channel (1..512). | |
| unit | No | raw8 (default): 0..255 per address. percent: 0..100 as converted by the console. | |
| patched | No | Map each returned address to fixture ID / channel name via the RT channels (default false). | |
| universe | Yes | DMX universe number (1..1024). | |
| nonzero_only | No | Only return addresses whose value is not zero (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: read-only guarantee (never changes selection, programmer or playback), the granted:false behavior for ungranted universes returning no values rather than zeros, the bounded nature of patched mapping with limitations when skipped, and the two-address representation of 16-bit attributes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the what/range opens the description before edge behaviors. Nearly every sentence carries a distinct fact, though the density makes it slightly heavy for a read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must carry the return-shape burden, and it does: granted flag, limitations on ungranted/patched, unit conversion, and 16-bit address splitting. An agent has enough to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: percent is 'as the console converts it', patched maps addresses through the RT channels and is bounded/stated in limitations when skipped, and nonzero_only is characterized as an explicit filter. These are genuine semantic additions on top of the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: raw DMX output for an explicit universe and channel range, with 1..512 channels and 1..1024 universes. It explicitly distinguishes itself from sibling tools by noting the source is 'dmx output' — output levels, NOT programmer values — routing the agent away from gma3_programmer and similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions: works with gma3_lua disabled, reads output levels not programmer values, and unqualified universes return no values. It establishes when this tool applies but never names a specific alternative sibling (e.g. gma3_fixture_output or gma3_programmer) as the contrasting choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_dumpDump an objectA
Return the raw grandMA3 Dump() text for an object: class, path, every property and child. Verbose; prefer gma3_get_object for structured data.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Object reference. Either command-line object syntax ("Sequence 1", "Sequence 1 Cue 3", "Fixture 101", "Group 5", "Macro 2", "Page 1.201"), a dotted show-data path from a root ("DataPool.Sequences", "Root.ShowData", "Patch.Fixtures"), a numeric address like "14.14.1.6.1", or one of: Root, ShowData, DataPool, SelectedSequence, CurrentCue, Patch, Programmer, Selection, CurrentExecPage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; it discloses that the output is raw, verbose, and includes the full property/child tree, which is meaningful for a tool with no output schema. It stops short of stating read-only nature explicitly or any size/truncation behavior on large objects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the primary effect, followed by the comparison clause. Every fragment earns its place with zero padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers what is returned (class, path, properties, children) and flags verbosity, which is enough to call correctly. Only minor gaps remain around read-only confirmation and behavior on very large objects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single parameter whose accepted reference syntaxes are fully enumerated in the schema. The description adds no syntax, format, or resolution details beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return) and resource (raw grandMA3 Dump() text for an object) and enumerates exactly what the text contains: class, path, every property and child. It also names the sibling that produces structured data, so an agent can distinguish gma3_dump from gma3_get_object 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Verbose; prefer gma3_get_object for structured data" explicitly names the alternative and the condition that selects it. The implicit converse rule (use this when you need the raw dump text) is directly derivable, leaving nothing to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_edit_macro_lineInsert, change, move or remove one macro line (never runs it)A
action insert (line 1..count+1, needs command), set (any of command, wait, enabled, add_to_cmdline, execute, name, note), move (line -> to; sent as upward moves only, because a downward Move lands one place short), remove. References in a written command are checked unless raw: true. Refuses a locked or running macro. Every line is read back and compared with the expected order and content; accept_console_form as in gma3_store_macro. Never runs the macro.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| raw | No | ||
| line | Yes | ||
| name | No | ||
| note | No | ||
| wait | No | ||
| macro | Yes | ||
| action | Yes | ||
| verify | No | ||
| command | No | ||
| enabled | No | ||
| execute | No | ||
| preview | No | ||
| add_to_cmdline | No | ||
| accept_console_form | No | ||
| allow_unresolved_dependents | No | Edit even when a later line uses an object this edit stops an earlier line from storing (default false: refuse). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the refusal condition (locked or running macro), the reference-validation behavior and its raw:true escape hatch, the read-back verification of order and content, and the non-obvious 'move is sent as upward moves only because a downward Move lands one place short' quirk. These are exactly the side-effect and failure-mode details an agent cannot infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is front-loaded with the action list and then layers constraints, verification, and the sibling cross-reference with essentially no filler. The telegraphic fragments ('set (any of command, wait, ...)') and the pointer to 'accept_console_form as in gma3_store_macro' force the reader to consult another tool, which slightly hurts standalone readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter mutation tool with no output schema, the description covers action semantics, preconditions, verification, and edge cases well enough to call it correctly. It stops short of explaining the verify/preview switches and what the read-back verification returns to the caller, which are the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 6% across 16 parameters, so the description must compensate, and it largely does: it maps command/wait/enabled/add_to_cmdline/execute/name/note to the set action, defines line bounds for insert, and explains to for move plus raw and accept_console_form. It leaves verify, preview, and the macro parameter itself unexplained, so a few parameters remain undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource (one macro line) and enumerates the four operations (insert, set, move, remove), so the agent knows precisely what the tool mutates. It also explicitly separates itself from gma3_run_macro and gma3_store_macro ('Never runs the macro', 'accept_console_form as in gma3_store_macro'), so it is distinguishable from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is spelled out per action: insert requires a command and a line in 1..count+1, set takes a listed field set, move takes line -> to, remove deletes. It also gives the precondition that a locked or running macro is refused, which tells the agent when the call will fail. It does not, however, state when to prefer this over gma3_store_macro for whole-macro edits, so the routing guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_edit_recipeAdd, change, move or remove a recipe lineA
Edit one standard recipe line of a preset or cue part (the target must exist). action add {selection: group, values: "N.M" preset, matricks?, name?, enabled?, selection_mode?} appends a line; set {line, ...fields} changes it (values: null clears the values); move {line, to} reorders; remove {line} deletes it. References are checked first; the result reads every line back (the edited one and that the others are unchanged or moved as asked). The console re-cooks an edited line by itself (MergeLowPriority) and a removed line's output disappears: the result shows the target's coverage before and after (autoCooked). The console also re-cooks a group or preset change by itself a moment later (in the background); gma3_cook_recipes cooks at once, verifies, and offers Merge, Overwrite and Remove. enabled: false switches a new line off before it gets values, so it never cooks. Phaser lines, filters and timing columns are not edited by this release. preview: true returns the planned commands.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | New position (move). | |
| line | No | Line number (set, move, remove). | |
| name | No | ||
| action | Yes | ||
| target | Yes | Preset or cue part. | |
| values | No | Preset "N.M"; null clears it. | |
| enabled | No | ||
| preview | No | ||
| matricks | No | MAtricks pool number. | |
| selection | No | Group number. | |
| selection_mode | No | Strict: values only on the selected fixtures; Normal: passed down to sub-fixtures. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does: references are checked first, the result reads every line back, the console re-cooks an edited line itself (MergeLowPriority), a removed line's output disappears, and coverage is reported before/after (autoCooked). enabled:false preventing an initial cook is a non-obvious side-effect detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then organizes the body by action (add/set/move/remove) so each clause earns its place. It is dense and long-winded in places, but content-rich rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, nested-object, no-annotation tool with no output schema, the description covers mutation side effects, verification/return behavior, prerequisites, and scope limits. An agent has what it needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 64% schema coverage the description adds real meaning beyond the schema: it maps which fields belong to which action, explains values:null clears values, enabled:false switches a new line off before cooking, and preview returns planned commands. It leaves 'name' and the general 'target' object largely unexplained, so it is not fully compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb set (add/set/move/remove) and an exact resource: 'one standard recipe line of a preset or cue part'. It also names the sibling boundary (gma3_cook_recipes) and the scope exclusions (phaser lines, filters, timing), so an agent can distinguish 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'The target must exist' is an explicit prerequisite, and it routes the agent to gma3_cook_recipes when immediate cooking with Merge/Overwrite/Remove is wanted. 'Phaser lines, filters and timing columns are not edited by this release' is an explicit when-not, and preview:true is offered as the dry-run path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_executorsList executorsC
List executors on the current executor page with their assigned object, key/fader functions and master fader level. Executor numbers: 101-115 top row, 201-215 faders, 301-315 etc.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last executor number (default 315) | |
| from | No | First executor number (default 101) | |
| only_assigned | No | Skip empty executors (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the returned fields but doesn't disclose whether it's read-only (implied by 'List', but not stated), whether it can error, or what happens when no page is active. The executor-numbering range is a useful scope hint but falls short of behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose, followed by a compact numbering reference. Efficient, though the numbering block could arguably belong in the schema and slightly lengthens an otherwise tight listing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 optional params, full schema coverage, and no output schema, the description covers the essentials for a listing tool. However, absence of annotations means behavior (read-only nature, error cases, relationship to sibling listing tools) is unstated, leaving meaningful gaps for an agent deciding whether to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents to/from/only_assigned with defaults. The description's executor-numbering map (101-115 top row, 201-215 faders, 301-315) adds context for what range values mean, which is genuinely useful beyond the schema's plain numeric min/max. Still, it doesn't explain the only_assigned parameter, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('List executors') and details the scope ('on the current executor page') plus the fields returned (assigned object, key/fader functions, master fader level). It doesn't explicitly name a sibling it differs from, but the specificity of 'current executor page' distinguishes it from something like gma3_objects or gma3_list_children.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description implies it's for inspecting the executor page but doesn't tell an agent how it relates to gma3_objects, gma3_executor_settings, or other sibling listing tools. The executor-numbering context is useful but doesn't constitute usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_executor_settingsInspect an executor and its sequence's playback settingsA
Read-only. For Page .: the assigned object; the executor's key, MA-key, fader and encoder functions, Fix and Lock; the page lock; for a sequence executor also the allowed function choices, the sequence's playback settings (wrap_around, priority, restart_mode, release_first_cue, auto_start/stop, master_go_mode, protect flags, ...), its Lock, whether it has active playback, which object owns each protection setting, and every executor in the current data pool that references the same sequence (sequence settings apply to all of them). The sequence is read by the address the executor reports, so a sequence from another data pool is reported as such (dataPool: other, ref: null). A value that could not be read is null and listed in unreadable. Sends no command and changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Executor page number (1-9999). | |
| executor | Yes | Executor number on that page: 101-190 (keys), 201-290 (faders), 301-390 and 401-490 (knobs), plus the Xkeys 191-198 and 291-298. | |
| references | No | Scan every page for executors sharing the sequence (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers: it declares read-only ('Sends no command and changes nothing'), explains null handling for unreadable values and their aggregation in an 'unreadable' list, and discloses the cross-data-pool behavior (reported as dataPool: other, ref: null). It also notes that sequence settings apply to all executors referencing that sequence, which is important non-obvious context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical read-only guarantee is front-loaded, and the subsequent clauses enumerate return contents in a dense but information-bearing way. The single long run-on sentence is efficient but would scan better broken into a couple of statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex inspection tool with no output schema and no annotations, the description does substantial work: it enumerates the returned fields, explains the null/unreadable convention, and covers the cross-pool and shared-sequence cases. What it lacks is any guidance on the tool's relationship to sibling read/configure tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents page, executor, and references, establishing a baseline of 3. The description reinforces the page.executor addressing notation and clarifies why the references scan matters (sequence settings are shared), but adds no format or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inspect/read) and resource (an executor plus its sequence's playback settings), and enumerates exactly what fields are returned. It does not explicitly differentiate itself from siblings like gma3_executors or gma3_configure_executor, leaving the agent to infer that this one is the read path versus the configure path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to use this tool versus the many adjacent siblings (gma3_executors, gma3_configure_executor, gma3_configure_sequence, gma3_playback). The read-only framing implies a read path but gives no conditions, prerequisites, or exclusions to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_feedbackRead console feedback stateA
Read-only console state for feedback (KB-06): command-line text, last command feedback, Blind/Highlight/Solo, Preview mode, a display's Preview bar, keyboard-shortcut enablement, aggregate MA state, current executor page, selected sequence, and per executor the assignment and fader level, per sequence its playback activity. Works with gma3_lua disabled, with console input disabled and while another client holds an input interaction; it acquires nothing and changes no console state (selection, command line, programmer, playback, focus). Every item carries available, value (null when unavailable, with a reason or error; false is an observed value), scope, source, observedAt and epoch. Items are read one after another, not as an atomic snapshot. lastCommand and maState are shared observations, not confirmation of a request or key owner; sequenceActive is playback activity, not executor button state; Freeze has no readable state and is always unavailable. With no arguments every parameterless reader is read (previewBar on display 1). Bridge op feedback.read (plugin >= 0.8.0).
| Name | Required | Description | Default |
|---|---|---|---|
| readers | No | Readers to include. Parameterised readers (executor, fader, sequenceActive) come from executors/sequences instead. Omit everything to read all parameterless readers. | |
| displays | No | Display indexes for previewBar (one item per display; a missing display is reported unavailable) (at most 8 per call; a longer list is refused up front) | |
| executors | No | Executor numbers on the user's current page: assignment (executor) and master level (fader) per number (at most 32 per call; a longer list is refused up front) | |
| sequences | No | Sequence numbers: playback activity (sequenceActive) per number (at most 32 per call; a longer list is refused up front) | |
| fader_tokens | No | Fader tokens read per executor (default ['FaderMaster']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and does so thoroughly: it changes no console state (selection, command line, programmer, playback, focus), reads items sequentially rather than as an atomic snapshot, flags lastCommand/maState as shared observations rather than request confirmation, distinguishes sequenceActive from executor button state, and warns Freeze is always unavailable. It also documents per-item fields (available, value, scope, source, observedAt, epoch) and that null means unavailable while false is a real observed value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information-dense and front-loaded with the readable items, but delivered as one long multi-clause paragraph with heavy parenthetical asides, which hurts scanability for an agent. Little is outright redundant, but the packing is dense enough that structure suffers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, enum-heavy tool with no output schema, the description compensates by explaining the shape of returned items and their semantics (available/value/scope/source/observedAt/epoch, null vs false). Combined with the acquisition and interaction caveats, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantic value: it clarifies that executor/fader/sequenceActive readers are parameterised and sourced from executors/sequences, that fader_tokens defaults to ['FaderMaster'], and that previewBar defaults to display 1. It also documents the meaning of the returned value semantics, which the schema cannot.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (read-only console feedback state) and enumerates the exact readable quantities (command-line text, last command, Blind/Highlight/Solo, Preview, shortcuts, MA state, page, executor/fader/sequence activity). An agent can tell this is a state-reader apart from write-oriented siblings like gma3_command or gma3_set_fader without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real deployment context — works with gma3_lua disabled, with console input disabled, and while another client holds an input interaction, and it acquires nothing. However it never says when to prefer it over siblings such as gma3_status or gma3_hardkeys_status, and the no-argument default behavior ('every parameterless reader is read') is stated but not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_fixture_attributesDiscover a fixture's attributesA
List the attributes of one fixture or subfixture with stable identifiers (attribute name, attributeIndex, uiChannel), pretty name, feature/feature group, activation group, physical unit, natural readout, the channel function's DMX and physical ranges, defaults, optional channel sets, and the DMX address mapping (coarse/fine/ultra as universe.address) from the RT channels. Subfixtures of a compound fixture are listed explicitly (subfixtures[], with their patch index); pass Fixture 501.3 to inspect one. Works with gma3_lua disabled (structured bridge op, plugin >= 0.3.0). Read-only: never changes selection, programmer or playback. The fixture is resolved by fixture ID through the console (patch index is reported separately as subfixtureIndex, never assumed equal). source says whether rows came from the UI channel API ("uiChannels") or the static fixture-type walk ("fixtureTypeWalk", no uiChannel). Null fields were not supplied by the console (explicitly unavailable, never inferred). Results are paginated. Not available: current values (use gma3_programmer / gma3_fixture_output).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 100, max 500). | |
| offset | No | Rows to skip (pagination). | |
| fixture | Yes | Fixture ID (101), subfixture ("501.3") or command reference ("Fixture 501.3"). One (sub)fixture only. | |
| include_channel_sets | No | Include each channel function's ChannelSets (named ranges such as gobo slots). Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it declares read-only behavior ('never changes selection, programmer or playback'), the lua-disabled/structured-bridge mode and plugin version floor, that fixture resolution goes through the console rather than assumed patch index, the meaning of `source` values, and that null fields are explicitly unavailable rather than inferred.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned-field inventory, then falls into shorter, higher-value sentences on resolution, source, nulls and pagination. The opening sentence is a dense run-on with nested parentheticals, but with no output schema the enumeration of return fields earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must cover returns and it does: field inventory, `subfixtures[]` shape, `source` provenance, null semantics and pagination. Combined with the environment constraints (lua disabled, plugin >= 0.3.0) and the read-only guarantee, nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real meaning: the accepted fixture formats (numeric ID, '501.3' subfixture, 'Fixture 501.3' command reference), one-and-only-one (sub)fixture constraint, and the semantics of channel sets as named ranges like gobo slots.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource ('List the attributes of one fixture or subfixture') with an explicit scope (attributes, not current values). It enumerates the returned fields and is clearly distinguishable from gma3_fixture_output and gma3_patch_list, which the description itself references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the positive case (inspect one fixture/subfixture's attributes, e.g. 'Fixture 501.3'), the exclusion ('Not available: current values'), and names the alternatives to use instead (gma3_programmer / gma3_fixture_output). An agent is told both when to pick this tool and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_fixture_outputInspect a fixture's DMX outputA
Current DMX output of one fixture or subfixture per RT channel: channel name, attribute, universe.address, raw value (8-bit per address, combined to 16/24-bit when fine/ultra addresses exist; bits and unit say which), derived percent, and where the fixture type's channel function is known a physical value (conversion: "linear from channel function") and the active channel set. Works with gma3_lua disabled (structured bridge op, plugin >= 0.3.0). Read-only: never changes selection, programmer or playback. Source is "dmx output": these are output levels, NOT programmer values. Not available: per-attribute cooked output (the API has none), values on a universe that is not granted on this onPC (value null plus a limitation). nonzero_only is an explicit filter (default false). Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 200, max 2000). | |
| offset | No | Rows to skip (pagination). | |
| fixture | Yes | Fixture ID (101), subfixture ("501.3") or command reference ("Fixture 501.3"). | |
| nonzero_only | No | Only return channels whose raw value is not zero (default false; channels with unknown value are kept). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does: it declares read-only semantics ("never changes selection, programmer or playback"), the dependency requirement (plugin >= 0.3.0, works with lua disabled), and concrete failure/limitation behavior (null value plus limitation on ungranted universes; no per-attribute cooked output).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The payload is front-loaded into the first sentence (what is returned) before constraints and caveats, and most sentences carry information that is not in any structured field. It is dense and long, bordering on a run-on in the opening line, but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values — and it does in detail (channel name, attribute, universe.address, raw value with bits/unit, derived percent, linear conversion, active channel set). Combined with the limitations and read-only statement, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented, and the description mostly restates them (nonzero_only default false, pagination, fixture accepts subfixture references). It adds little 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and opening sentence state a specific verb (inspect) and resource (a fixture's/subfixture's DMX output) and enumerate exactly what is returned per RT channel. It is clear what the tool does, but it never names a sibling (e.g. gma3_dmx or gma3_fixtures) to contrast against, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong context cues: works with gma3_lua disabled, read-only, and explicit exclusion of programmer values ("Source is 'dmx output': these are output levels, NOT programmer values"). However it never states alternatives or when another tool should be used instead, so no explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_fixturesList patched fixturesA
List fixtures in the patch with ID, name, fixture type and DMX patch. Paginated; use filter to restrict (e.g. 'Fixture 1 Thru 50').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 200) | |
| fields | No | Property names per fixture (default: FID, CID, Name, FixtureType, Mode, Patch) | |
| filter | No | Command-line fixture range (default 'Fixture Thru' = all) | |
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full behavioral burden. It helpfully discloses that results are paginated and mentions the filter parameter, but it does not clarify permissions, rate limits, or whether the call is read-only (though 'List' strongly implies it). For a simple read-only listing this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero waste. The core purpose is front-loaded, followed immediately by the pagination and filter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description tells what fields are returned and that paging exists, which partially substitutes for a missing output schema. But the offset parameter has no description in the schema or the description, leaving pagination semantics incomplete for an agent trying to page through results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents three of four parameters including defaults for fields and filter. The description restates the default field set and adds a filter example, but adds no semantics for offset, so it only marginally exceeds the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (fixtures in the patch) and enumerates the returned fields, making the tool's function clear. It does not explicitly distinguish itself from the similar sibling gma3_patch_list, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete example for the filter parameter ('Fixture 1 Thru 50') and notes pagination, which implies usage context. However, it never says when to use this tool versus gma3_patch_list or other fixture/patch siblings, leaving the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_get_faderRead fader valuesB
Read fader values and display text of a playback object (sequence, master, executor's object).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Object reference. Either command-line object syntax ("Sequence 1", "Sequence 1 Cue 3", "Fixture 101", "Group 5", "Macro 2", "Page 1.201"), a dotted show-data path from a root ("DataPool.Sequences", "Root.ShowData", "Patch.Fixtures"), a numeric address like "14.14.1.6.1", or one of: Root, ShowData, DataPool, SelectedSequence, CurrentCue, Patch, Programmer, Selection, CurrentExecPage. | |
| tokens | No | Fader tokens (default ['FaderMaster']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. 'Read' implies a non-mutating operation and it mentions returning display text, but it does not disclose permissions, side effects, or whether it alters playback state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler. It states the action and return content efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with full schema coverage and no output schema, the description is largely sufficient: it states what is read and that display text is returned. It leaves some gaps around return structure and permissions, but those are minor for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents 'ref' and 'tokens'. The description adds only that the object is a playback object, which is already implied by the tool name and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and resource ('fader values and display text') and scopes the operation to a playback object. It implicitly distinguishes itself from the sibling gma3_set_fader by being a read operation, but it does not explicitly name or contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not say when to prefer this over gma3_get_object, gma3_playback, or gma3_set_fader.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_get_objectRead a show objectA
Read an object from the show data: name, class, address, all properties (as display text), optionally the property schema and a listing of its children. Use this to inspect sequences, cues, executors, fixtures, presets, groups, macros, pages, settings, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Object reference. Either command-line object syntax ("Sequence 1", "Sequence 1 Cue 3", "Fixture 101", "Group 5", "Macro 2", "Page 1.201"), a dotted show-data path from a root ("DataPool.Sequences", "Root.ShowData", "Patch.Fixtures"), a numeric address like "14.14.1.6.1", or one of: Root, ShowData, DataPool, SelectedSequence, CurrentCue, Patch, Programmer, Selection, CurrentExecPage. | |
| schema | No | Include property schema (name, type, readOnly, enum) | |
| children | No | Include a listing of child objects (default false) | |
| properties | No | Include property values (default true) | |
| child_limit | No | ||
| child_fields | No | Property names to include for each child | |
| child_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose meaningful behaviour: the returned content set (name, class, address, properties), that property values come back "as display text" (i.e. formatted strings, not typed values), and that schema/children are opt-in. It stops short of error handling for bad refs or pagination semantics for large child listings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences: the return contents are front-loaded, the optional extras follow, and the usage sentence closes with concrete object-type examples. No filler and no repetition of the tool title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-output-schema, no-annotation tool, describing the return contents largely compensates for the absent output schema. The remaining gap is the child-* pagination parameters and any statement of read-only safety, which nothing else in the definition covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, so the schema already documents ref, schema, children, properties and child_fields. The description reinforces the schema/children/properties toggles and adds the "display text" nuance, but says nothing about child_limit, child_offset or child_fields, leaving the pagination behaviour of children listings undefined in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Read) and resource (an object from the show data) and enumerates the returned fields: name, class, address, all properties, optional schema and children. It is clearly not the same as a mutator, but it never distinguishes itself from overlapping siblings such as gma3_objects, gma3_dump, gma3_list_children, gma3_sequences or gma3_cues, so an agent must guess which generic reader to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this to inspect sequences, cues, executors, fixtures, presets, groups, macros, pages, settings, etc." gives a concrete context of use across object domains. However, it offers no when-not guidance and no routing to the alternatives that clearly overlap (gma3_list_children for children, gma3_fixtures for fixtures, gma3_pool for pools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_goto_cueGoto a cue (playback)A
PLAYBACK MUTATION: sends Goto Sequence n Cue c [Fade s], which jumps the sequence to that cue and changes live output. Goto is a playback mutation. A succeeded outcome means the console accepted the command; the crossfade runs asynchronously and its completion is not verified. Refuses (nothing sent) when the cue does not exist. Does not change the selection or the programmer. Verification: not_requested (the current cue is not read back). The mutation lock orders only this server's own mutations; it does not isolate the operation from another console operator or another client.
| Name | Required | Description | Default |
|---|---|---|---|
| cue | Yes | One cue number, fractional allowed (2, 2.5, "10.001"; max three decimals). Ranges (Thru, +) are rejected. | |
| fade | No | Crossfade time in seconds that overrides the cue's own timing (Goto ... Fade s). 0 is a value. | |
| sequence | No | Sequence number (1..99999). Required unless use_selected_sequence is true; exactly one of the two. | |
| use_selected_sequence | No | Act on the console's currently selected sequence. It is resolved to its sequence number first, and the command is sent with that explicit number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers: it identifies the operation as a playback mutation with live-output impact, explains that success only means command acceptance, discloses asynchronous crossfade completion that is not verified, states the refusal condition, clarifies selection/programmer are untouched, records verification as not_requested, and limits the mutation lock's scope against other operators or clients.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the operation type and command form, and each sentence contributes a distinct fact (mutation semantics, async caveat, refusal, non-effects, verification status, lock scope). It is dense but readable; minor redundancy appears in 'PLAYBACK MUTATION' followed by 'Goto is a playback mutation.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description provides everything an agent needs to invoke it safely: command shape, required parameter mapping, failure condition, concurrency limitations, and the distinction between command acceptance and crossfade completion. Return values need not be explained because no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter thoroughly. The description adds the command template ('Goto Sequence n Cue c [Fade s]') which maps three parameters to their positions, but provides no extra semantics (defaults, edge cases, or interactions) beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair ('sends Goto Sequence n Cue c', 'jumps the sequence to that cue and changes live output') and distinguishes the tool's side-effect profile from programmer/selection tools ('Does not change the selection or the programmer'). It does not explicitly name an alternative sibling such as gma3_playback or gma3_command, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and when it refuses ('Refuses (nothing sent) when the cue does not exist'), but never states when an agent should choose this over siblings like gma3_playback, gma3_command, or gma3_select. Usage is only implied by the effect, with no explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_hardkeyPress a logical MA keyA
Press, release or tap a logical MA hardkey (PLEASE, STORE, ESC, CLEAR, OOPS, NUM0-9, EXEC with executor, MA) on the console through the bridge's keyboard backend: REAL console keys are pressed through the operator's shortcut table or a verified native route (MA = LeftShift, PLEASE = Enter redirect); unmapped, ambiguous or colliding routes are refused before dispatch. tap presses and releases with hold_ms (default 50, max 5000) and returns once the release was attempted; exclusive: true is the intended long-press (every other input is refused meanwhile). keys (2-4 logical keys) presses a combination in order and releases newest first (chord tap with action tap; a hold with action press). press holds the key until release or the interaction/lease ends and REQUIRES an interaction id (gma3_input_interaction acquire). While any key is held, an interaction is open or a release stayed unresolved, the bridge refuses commands/property/playback/fader/Lua from every client with [busy]. Input is OFF until the operator runs Plugin "gma3_mcp_bridge" "input=keyboard" (release works while off). Input is not display-scoped. The result never claims a UI effect: verification is unavailable unless an observable (aggregate MASTATE for MA) showed the expected value; a release on this backend is 'dispatched', never 'confirmed'. Nothing is retried or replayed; an uncertain dispatch is reported as unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Logical MA key resolved through the operator's live shortcut table (MA = LeftShift natively, PLEASE = the native Enter redirect). MA1/MA2 are unsupported. | |
| keys | No | A combination pressed in order (e.g. [MA, STORE]) and released newest first. Instead of key. | |
| action | Yes | ||
| display | No | Display index passed to the console as API context only. It must exist; input is NOT display-scoped on onPC 2.5.1 (no routing, focus or pop-up placement is promised). | |
| hold_ms | No | tap only: how long the key (or chord) stays down before the scheduled release (default 50). | |
| executor | No | ExecutorIndex of a mapped executor shortcut; required with key EXEC, refused otherwise. | |
| exclusive | No | tap/press of a single key only: the intended long-press; refused while anything else is held, and refuses every other input until released. | |
| interaction | No | Id from gma3_input_interaction acquire. Required for a standalone hold (press). A bounded tap, chord tap, text or sequence may run without one (it owns an interaction for its duration) but must pass the id while this server has one open. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so thoroughly: it discloses the [busy] refusal while any key is held, the input=OFF gating, that releases are 'dispatched' never 'confirmed', that nothing is retried/replayed, and that uncertain dispatch is reported as unknown. This is unusually rich, honest behavioral disclosure for a mutation-like tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and packed with relevant signal, but it is a single dense paragraph with no structural breaks, making it harder to scan. Every clause roughly earns its place for a genuinely complex tool, so 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, 8-parameter tool with no output schema and no annotations, the description is complete: it covers routing, preconditions, concurrency/refusal semantics, verification limits, and result interpretation. Nothing an agent needs to call it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents key, keys, action, display, hold_ms, executor, exclusive and interaction. The description largely restates this (hold_ms default/max, keys 2-4, interaction required for press), adding little syntax or meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb set (press/release/tap) and resource (logical MA hardkeys via the bridge keyboard backend), listing the exact keys and the routing mechanism. An agent can tell broadly what it does. It does not, however, explicitly distinguish itself from sibling tools like gma3_keyboard or gma3_type, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong operational context: press REQUIRES an interaction id from gma3_input_interaction, exclusive:true is the intended long-press, and input is off until the operator enables input=keyboard. It explains when refusals occur and preconditions, but names no alternative sibling for comparison, so 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_hardkeys_release_allRelease every key this server holdsA
Release every key held by this server's bridge session, newest first, with the stored press tuples (never re-resolved), and with recover: true also re-attempt the releases that stayed unresolved (a remapped or disabled shortcut, a release that raised). Works while input is disabled: this is the recovery path. A release on the keyboard backend is 'dispatched' (no per-key readback), an unresolved one is reported as unknown and stays as a record until it succeeds or the operator runs Plugin "gma3_mcp_bridge" "input recover". Only this server's keys are affected; another client's or a physical operator's keys are not.
| Name | Required | Description | Default |
|---|---|---|---|
| recover | No | Also re-attempt this server's unresolved releases (after the operator restored a remapped route or re-enabled shortcuts). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: release ordering (newest first), that stored press tuples are never re-resolved, that the keyboard backend only 'dispatches' with no per-key readback, that unresolved releases are reported as unknown and persist until they succeed, and exactly whose keys are affected. These are non-obvious behavioral traits an agent could not infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and its scope are front-loaded, and nearly every clause adds operational information. It is a single dense run-on sentence with strained phrasing ('with recover: true also re-attempt the releases that stayed unresolved') and a slightly redundant closing scope sentence, so readability suffers even though little is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must cover behavior and results, and it does: it explains what a successful dispatch looks like, how unresolved releases surface, and that records persist. The only loose end is what the call actually returns (list of keys, counts), which an agent calling this would likely want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the single 'recover' boolean and the baseline is 3. The description goes beyond it by explaining the concrete failure conditions recover addresses (a remapped or disabled shortcut, a release that raised) and the persistence semantics of unresolved records.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Release every key held by this server's bridge session'. The qualifier 'this server's bridge session' and the closing scope sentence ('another client's or a physical operator's keys are not') distinguish it cleanly from siblings like gma3_hardkeys_status or gma3_keyboard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear conditional context: 'Works while input is disabled: this is the recovery path', which tells the agent when this tool is the right choice. It also names the operator-side recovery command. It does not, however, explicitly contrast with the sibling status/release tools by name, so the routing guidance is contextual rather than exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_hardkeys_statusInput capability and ownership statusA
Read-only: whether console input is enabled and on which backend (keyboard = real keys, fake = nothing reaches the console), the backend's limitations, this server's session, every ownership record (owner, logical key, stored PC tuple, state, lease and deadline, dispatch outcomes, aggregate MASTATE readback, unresolved cleanup failures), open interactions, the running or last sequence, capacity, and the busy descriptor the bridge applies to commands. Ownership records are responsibility for recovery, not physical key state (injected and physical input share one key state). Works while input is disabled; releases nothing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does so well: it declares read-only semantics, that it functions while input is disabled, that it releases nothing, and it explains the backend distinction (keyboard = real keys, fake = nothing reaches the console). It also clarifies that ownership records are recovery responsibility, not physical key state. It does not cover auth or failure behavior, but the disclosure is unusually rich for a status tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with 'Read-only', which is good, but the payload is delivered as one very long run-on sentence enumerating roughly a dozen field groups, followed by a dense semantics sentence. Every item is arguably informative for a status tool with no output schema, but the structure is heavy and would benefit from breaking the enumeration into a shorter list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe the return payload, and it does so comprehensively: ownership record fields (owner, logical key, PC tuple, state, lease/deadline, dispatch outcomes, MASTATE readback, cleanup failures), interactions, sequence, capacity, and busy descriptor. For a read-only tool with zero parameters this is close to complete; only return format/ordering details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is no parameter syntax for the description to add or omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific read operation ('Read-only') and enumerates exactly what the status covers: input enablement, backend, ownership records, interactions, sequence, capacity, busy descriptor. An agent can tell it is a diagnostic read rather than a mutation. It does not explicitly distinguish itself from siblings like gma3_status or gma3_feedback, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'Works while input is disabled; releases nothing' signals this is a safe diagnostic read and implicitly contrasts with gma3_hardkeys_release_all. However, it never says when to call this versus gma3_status, gma3_input_interaction, or gma3_feedback, so the routing guidance 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.
gma3_helpgrandMA3 manual lookupA
Look up a topic in the grandMA3 user manual shipped with onPC. Pass a command keyword (e.g. 'Go', 'Store', 'Assign', 'SendOSC', 'Lua', 'At', 'Fade') or a topic phrase (e.g. 'osc', 'cue timing', 'phaser'). Returns the page text, or a list of matching pages to choose from.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| max_chars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the return shape (page text, or a list of matching pages), which is real behavioral value, but says nothing about what max_chars does, whether results are truncated, or any index/caching constraints. Adequate for a low-risk read, with gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then input format with inline examples, then return behavior. No filler, nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only manual lookup with no output schema and no annotations, the description covers purpose, input phrasing, and result format. The only real omission is the semantics of max_chars and any hint about result volume or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It compensates well for 'topic' by giving seven concrete keyword examples and three phrase examples, clarifying the expected granularity, but never explains the 'max_chars' parameter at all, leaving half the parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up), resource (grandMA3 user manual shipped with onPC), and output form. It is unmistakably distinct from the dozens of operational siblings like gma3_command or gma3_objects, which act on the console rather than explain it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent exactly what to pass (a command keyword such as 'Go'/'Store'/'Lua', or a topic phrase such as 'cue timing') and implies a fallback flow when it returns a list of matching pages to choose from. No explicit when-not-to-use or alternative tool is named, but no sibling offers manual lookup either.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_input_interactionAcquire, renew or end an input interactionA
Explicit ownership for console key input across several calls (KB-05). acquire returns a leased interaction id bound to this server's bridge connection; pass it to gma3_hardkey/gma3_keyboard press and release, gma3_type and gma3_input_sequence. While it is open the bridge refuses commands, property changes, playback, faders and Lua from EVERY client with [busy] (reads stay available), so end it as soon as the interaction is done. renew moves the lease deadline (default 15 s, max 120 s; nothing is pressed). end releases every key the interaction holds (newest first), aborts its sequence and reports what stayed unresolved. An interaction is never resumed: after a lease expiry, a bridge reconnect or end, acquire a new one. Needs input enabled on the console (Plugin "gma3_mcp_bridge" "input=keyboard"); end works while input is disabled. Nothing here presses a key.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Free label shown in status (acquire). | |
| action | Yes | ||
| lease_ms | No | Lease in ms for acquire/renew (default 15000, max 120000). Expiry releases the interaction's keys. | |
| interaction | No | The interaction id (renew, end). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lease defaults/max are also in the schema, but the description adds the behavioral payload: bridge refuses all writes with [busy], reads stay available, renew moves the deadline without pressing, end releases keys newest-first/aborts the sequence/reports unresolved, and interactions are never resumed. Effectively complete disclosure-bearing text for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded with the acquire-lifecycle model, then the deadline and end semantics. Nearly every clause carries information, though the single long paragraph is heavier than ideal for scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations or output schema, the description is still sufficient: lease, busy-blocking, prerequisites, and failure modes are all covered. Nothing an agent needs to acquire/renew/end correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema documents most parameters. The description adds the consequence of lease_ms expiry (keys released) and ties interaction to renew/end across calls, going beyond the schema's terse field notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (acquire/renew/end) and resource (a leased input interaction) and explicitly names the sibling tools that consume the returned id (gma3_hardkey/gma3_keyboard, gma3_type, gma3_input_sequence). An agent can distinguish it from those siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the exact coordination model: acquire when you need console key input across several calls, end as soon as the interaction is done, renew when you need more time. It also states prerequisites (input must be enabled) and the edge case (end works while input is disabled), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_input_sequenceRun a bounded input sequenceA
Run an ordered, bounded sequence of console input under one interaction owner: taps, presses, releases, combinations, text and waits (at most 16 steps, about 30 s of holds/waits/typing). The bridge validates EVERY step (routes, keys, text policy, context) before the first event; one invalid step means nothing is dispatched. Steps are then serviced one after another by the plugin loop (a tap waits for its release, text goes out in chunks with its context rechecked), and a failure stops the sequence: later steps are reported as skipped, keys the sequence still holds are released newest first, nothing is replayed. Each step ends succeeded, failed (nothing of it dispatched), unknown (a dispatch raised or a release stayed unresolved: the console may have received it) or skipped. A tap is complete only after its release was attempted; completed never means a UI effect was verified (see verification/readback). Pass interaction to run inside an acquired interaction, otherwise one is begun and ended for the sequence. Commands from every client are [busy] while it runs. Input is OFF until the operator runs Plugin "gma3_mcp_bridge" "input=keyboard". Real console keys are pressed.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| steps | Yes | ||
| lease_ms | No | Lease of the interaction begun for this sequence (default: twice its estimated duration + 2 s). | |
| interaction | No | Id from gma3_input_interaction acquire. Required for a standalone hold (press). A bounded tap, chord tap, text or sequence may run without one (it owns an interaction for its duration) but must pass the id while this server has one open. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses pre-dispatch validation of EVERY step (one invalid step means nothing dispatched), sequential servicing with context rechecks, failure propagation (later steps skipped, held keys released newest-first, nothing replayed), the succeeded/failed/unknown/skipped status taxonomy, the caveat that 'completed' does not mean a UI effect was verified, the [busy] lock on all clients during the run, and the requirement that input be enabled via the bridge plugin. That is unusually thorough behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb+scope, which is good, but the paragraph is long and dense, packing validation, lifecycle, statuses, locking, and setup requirements into one run-on block. Key facts (16-step cap, ~30 s budget) compete with edge-case semantics; a bulleted split of lifecycle vs. step kinds vs. preconditions would have earned a higher score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain returns; it does so via the status taxonomy (succeeded/failed/unknown/skipped) and failure semantics, which is sufficient. Remaining gaps are minor: no explicit guidance on label or lease_ms semantics, and the interaction parameter's role is described but not contrasted against gma3_input_interaction's own lifecycle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description mostly mirrors what the schema already documents (step cap, time budget, interaction ownership) without adding syntax or defaults for the under-documented parameters like lease_ms, label, or the per-step modifier flags. It does add the operational nuance that a sequence owns an interaction if none is passed, but the 50% coverage gap is not fully compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Run an ordered, bounded sequence of console input' with the exact step types (taps, presses, releases, combinations, text, waits) and limits (16 steps, ~30 s). It distinguishes itself from most siblings by describing the sequence-level orchestration, though it never names or routes to the most obvious alternatives like gma3_hardkey, gma3_type, or gma3_keyboard. A single 'use this instead of individual input calls when...' sentence would have earned a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated: the description explains what the sequence does and mentions the interaction parameter, but never says when to prefer this tool over calling gma3_hardkey/gma3_keyboard/gma3_type individually, nor when not to use it. For a tool with three obvious input-sibling alternatives, that is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_keyboardPress a PC key with explicit modifiersA
Press, release or tap a raw PC key (case-sensitive Enums.KeyboardCodes name: Enter, Escape, F1, 5, A, LeftShift ...) with shift/ctrl/alt/numlock passed explicitly on the press AND the release, through the console's Keyboard() emulation. What the key does depends on the operator's user profile, keyboard shortcut enablement and the focused UI element (a mapped key may edit a focused field instead of acting as a hardkey); nothing is substituted or resolved for you, prefer gma3_hardkey for MA keys. tap returns after the release was attempted; press REQUIRES an interaction id; release uses the stored press tuple. Same gate, ownership, busy and verification rules as gma3_hardkey: real keys, input OFF until the operator runs Plugin "gma3_mcp_bridge" "input=keyboard", not display-scoped, commands from every client are [busy] while a key is held, UI effect unverified, nothing retried or replayed.
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | PC modifier passed explicitly on the press and the release (one event with the flag; no modifier key is pressed separately). Only with pc_key. | |
| ctrl | No | PC modifier passed explicitly on the press and the release (one event with the flag; no modifier key is pressed separately). Only with pc_key. | |
| shift | No | PC modifier passed explicitly on the press and the release (one event with the flag; no modifier key is pressed separately). Only with pc_key. | |
| action | Yes | ||
| pc_key | Yes | Case-sensitive Enums.KeyboardCodes name as the console spells it (Enter, Escape, LeftShift, F1, 5, A). Validated on the console before dispatch. | |
| display | No | Display index passed to the console as API context only. It must exist; input is NOT display-scoped on onPC 2.5.1 (no routing, focus or pop-up placement is promised). | |
| hold_ms | No | tap only (default 50). | |
| numlock | No | Numlock flag passed explicitly on both events. Only with pc_key. | |
| exclusive | No | The intended long-press (see gma3_hardkey). | |
| interaction | No | Id from gma3_input_interaction acquire. Required for a standalone hold (press). A bounded tap, chord tap, text or sequence may run without one (it owns an interaction for its duration) but must pass the id while this server has one open. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and succeeds: it discloses that keys are real, input is OFF until the operator loads the plugin, commands are [busy] while a key is held, the UI effect is unverified, and nothing is retried or replayed. It also specifies lifecycle semantics (tap returns after release attempted, press requires an interaction id, release uses the stored press tuple).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb+resource, and nearly every sentence conveys operationally useful constraints rather than filler. It is a dense run-on paragraph with a few formatting artifacts (double spaces inside the quoted plugin invocation), which costs a point but not the underlying value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, non-idempotent input tool with no output schema and no annotations, the description covers gating, ownership, busy state, verification expectations and action semantics. Nothing 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 90%, so the baseline is 3, but the description adds real procedural meaning the schema does not: the action-dependent requirements (press needs an interaction id; release reuses the stored press tuple), and that modifiers are passed on both the press and the release rather than as separate key presses. Only the hold_ms/display/exclusive details remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (press, release, tap) on a specific resource (raw PC key via Enums.KeyboardCodes) and explains the mechanism (console Keyboard() emulation). It explicitly distinguishes itself from gma3_hardkey, so an agent can route between them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to prefer gma3_hardkey for MA keys, warns that behavior depends on user profile, shortcut enablement and focused UI element, and enumerates prerequisites (input OFF until the operator runs the plugin, ownership/busy rules). When-to-use and when-to-use-something-else are both given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_label_executorLabel an executor (renames its assigned object)A
Label the object assigned to the executor at Page .: sends 'Label Page . ""'. On grandMA3 2.5.1 an executor has no label of its own and always shows its assigned object's name, so this RENAMES THE ASSIGNED SEQUENCE (or other object) everywhere it appears: in its pool and on every other executor it is assigned to. Fails before sending anything when the page does not exist or the executor is empty (nothing to label). Does not change the selection or the programmer and never sends a playback keyword. verify (default true) reads back the executor's displayed name and assigned object and the assigned object's own Name; nothing else is verified. Mutations from this server are serialised, but not isolated from other operators or clients.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Executor page number (1-9999); the page must exist. | |
| label | Yes | The new name for the assigned object. Names must not contain \ " $ & * ? , . ; ^ { } | ~ (the console strips them); leading/trailing spaces are trimmed. | |
| verify | No | Read the executor and its assigned object back and compare (default true). | |
| executor | Yes | Executor number on that page: 101-190 (keys), 201-290 (faders), 301-390 and 401-490 (knobs), plus the Xkeys 191-198 and 291-298. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the exact command sent, the broadcast side effect (renames the object everywhere it appears, including other executors), failure-before-send semantics, no selection/programmer impact, verify's precise read-back scope, and that mutations are serialised but not isolated from other clients.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the critical renaming caveat, and every sentence conveys operational meaning. It is dense and runs long for a four-parameter tool, but little is expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers what an agent needs: command semantics, side effects, failure conditions, verify behavior, and concurrency caveats. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value the schema does not: it explains what verify actually reads back (executor's displayed name, assigned object, and the assigned object's own Name), reinforcement that page/executor must exist, and the broadcast consequence of the label parameter's effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Label the object assigned to the executor at Page <p>.<e>') and immediately clarifies the surprising semantics — that on grandMA3 2.5.1 this RENAMES THE ASSIGNED SEQUENCE, not the executor. That distinction separates it from siblings like gma3_executor_settings and gma3_assign_to_executor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear preconditions and exclusions: fails before sending anything when the page does not exist or the executor is empty, and does not change selection/programmer or send a playback keyword. It does not, however, name an alternative tool for renaming the underlying object directly, so routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_list_childrenList child objectsA
List the children of an object (e.g. cues of a sequence, items of a pool, executors of a page) with name, class, address and index, plus optional property values per child. Paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Object reference. Either command-line object syntax ("Sequence 1", "Sequence 1 Cue 3", "Fixture 101", "Group 5", "Macro 2", "Page 1.201"), a dotted show-data path from a root ("DataPool.Sequences", "Root.ShowData", "Patch.Fixtures"), a numeric address like "14.14.1.6.1", or one of: Root, ShowData, DataPool, SelectedSequence, CurrentCue, Patch, Programmer, Selection, CurrentExecPage. | |
| limit | No | Max items (default 200) | |
| fields | No | Property names to read for each child, e.g. ['No','Name','TrigType','TrigTime'] | |
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden, and it does disclose the per-child return shape (name, class, address, index, optional property values) plus that results are paginated. It does not state that the operation is read-only, note any permission/auth requirements, or explain behavior on an invalid ref, so the coverage is good but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One well-formed sentence front-loads the core behavior and scope, with the parenthetical examples earning their place by disambiguating 'children'. The trailing "Paginated." is terse but informative, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so describing the returned child fields in the description is the right call, and pagination is called out. What is missing is minor: how to discover valid refs and what happens on an unrecognized ref, which an agent might need for a listing tool whose sole required parameter is a free-form reference string.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents most parameters, including the rich ref syntax and the limit default. The description adds only a light gloss on 'fields' ("optional property values per child") and nothing on ref, limit or offset beyond what the schema says, so it lands at the high-coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the children of an object") and immediately anchors the abstract term with concrete examples (cues of a sequence, items of a pool, executors of a page), which is genuinely clarifying. It implicitly distinguishes itself from single-object readers like gma3_get_object, but never names or contrasts a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The examples imply the situation in which the tool applies, so usage is inferable. However there is no explicit when-to-use vs alternatives guidance (e.g. when to prefer this over gma3_get_object, gma3_objects, gma3_dump, or gma3_cues), and no stated preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_luaRun Lua inside grandMA3A
Evaluate Lua 5.4 code inside the grandMA3 Lua engine and return the result(s) as JSON. The code is first compiled as an expression ('return '), then as a statement block. All grandMA3 Lua API functions are available (Cmd, ObjectList, DataPool, Root, ShowData, Patch, Programmer, SelectedSequence, GetCurrentCue, GetExecutor, GetVar/SetVar, Printf, Echo, Enums, ...). Object handles are returned as {name, class, addr, addrNative, index, childCount}; use handle:Get('Prop') to read properties, :Children(), :Count(), :Ptr(i). Examples: 'SelectedSequence().name', 'GetCurrentCue():Get("No")', 'DataPool().Sequences:Count()', 'local t={} for i,c in ipairs(ObjectList("Fixture Thru")) do t[#t+1]=c.name end return t'. Use gma3_lua_api to look up function signatures. This capability is OFF by default on the console: the operator enables it by starting the bridge with Plugin "gma3_mcp_bridge" "lua" or running Plugin "gma3_mcp_bridge" "lua on" (gma3_status shows the policy). Each request runs under the console's execution budget (default 5 s wall-clock / 20 M VM instructions, operator-configurable) and is aborted with an error when it exceeds it, so keep scripts short and prefer the structured tools (gma3_get_object, gma3_list_children, gma3_objects) for bulk reads. By default the console's own hook on the plugin thread is preserved, which means the instruction budget is NOT enforced and the deadline is only checked when the script yields or returns: a script that loops without yielding cannot be stopped (gma3_status shows lua.bounded; the result's budget.instructionHookEnforced says what applied). The operator can start the bridge with luahook=replace to enforce hard quotas. Because a script may call Cmd() or Set(), every gma3_lua request is serialised with this server's other mutations (it waits for a running workflow and blocks later ones while it runs).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Lua code to evaluate | |
| timeout_ms | No | Request timeout (default 15000). Also passed to the console as the wall-clock execution budget, capped by the console's own limit, so the code stops when the client stops waiting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden — and it discloses a great deal: the capability is off by default with exact enable commands, the default budget (5 s / 20 M instructions), abort-on-exceed behavior, that the console hook is preserved by default so the budget is NOT enforced for non-yielding loops, and that luahook=replace enforces hard quotas. The serialisation with other mutations is also stated. Minor gap: it does not describe the result JSON shape beyond handle fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information-dense and front-loaded with the purpose, followed by handle format, examples, enabling procedure, budget semantics, and serialisation. Every sentence earns its place, but it is a single very long block with a bare API-function list that could be tightened or structured for scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, high-risk tool with no output schema and no annotations, the description covers execution model, safety profile, budget limits, enablement, error conditions, concurrency, and return format. An agent has everything needed to invoke it correctly or choose an alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds genuine meaning about the code parameter (compiled first as 'return <code>' then as a statement block) and supplies concrete examples like 'SelectedSequence().name'. The timeout_ms description ties into the budget semantics, reinforcing coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Evaluate) and resource (Lua 5.4 code) with the exact engine (grandMA3 Lua engine) and a clearly stated return (JSON). It explicitly differentiates from siblings by naming gma3_get_object, gma3_list_children, and gma3_objects as preferred for bulk reads, so an agent can distinguish 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (arbitrary Lua evaluation) and when-not-to-use ('prefer the structured tools ... for bulk reads', naming three alternatives), plus routing to gma3_lua_api for signatures. It also states the critical precondition that the capability is OFF by default and how the operator enables it, and points to gma3_status for the policy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_lua_apiSearch the grandMA3 Lua APIA
Search the live grandMA3 Lua API descriptor (function name, arguments, return values) for both object-free functions (Cmd, ObjectList, …) and object methods (Get, Children, SetFader, …). Leave query empty to list everything.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| query | No | Case-insensitive substring to match against names, arguments and returns |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'Search the live ... descriptor' implies a read-only lookup and it discloses the return shape (name, arguments, returns), but it never explicitly confirms there are no side effects or that results reflect the running system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler; the resource and scope are front-loaded, and the enumeration hint follows naturally. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description still conveys what is searched and what comes back (names, arguments, returns), which is enough for an agent to call it correctly. It stops short of naming the sibling it complements or confirming read-only behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% — the query parameter is documented in-schema, but the kind enum is not. The description compensates by explaining the two categories ('object-free functions' vs 'object methods') and the empty-query listing behavior, covering the meaning of both parameters even if it never spells out the 'all' enum value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('grandMA3 Lua API descriptor') and even specifies the fields searched (function name, arguments, return values) plus the two function categories. It does not explicitly distinguish itself from the sibling gma3_lua (which presumably executes Lua), so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete operational hint ('Leave query empty to list everything'), which tells the agent how to enumerate rather than search. It never states when to reach for this tool versus gma3_lua or gma3_help, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_macrosRead the macro pool or one macroA
Read-only. Without macro: the macro pool (number, name, line count; offset/limit, default 100). With macro: its name, note, lock, CLI, the line it is running now (null when idle) and every line exactly as stored (command, wait as seconds / "follow" / "go", enabled, add_to_cmdline, execute, name, note; a name of null is the default). check_references: true also lists the objects each line refers to (Sequence, Cue, Macro, Group, Preset, MAtricks, Page, Master, ...) and whether they exist.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| macro | No | ||
| offset | No | ||
| check_references | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does so well: it declares 'Read-only', documents the null-when-idle running line, the null-name default, and the effect of check_references. It stops short of 5 only because topics like pagination semantics beyond the default and error behavior are not addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the key constraint ('Read-only') and then cleanly segmented by mode and flag. It is dense with parenthetical enumerations, but each enumerated field (wait semantics, add_to_cmdline, etc.) earns its place for a tool with no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe return values, and it does so comprehensively for both modes plus the reference-checking extension. With no annotations and 0% schema coverage, this is complete enough 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it maps macro (pool vs single), offset/limit (default 100), and check_references (lists referred objects and existence) to their meaning. Meaning is added for every parameter, though format details like whether offset/limit are numbers/count are left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reading the macro pool or a single macro, opening with 'Read-only' to signal the operation class. An agent can immediately distinguish it from write/execute siblings like gma3_run_macro, gma3_store_macro, and gma3_edit_macro_line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Without macro: ... With macro: ...' structure clearly explains the two invocation modes and their distinct outputs, giving solid context on how to call it. It does not explicitly name sibling alternatives or exclusions (e.g. gma3_run_macro), so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_matricksRead a MAtricks objectA
Read-only. The per-axis settings of MAtricks : wings, blocks, groups, width, shift, shuffle, and the fade/delay (seconds), phase (degrees) and speed (BPM) distributions as {from, to}; null means None. Also lists other settings that differ from a fresh MAtricks. Sends no command.
| Name | Required | Description | Default |
|---|---|---|---|
| matricks | Yes | MAtricks pool number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so credibly: it declares the operation is read-only, sends no command, defines the {from, to} distribution format, and explains that null means None. It also discloses that non-default settings are listed. Missing only auth/permission or scope caveats, which are minor for a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The read-only qualifier and resource are front-loaded in the first two words, and the dense field list earns its space by telling the agent exactly what comes back. It is lengthy but not padded; a slightly lighter field enumeration would read more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must convey return shape, which it largely does by enumerating fields, defining the distribution format, and specifying null semantics. A read-only single-param tool is well covered, though permission prerequisites are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single required parameter is already documented as 'MAtricks pool number'. The description's 'MAtricks <n>' restates this without adding format, range, or default detail, so it earns the baseline 3 with no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb ('Read') and resource ('MAtricks object'), then enumerates the exact settings returned (wings, blocks, groups, width, shift, shuffle, fade/delay, phase, speed distributions). An agent can distinguish this inspection tool from gma3_configure_matricks and the command-sending siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Read-only' and 'Sends no command' framing implies this is for inspection rather than mutation, which is useful context. However, it never names the write alternative (gma3_configure_matricks) or says when to prefer this over gma3_get_object/gma3_dump; usage 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.
gma3_objectsResolve an object rangeA
Resolve a command-line object range to a list of objects with optional property values. Examples: "Fixture 1 Thru 20", "Fixture Thru" (all fixtures), "Group Thru", "Sequence 1 Thru 10", "Preset 4.1 Thru 4.20", "Page 1.201 Thru 1.215".
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Command-line object range | |
| limit | No | Max items (default 500) | |
| fields | No | Property names to read for each object | |
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core transformation (range → list) and that property values are optional, but says nothing about pagination defaults, error behavior on unparseable ranges, or read-only nature, leaving meaningful behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: purpose first, then a compact examples list. Front-loaded and waste-free, though the example list is long enough to verge on padding for an agent that only needs one representative sample.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param, no-annotation, no-output-schema tool, the description adequately covers purpose and the critical ref syntax. It is slightly thin on return shape details and pagination semantics, but nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the 'ref' description ('Command-line object range') is opaque on its own; the six syntax examples add genuine meaning by showing the exact range grammar the parameter accepts. It does not clarify limit/fields/offset beyond the schema, so a 5 is not warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resolve) and resource (command-line object range → list of objects), and the examples make the operation concrete. It does not explicitly differentiate itself from siblings like gma3_get_object or gma3_list_children, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The examples strongly imply when this tool applies (you have a range expression like 'Fixture 1 Thru 20'), but there is no explicit when-to-use/when-not guidance or named alternative among the many siblings. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_observe_tempoMeasure how fast running sequences advanceA
Read-only. Samples the current cue of 1-8 running sequences for seconds (1-30, default 6) every interval_ms (default 40) and reports the observed step interval next to the configured one: the rate (rate master's effective BPM / 60 x RateScale, or the sequence's own rate fader) and, for chases whose cues are all Time-triggered with one trigger time, the predicted step interval. It starts nothing: run the sequences first. The phaser tempo (speed master) is reported as configured only; phaser output is not observable over the bridge.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No | ||
| sequences | Yes | ||
| interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely succeeds: it declares read-only behavior, the 1-8 sequence scope, sampling duration/interval bounds and defaults, that it starts nothing, and an explicit limitation ('phaser output is not observable over the bridge'). The one unstated trait is that sampling for `seconds` makes this a blocking/long-running call rather than an instant read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the read-only guarantee and the core sampling behavior, and each subsequent clause (rate formula, chase prediction, phaser caveat) adds real information. It is dense and somewhat long, but there is no filler sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description still specifies what is reported (observed vs configured step interval, rate source, predicted step interval for Time-triggered chases) and its boundaries. An agent has everything needed to invoke it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it documents all three parameters with meaning and bounds — `sequences` (1-8 running sequences), `seconds` (1-30, default 6), and `interval_ms` (default 40). This is exactly the value-add a schema-less param set needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Samples the current cue of 1-8 running sequences') and gives the measurement's purpose in the title/description combo. It is clearly distinguishable from siblings like gma3_get_object or gma3_sequences, which retrieve state rather than observing tempo over time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes an explicit precondition: 'It starts nothing: run the sequences first.' This rules out a common misuse. However, it does not name an alternative tool for measuring phaser/speed-master output or point to related 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.
gma3_patch_addAdd fixtures to the patchA
Add count fixtures of one fixture type and DMX mode at consecutive FIDs from fid, patched consecutively from a DMX address (address, or the first free block found from findFreeFrom), or unpatched when neither is given. Pre-checks (nothing sent on failure): the FIDs are free, the whole block is free and fits inside one universe, the mode has a single DMX break. Fixtures are added at the top level of a stage (default: the first stage). Runs one patch session through the patch edit copy, never a dialog: read-only pre-checks (command line at Root, the copy closed, so nobody is in the Patch menu, no modal open, plus the tool's own checks), then enter the copy, apply the change there, an isolation check, commit, and read back. Requires exclusive: true. Patch changes need exclusive use of the console: the isolation check compares fingerprints of the copy and the live patch, left out the touched FIDs, over several seconds. It is best-effort detection of someone else's changes, not a guarantee, and on a mismatch nothing is committed and the copy is left open for the operator. A committed patch change has NO UNDO (Oops does not revert it). Takes about 10 s (mostly the isolation check). When a session cannot be finished, the copy is closed again only if it provably holds no change; otherwise the result says copyLeftOpen: true and the operator resolves it at the console (Menu > Patch, Save and Exit or Discard and Exit). Needs bridge 0.19.0. verify reads the new FIDs back: present, patch addresses, name (when given) and mode.
| Name | Required | Description | Default |
|---|---|---|---|
| fid | Yes | First fixture ID; the block uses fid .. fid+count-1, all of which must be free. | |
| mode | Yes | DMX mode number or name within that type. | |
| name | No | Optional name for the new fixtures (default: the console's naming). | |
| type | Yes | Fixture type number or name, as gma3_patch_types lists it. | |
| count | No | Number of fixtures (1-256, default 1). | |
| stage | No | Stage name (default: the first stage). | |
| verify | No | Read the patch back after the commit and compare (default true). | |
| address | No | DMX start address "U.AAA" (e.g. "2.001"); the block must be free and inside one universe. | |
| exclusive | No | Required, must be true: confirms nobody else uses the console while this runs (see the description). Without it the call is refused and nothing is sent. | |
| findFreeFrom | No | Instead of address: use the first free block from this "U.AAA". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral burden: read-only pre-checks, patch edit copy workflow, isolation check, exclusive use requirement, no undo, ~10s duration, failure handling with copyLeftOpen, bridge version, and verify readback. This is comprehensive for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and then details preconditions, workflow, and failure behavior in a single dense paragraph. Long but largely justified by the tool's complexity; minor repetition (exclusive requirement appears twice) slightly reduces efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity, absent annotations, and no output schema, the description covers purpose, usage conditions, behavioral workflow, failure modes, timing, and version dependency. Nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds inter-parameter semantics beyond individual schema entries: address vs findFreeFrom alternative, unpatched when neither is given, consecutive FID block, and what verify reads back. This meaningfully supplements the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Add' and resource 'fixtures to the patch', with scope including one fixture type, one DMX mode, consecutive FIDs, and address/findFreeFrom/unpatched modes. It clearly distinguishes itself from patch modification or removal siblings by focusing on adding new fixtures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains conditions for address vs findFreeFrom vs unpatched, the exclusive requirement, and pre-checks. However, it does not explicitly name alternative sibling tools like gma3_patch_set or gma3_patch_remove for modifying or removing existing fixtures, leaving that routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_patch_listList patched fixturesA
Read-only. Lists the show's fixtures from the live patch, every stage, sub-fixtures included, in patch order. Each fixture has FID, CID, ID type, name, fixture type, mode, patch address, DMX breaks, stage, depth, parent FID and sub-fixture count. Filter by FID range (fromFid/toFid; fixtures without a numeric FID are omitted when a range is given); paginated (limit default 200, max 2000).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows (default 200, max 2000). | |
| toFid | No | Highest FID to include. | |
| offset | No | Rows to skip (default 0). | |
| fromFid | No | Lowest FID to include. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so reasonably: it opens with 'Read-only' (the key safety signal) and discloses pagination defaults/limits plus the non-obvious rule that fixtures lacking a numeric FID are dropped when a range is supplied. It does not cover error behavior or unsorted-result caveats, but the essential traits are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded: read-only status first, then contents, then filtering/pagination. The returned-field enumeration is long but earns its place given there is no output schema. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema and no annotations, the description enumerates the returned fields and documents the filtering and pagination contract, leaving little ambiguity. It could note ordering guarantees or behavior on empty results, but coverage is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the fromFid/toFid semantics as a range filter and the special-case that non-numeric-FID fixtures are omitted when a range is given. Limit's default/max is repeated from the schema, which adds nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (lists) and resource (the show's fixtures from the live patch), and specifies scope details (every stage, sub-fixtures included, patch order) that separate it from generic listing siblings like gma3_fixtures or gma3_objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the filtering (fromFid/toFid) and pagination mechanics, which imply usage, but never states when to reach for this rather than gma3_fixtures, gma3_patch_types, or gma3_dump, nor any prerequisites. Usage is implied, not directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_patch_removeDelete fixtures from the showA
Delete fixtures by FID from the patch, removing them from the show (with everything that refers to them, e.g. their values in cues and groups: the console handles references). Fixtures with sub-fixtures are refused. Pre-check (nothing sent on failure): every FID exists and has no sub-fixtures. Runs one patch session through the patch edit copy, never a dialog: read-only pre-checks (command line at Root, the copy closed, so nobody is in the Patch menu, no modal open, plus the tool's own checks), then enter the copy, apply the change there, an isolation check, commit, and read back. Requires exclusive: true. Patch changes need exclusive use of the console: the isolation check compares fingerprints of the copy and the live patch, left out the touched FIDs, over several seconds. It is best-effort detection of someone else's changes, not a guarantee, and on a mismatch nothing is committed and the copy is left open for the operator. A committed patch change has NO UNDO (Oops does not revert it). Takes about 10 s (mostly the isolation check). When a session cannot be finished, the copy is closed again only if it provably holds no change; otherwise the result says copyLeftOpen: true and the operator resolves it at the console (Menu > Patch, Save and Exit or Discard and Exit). Needs bridge 0.19.0. verify reads the FIDs back and checks they are gone.
| Name | Required | Description | Default |
|---|---|---|---|
| fids | Yes | Fixture IDs to delete (1-256). | |
| verify | No | Read the patch back after the commit and compare (default true). | |
| exclusive | No | Required, must be true: confirms nobody else uses the console while this runs (see the description). Without it the call is refused and nothing is sent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so exceptionally: nothing is sent on pre-check failure, the patch-session lifecycle (copy, isolation check, commit, read back), the NO UNDO warning, the best-effort nature of the isolation check, the copyLeftOpen:true failure mode, the ~10 s runtime, and the bridge 0.19.0 requirement are all disclosed. This is exactly the behavioral context an agent needs before a destructive, irreversible operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and refusal condition before the operational detail. The text is dense and some sentences are run-ons (the session-lifecycle sentence in particular), but the length is justified by an irreversible operation with a mandatory flag and an operator-resolution failure mode.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a 3-parameter destructive tool with no output schema: it describes the return signal (copyLeftOpen: true), the verification behavior, prerequisites (exclusive, bridge version), and operator remediation steps. Nothing an agent needs 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.
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 genuine meaning beyond the schema: it explains that 'exclusive' is mandatory and why ('confirms nobody else uses the console'), and that 'verify' reads the FIDs back and checks they are gone. It adds value over the structured fields rather than repeating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete fixtures by FID from the patch') plus the cascade scope ('with everything that refers to them, e.g. their values in cues and groups'). It is clearly distinguishable from siblings like gma3_patch_add and gma3_patch_set 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: fixtures with sub-fixtures are refused, exclusive:true is required, and the pre-check condition (every FID exists, no sub-fixtures) tells the agent exactly when the call will be refused. It does not explicitly name alternative tools for related patch tasks, so it falls short of the full when/when-not/alternatives bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_patch_setReaddress, unpatch or rename fixturesA
Change existing fixtures: per edit, a new DMX address (address), unpatch: true, and/or a new name. Addresses are applied together, so fixtures can swap addresses or move across their own current range. Pre-checks (nothing sent on failure): every FID exists, single-break modes only, and the new ranges overlap no other patched fixture. In the copy the bridge re-checks and restores every change of the call on any problem. Runs one patch session through the patch edit copy, never a dialog: read-only pre-checks (command line at Root, the copy closed, so nobody is in the Patch menu, no modal open, plus the tool's own checks), then enter the copy, apply the change there, an isolation check, commit, and read back. Requires exclusive: true. Patch changes need exclusive use of the console: the isolation check compares fingerprints of the copy and the live patch, left out the touched FIDs, over several seconds. It is best-effort detection of someone else's changes, not a guarantee, and on a mismatch nothing is committed and the copy is left open for the operator. A committed patch change has NO UNDO (Oops does not revert it). Takes about 10 s (mostly the isolation check). When a session cannot be finished, the copy is closed again only if it provably holds no change; otherwise the result says copyLeftOpen: true and the operator resolves it at the console (Menu > Patch, Save and Exit or Discard and Exit). Needs bridge 0.19.0. verify reads each edited fixture back (address and/or name).
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | Edits (1-256); each FID at most once. | |
| verify | No | Read the patch back after the commit and compare (default true). | |
| exclusive | No | Required, must be true: confirms nobody else uses the console while this runs (see the description). Without it the call is refused and nothing is sent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: pre-checks run before anything is sent, all changes roll back on any problem, a committed change has NO UNDO, the exclusive isolation check is best-effort not a guarantee, and failure leaves copyLeftOpen:true for operator resolution. This is exceptional disclosure of safety, atomicity, and failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded well, but the description is dense and run-on, with repetition (exclusive:true requirement is stated twice, session steps restated across several sentences) that clouds scanability. Much content earns its place, but tightening would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-stakes, no-undo mutation with no output schema, the description supplies everything needed: verification behavior, ~10s duration, rollback guarantees, copyLeftOpen return signal, bridge version, and operator recovery steps. Nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning beyond the schema: addresses are applied together so fixtures can swap or move across their current range, and verify reads each edited fixture back. It also reinforces why exclusive must be true rather than merely restating the field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resource: 'Change existing fixtures' with per-edit new address, unpatch, and/or new name. The title and first sentence make clear this edits already-patched fixtures, distinguishing it from gma3_patch_add and gma3_patch_remove 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich operating context: requires exclusive:true, needs bridge 0.19.0, takes ~10s, and describes the exact session flow. It does not explicitly name sibling alternatives (patch_add/remove) or state exclusions by name, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_patch_typesList fixture types and DMX modes in the showA
Read-only. Lists the fixture types imported into the show with their DMX modes: number, name, manufacturer, short name, source, and per mode the DMX footprint, the number of DMX breaks and the channels per break. Use the type and mode numbers or names with gma3_patch_add. Only the show's own types are listed; importing a type from the library is not supported yet.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional case-insensitive substring filter on type name, short name or manufacturer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden; it opens with 'Read-only' and discloses a real limitation (only the show's own types are listed; library import unsupported). It does not describe pagination or result size, but for a simple read 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the 'Read-only' safety signal and then packs purpose, return fields, usage routing, and limitation into three tight sentences. The field enumeration is dense but earns its place by describing an otherwise undocumented return shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description valuably enumerates the returned fields (number, name, manufacturer, short name, source, DMX footprint, breaks, channels per break) and notes the library-import limitation. Only minor gaps remain, such as result size or sorting behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'search' parameter is fully documented in the schema, so the baseline is 3. The description adds no additional semantics about the filter beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('lists the fixture types imported into the show') and enumerates the returned fields, clearly distinguishing it from siblings like gma3_patch_list and gma3_patch_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the downstream consumer ('Use the type and mode numbers or names with gma3_patch_add'), which gives clear selection context. It does not state when to prefer this over gma3_patch_list, but the routing guidance is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_phaser_releaseRelease a phaser build or auditionA
The stop/release path for gma3_build_phaser: when the console is in the Preview environment (an interrupted build), clears the Preview programmer and leaves Preview. clear_normal: true (with exclusive: true) also clears the Normal programmer (ClearAll), which stops an effect called there. Reports the environment and what is left.
| Name | Required | Description | Default |
|---|---|---|---|
| exclusive | No | Required with clear_normal. | |
| clear_normal | No | Also ClearAll the Normal programmer (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden and does well: it discloses that Preview is cleared and exited, that clear_normal triggers a ClearAll on the Normal programmer (destroying a running effect there), and that the result reports environment plus leftovers. It omits any permission/auth or error-mode notes, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the relationship to gma3_build_phaser before the mechanics. Jargon (ClearAll, Normal programmer) is domain-appropriate and nothing is filler, though it reads a little run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param mutation tool with no annotations and no output schema, the description covers the trigger, both parameters' effects, and the return ('reports the environment and what is left'). What an agent needs to call it correctly is essentially present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine cross-parameter semantics the schema only hints at ('Required with clear_normal'): the exclusive+clear_normal pairing and that it performs a ClearAll that stops an effect. That dependency explanation is real added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (release/stop the phaser build) and explicitly anchors itself as 'the stop/release path for gma3_build_phaser,' so an agent can pair it with that sibling rather than guessing. It also states the exact state it acts on (Preview environment from an interrupted build).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger condition: use it when the console is stuck in Preview after an interrupted build, and explains the additional clear_normal + exclusive combination. It does not, however, name an alternative for clearing programmers (e.g. gma3_clear_programmer, a live sibling), so the when-not-to-use side 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.
gma3_playbackPlayback controlA
Trigger a playback function on a sequence or executor. Equivalent to commands like 'Go+ Sequence 1', 'Off Executor 201', 'Load Sequence 1 Cue 5'. Targets: 'Sequence 3', 'Executor 201', 'Page 2.201', 'Sequence 1 Cue 4' (for load/go to a cue), 'Master 3.1', 'Macro 5', 'Group 2'.
| Name | Required | Description | Default |
|---|---|---|---|
| fade | No | Optional fade time in seconds (appends 'Fade <s>') | |
| action | Yes | ||
| target | Yes | Object the action applies to, e.g. 'Sequence 1' or 'Executor 201' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the command equivalences that let an agent predict effects of actions like go/off/load, which is real behavioral context, but it never states that this drives live output, whether changes are reversible, or any permission requirements. Useful but incomplete for a live-control mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, then command equivalence, then target formats in a compact two-sentence block with no filler. Slightly dense with example lists, but every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description should do more than it does. It covers purpose, action-to-command mapping, and target syntax, but omits live-impact/side-effect disclosure and any note on error behavior for a 3-parameter live playback tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (baseline 3), and the description meaningfully extends it: the command examples map onto enum values (go, off, load) and the target list ('Page 2.201', 'Master 3.1', 'Macro 5') goes well beyond the schema's single 'Sequence 1' example. The fade parameter is left to the schema, keeping it just below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (trigger) and resource (playback function on a sequence or executor), and grounds it with concrete command equivalents like 'Go+ Sequence 1' and 'Off Executor 201'. It does not explicitly differentiate itself from overlapping siblings such as gma3_command, gma3_goto_cue, or gma3_run_macro, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The equivalent-command examples imply when the tool applies (transport-style playback control), but there is no explicit when-to-use/when-not guidance and no routing to alternatives like gma3_command or gma3_goto_cue. Usage must be inferred from the examples rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_poolList a poolC
List the objects of a pool in the selected data pool: Sequences, Groups, Presets (pool name like 'Presets' lists preset pools; use 'Preset 4' style ref via gma3_list_children for one pool), Macros, Pages, Worlds, Filters, Timecodes, Timers, Layouts, Views, Appearances, MAtricks, Plugins, Cameras, Sounds, ScreenConfigurations, Agendas, Images, Videos, Scribbles, Gels, Datapools.
| Name | Required | Description | Default |
|---|---|---|---|
| pool | Yes | Pool child name of the data pool, e.g. 'Groups', 'Macros', 'PresetPools', 'Sequences', 'Pages' | |
| limit | No | ||
| fields | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it states only that objects are listed. It never says the operation is read-only, nor does it explain pagination even though the schema exposes limit/offset, nor the shape or size of the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first clause, but the trailing enumeration of roughly two dozen pool names is a dense wall of text that is hard to scan. Every item is arguably informative, yet the run-on single sentence costs readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description supplies the pool-name vocabulary an agent needs to invoke the tool, which is real value. It nonetheless omits pagination behavior and return-value expectations for a tool whose schema clearly supports paging.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% — 'pool' is documented, while limit, fields, and offset are bare. The description's enumeration of valid pool names meaningfully reinforces the 'pool' parameter, but it adds nothing for the three undocumented pagination/projection parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('the objects of a pool') and enumerates the pool names it accepts, which lets an agent recognize it against sibling list-style tools. It does not fully disambiguate from gma3_objects or gma3_list_children beyond the one preset-pool note, so it falls short of a clean 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical gives a genuine routing rule: preset pools listed via this tool vs. a single pool via gma3_list_children ('Preset 4' style ref). However there is no general when-to-use guidance versus gma3_objects, gma3_get_object, or gma3_dump, and no prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_presetRead a preset's stored content and references, or a pool's storage defaultsA
Read-only. preset: "." returns what the preset actually stores: per fixture and attribute the mode the value was stored in (selective; global, held by the lowest FID of a fixture type; universal, one holder), value (percent) or steps (each with absolute/relative, width, trans, accel, decel and the preset it integrates; absent layers are the console defaults width/trans 100, accel/decel 0), the phaser layers speedBpm, phase (degrees), measure (beats) and speedMaster (absent: 60 BPM, phase 0), fade/delay, and the source preset of an embedded value; plus PresetMode, StoredData, lock, how many objects reference it, and its dependencies (embedded sources) followed recursively with validity (a deleted source is an invalid dependency) and whether that inspection was complete. pool: returns the pool's default mode and input filter and the operator's store preferences (the defaults a store would otherwise use). Needs bridge 0.22.0.
| Name | Required | Description | Default |
|---|---|---|---|
| pool | No | Preset pool number (1-9 feature groups, 21-25 All pools). | |
| preset | No | Preset as "<pool>.<number>", e.g. "4.12". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares read-only, states the 'Needs bridge 0.22.0' requirement, documents the defaults assumed for absent layers (width/trans 100, accel/decel 0, 60 BPM, phase 0), and explains that embedded sources are followed recursively with validity flags. It adds genuine behavioral context about missing data and dependency resolution rather than restating 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded with 'Read-only.' and the version requirement is helpfully placed at the end, but the bulk is one very long run-on sentence enumerating return fields. It is dense and hard to parse, so size and readability suffer even though little is strictly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain what is returned — and it does cover both modes and the recursive dependency inspection thoroughly. Given the complexity of the return structure, the coverage is strong, though the cramped prose slightly limits how completely an agent can absorb it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes further by explaining what each parameter actually retrieves: 'preset' returns per-fixture/attribute stored modes, values, steps, phaser layers, fade/delay and dependencies, while 'pool' returns the pool's default mode, input filter and store preferences. This semantic mapping of parameter-to-output exceeds the bare schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description state a specific verb+resource (read a preset's stored content/references, or a pool's storage defaults) and lay out two distinct modes keyed by parameter. An agent can tell this is a read of preset/pool storage rather than a store or listing. It stops short of explicitly naming which sibling to use when, so it earns a solid 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via the 'preset:' vs 'pool:' parameter modes and the 'Read-only' framing, but never states when to reach for this tool over alternatives such as gma3_pool, gma3_get_object, or gma3_cue_contents. There are no exclusions or prerequisites beyond the bridge version. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_programmerInspect the programmerA
Structured view of active programmer values per UI channel (fixture, subfixture patch index, attribute, value, timing, phaser steps). Scope is explicit: all (every patched (sub)fixture, including unselected ones), selection (SelectionTable) or fixtures (an explicit range). Works with gma3_lua disabled (structured bridge op, plugin >= 0.3.0). Read-only: never changes selection, programmer or playback. ROWS ARE PROGRAMMER CONTENT, NOT OUTPUT VALUES (source "programmer"; use gma3_fixture_output/gma3_dmx for output). A row is emitted only when the console's activity masks show programmer data; value: 0 with present: true is a real zero, an absent row means no programmer value. Multi-step phasers keep every step in steps[] (value is null) with phaser-level fade/delay/speed/phase; phaser.supported is false with a reason when the API shape was unusable. coverage reports whether the scan was complete; when it is not (budget reached, API unavailable) the programmer is NOT claimed empty. Paginated. value is percent, valueRaw the 24-bit integer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (default 200, max 5000). | |
| scope | Yes | all = every patched (sub)fixture; selection = current selection; fixtures = the `fixtures` range. | |
| offset | No | Rows to skip (pagination). | |
| fixtures | No | Required for scope "fixtures": fixture IDs/ranges such as "1 Thru 5", "101 + 103", "Fixture 501.3". Groups are not expanded. | |
| max_channels | No | Scan budget in UI channels per request (default 5000). The scan stops when reached and coverage.complete is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: read-only guarantee ('never changes selection, programmer or playback'), plugin version prerequisite, coverage semantics ('when not complete the programmer is NOT claimed empty'), value:0 with present:true vs absent-row semantics, and phaser step handling. This is unusually rich disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is dense but front-loaded: purpose, scope, read-only status, then the critical 'rows are programmer content' warning, followed by edge-case semantics. Nearly every sentence earns its place, though the volume is heavy for a single description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return shape, and it does: row fields, value/valueRaw units, present/absent semantics, phaser steps[], and coverage.complete. An agent has everything needed to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter (scope, limit, offset, fixtures, max_channels) is already documented in the schema, so the baseline of 3 applies. The description reiterates scope semantics and mentions pagination but adds little syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Structured view of active programmer values per UI channel') and distinguishes itself from siblings by explicitly saying rows are programmer content, not output values, pointing to gma3_fixture_output/gma3_dmx. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the three scope options and their meaning, and routes output-value queries to gma3_fixture_output/gma3_dmx. It clearly establishes the context in which this tool is correct, though it doesn't state explicit exclusions beyond the output-value distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_recipesRead the recipe lines of a preset or cue partA
Read-only. target: {preset: "N.M"} or {sequence, cue, part?} (part 0 by default). Returns every recipe line (standard and phaser) with its selection (group and its members), values (preset), MAtricks, filter, Enabled, SelectionMode, the console's last cooking state, and problems (missing or empty group, missing preset, disabled), plus the target's coverage: per fixture which attributes are cooked (from recipes) and which are stored directly. Lines whose coverage is not predicted (phaser recipes, filters) are flagged; presets that embed others are noted. Needs bridge 0.24.0.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Preset or cue part. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does so well: it declares read-only behavior, the default part value, a bridge version prerequisite ('Needs bridge 0.24.0'), and reports problem states (missing/empty group, missing preset, disabled) plus coverage caveats. It stops short of permission or rate-limit notes, so a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the key fact ('Read-only') and the target spec before the long return-value enumeration. It is dense and reads as one long sentence, but nearly every clause carries distinct information, so it is appropriately sized for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain returns, and it does: recipe lines, selections, values, MAtricks, filter, Enabled, cooking state, problems, and per-fixture coverage. That covers the nested-return complexity well, though some fields (e.g. MAtricks, SelectionMode shapes) remain undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning: the preset format ('N.M'), the mutually exclusive preset vs sequence/cue/part shapes, and the part default of 0. The schema only says 'Preset or cue part,' so this is real added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('recipe lines of a preset or cue part'), and the target forms are spelled out explicitly. An agent can tell this is a read of recipe data rather than a cook (gma3_cook_recipes) or edit (gma3_edit_recipe) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives the target forms and the default (part 0) but never states when to prefer this tool over siblings like gma3_cue_contents, gma3_edit_recipe, or gma3_cook_recipes. Usage is implied by the target specification rather than declared, and no exclusions are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_run_macroRun (Go+) or stop (Off) a macro and observe itA
EXECUTES: action go sends Go+ Macro N (starts it, or continues it after a Go wait); off sends Off Macro N. Then observes the macro's running line for observe_seconds (default 3, max 60): finished, paused_at_go (a manual wait), running, idle. The result separates dispatched (the command was accepted) from observed (the run state seen); it never claims that every line succeeded, because a failing line does not stop a macro. Lines with a (prompt) ask the operator for input.
| Name | Required | Description | Default |
|---|---|---|---|
| macro | Yes | ||
| action | Yes | ||
| interval_ms | No | ||
| observe_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the dispatched-vs-observed split, that a failing line does not stop a macro, and that prompt lines require operator input. It omits permission/auth requirements and concurrency behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'EXECUTES:' and fits the essential semantics into one dense block with no filler. It is somewhat run-on with several clauses chained by dashes and parentheticals, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does describe the return shape (dispatched vs observed, plus the finished/paused_at_go/running/idle states). Combined with zero annotations, the only meaningful gap is the undocumented interval_ms and any error/permission behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It documents 'macro' (N), the 'go'/'off' enum, and observe_seconds (default 3, max 60), but leaves interval_ms completely unexplained, leaving one of four parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('EXECUTES: action go sends Go+ Macro N ... off sends Off Macro N') and even disambiguates the two modes. An agent can tell this apart from gma3_store_macro / gma3_edit_macro_line purely from the verb semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains what 'go' means contextually ('starts it, or continues it after a Go wait'), which implies when each action applies, but never states when to reach for this tool instead of alternatives like gma3_command or gma3_macros. Usage is inferable, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_selectSelect fixturesA
Select fixtures by range or group in the programmer. Sends the selection expression as a command (e.g. Fixture 1 Thru 5, Group 3). CHANGES THE SELECTION: grandMA3 adds to the current selection when it has no active values and replaces it when values are active; set clear_first to send ClearSelection first for a deterministic result. Does NOT clear programmer values (ClearSelection only deselects). Verifies that Selection.CountTotalSelected is >= 1 afterwards and lists the selected members (first 50) for information; it does not assert exact membership. Serialised against this server's other mutations only, not against other operators or clients.
| Name | Required | Description | Default |
|---|---|---|---|
| fixtures | Yes | Fixture IDs/ranges ("1 Thru 5", "1 + 3", "Fixture 101 Thru 110", "Fixture 1.1") or a group ("Group 5"). | |
| clear_first | No | Send ClearSelection before selecting (default false). Deselects only; programmer values are kept. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: mutation semantics (add vs replace based on active values), clear_first deterministic option, non-destructive to programmer values, verification of Selection.CountTotalSelected, listing of first 50 members, and serialization scope. This is exactly the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and then layers behavioral details in a logical order. It is dense but every sentence adds value; slightly long for a two-parameter tool, though justified by the complexity of the selection semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a mutation tool with no annotations and no output schema. It covers side effects, determinism, verification, and serialization limits, leaving no significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters including examples and defaults. The description adds context about clear_first's effect (deterministic result) but no syntax beyond what the schema provides; baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Select fixtures ... in the programmer') and immediately grounds it with concrete examples of selection expressions. An agent can distinguish this from siblings like gma3_clear_programmer or gma3_selection_grid without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when the tool adds to vs. replaces the selection, and names clear_first as the deterministic alternative with its precondition. It also delineates behavior vs. siblings by noting it does not clear programmer values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_selection_gridRead a group's or the selection's gridA
Read-only. With group: the stored fixtures of Group (in the console's stored order, which is patch order) with their selection-grid X/Y/Z cells, PreserveGridPositions, lock, shared cells, bounds and gap count, read from the group's stored data (nothing is selected). Without group: the current selection in the order it was selected, with its grid cells (MAtricks-transformed when MAtricks is active). Distributions follow the cells, not the list order. Fixture ids are FIDs or dotted cell ids ("501.1"). Grid cells are the selection grid MAtricks and phasers use, not physical stage positions. Needs bridge 0.21.0.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Group number; omit to read the current selection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares read-only, specifies ordering semantics (patch order vs selection order), discloses that selection cells are MAtricks-transformed when MAtricks is active, and notes that distributions follow cells rather than list order. It also states the bridge 0.21.0 prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'Read-only.' and the branch structure is easy to parse, with each clause earning its place by adding ordering, transformation, or ID-format detail. It is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, yet the description enumerates the returned cell fields (X/Y/Z, PreserveGridPositions, lock, shared cells, bounds, gap count) and the FID/cell-id formats, making it largely self-sufficient. It stops short of fully documenting the return shape, so it is strong but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 100% schema description coverage, so the schema already documents that omitting 'group' reads the current selection, which the description restates. Baseline 3 applies since the description adds little semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific read operation on a precise resource (a group's stored fixtures or the current selection, with selection-grid cells). It explicitly distinguishes itself from sibling concepts like gma3_fixtures and gma3_matricks by clarifying that these are selection-grid cells, not physical stage positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two branches are clearly gated by the 'group' parameter: with a group it reads stored fixtures, without it reads the current selection, and it notes nothing is selected in the group case. However, it never explicitly names an alternative sibling (e.g. gma3_matricks or gma3_fixtures) or states when NOT to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_sequencesList sequencesB
List all sequences in the selected data pool with cue count and whether they have active playback.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| fields | No | Extra property names to include per sequence | |
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The verb 'List' implies a read-only operation, and it discloses return content (cue count, active playback), which adds useful context. However, it does not state permissions, rate limits, pagination behavior, or anything about how limit/offset affect results—gaps that matter for a list tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the operation, scope, and return highlights with zero wasted words. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description is adequate: it names the resource and key return fields. However, it omits any mention of pagination (limit/offset) or how the 'selected data pool' is determined, leaving meaningful gaps for an agent that needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'fields' is documented). The description does not mention 'limit', 'offset', or 'fields' at all, so it fails to compensate for the undocumented parameters. The word 'all' is also potentially misleading given the presence of limit/offset pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('sequences') and adds scope ('in the selected data pool') plus returned details ('cue count and whether they have active playback'). It is clearly distinguishable from siblings like gma3_configure_sequence (which modifies) and gma3_cues (which handles cues), though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as gma3_objects, gma3_cues, or gma3_configure_sequence. The implied context ('selected data pool') gives some setting but no explicit when-to-use or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_set_attributeSet a fixture attributeA
Set one attribute (Dimmer, Pan, Zoom, ColorRGB_R, ...) to an absolute value in the programmer. Sends Attribute "<name>" At Absolute [<unit keyword>] <value> after establishing the target. Target is explicit: fixtures (range/group) OR use_selection: true. With fixtures the tool sends ClearSelection and then SELECTS exactly those fixtures (the selection changes; previously selected fixtures are not affected unless add_to_selection is true). Never clears programmer values. Without unit the number is interpreted by the user profile's readout. Small explicit targets are pre-checked against the fixture type's attribute list (check_attributes), and after setting, the programmer is read back and compared per fixture in the unit sent (verify); a fixture without the attribute is a mismatch, not a success. Serialised against this server's other mutations only.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Value-type keyword sent with At: percent, percent_fine, physical (degrees/Hz/rpm), natural (attribute's natural readout), decimal8/16/24. Omit to use the console's current readout. | |
| value | Yes | Absolute value. Range depends on unit: percent/percent_fine 0..100, decimal8 0..255, decimal16 0..65535, decimal24 0..16777215, physical/natural any finite number. | |
| verify | No | Read the programmer back after setting (default true): every targeted fixture must hold the value, compared in the unit it was sent in (percent of the attribute range, tolerance 0.5 %). A fixture without the attribute is reported as a mismatch. Needs plugin 0.3.2 or newer; older plugins yield verification 'unavailable'. | |
| fixtures | No | Explicit target: fixture IDs/ranges ("1 Thru 5", "1 + 3 + 5 Thru 8", "Fixture 101.1") or a group ("Group 5"). Exactly one of fixtures / use_selection is required. | |
| attribute | Yes | Attribute name as grandMA3 shows it, e.g. "Dimmer", "Pan", "Tilt", "Zoom", "ColorRGB_R" (letters, digits, _ and . only). | |
| use_selection | No | Apply to the fixtures currently selected on the console (explicit opt-in). Fails before sending when nothing is selected. | |
| add_to_selection | No | With `fixtures`: keep the fixtures already selected and add the target to them, so previously selected fixtures ALSO receive the values (explicit opt-in). Default false: ClearSelection is sent first so exactly the named fixtures are targeted. ClearSelection only deselects; programmer values are never cleared. | |
| check_attributes | No | With `fixtures` resolving to at most 8 fixtures (default true): check each fixture type's attribute list first and fail before sending when a fixture lacks the attribute. Skipped for groups and larger targets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does: it discloses that ClearSelection is sent and the selection changes, that previously selected fixtures are untouched unless add_to_selection is true, and that programmer values are never cleared. It also spells out the pre-check/verify pipeline and the mismatch-is-not-success rule, which an agent could not infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first sentence and then walks through targeting, side effects, and verification in a logical order. Dense but each sentence carries information; the final serialisation note and a few packed clauses edge it just below maximum readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description covers what an agent needs: how to target, what mutations occur to the selection and programmer, how failures are surfaced (pre-check failure, verification mismatch), and version constraints for verify. Nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the effect of omitting `unit` (interpreted by the user profile's readout), the selection side effect of `fixtures`, and the dependency of `check_attributes` on target size. These are behavioural couplings the per-property schema text only partially conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set'), a bounded resource ('one attribute ... to an absolute value in the programmer'), and gives concrete examples (Dimmer, Pan, Zoom, ColorRGB_R). It also names the underlying command sent, so the mechanism is unambiguous. It never explicitly differentiates from nearby siblings that also write values (gma3_set_color, gma3_set_position, gma3_set_property), so it lands at clear-but-not-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: the target must be explicit via `fixtures` OR `use_selection: true`, when the pre-check applies (small explicit targets, <=8 fixtures), when verification runs, and that the operation is serialised against this server's other mutations. It stops short of saying when to prefer this over gma3_set_color/gma3_set_position or gma3_command, so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_set_colorSet RGB colourA
Set ColorRGB_R, ColorRGB_G and ColorRGB_B (each 0..100 %) in the programmer: three commands Attribute "ColorRGB_R" At Absolute Percent <r> etc., stopping at the first the console rejects (partial result). Target is explicit: fixtures OR use_selection: true. With fixtures the tool sends ClearSelection and then SELECTS exactly those fixtures (the selection changes; previously selected fixtures are not affected unless add_to_selection is true). Never clears programmer values. Only the documented ColorRGB_* attributes are supported. Small explicit targets are pre-checked against the fixture type's attributes (check_attributes); after setting, the programmer is read back and each fixture's R, G and B are compared in percent (verify), so a fixture without RGB is a mismatch, not a success. Serialised against this server's other mutations only.
| Name | Required | Description | Default |
|---|---|---|---|
| red | Yes | Red 0..100 (percent) | |
| blue | Yes | Blue 0..100 (percent) | |
| green | Yes | Green 0..100 (percent) | |
| verify | No | Read the programmer back after setting (default true): every targeted fixture must hold the value, compared in the unit it was sent in (percent of the attribute range, tolerance 0.5 %). A fixture without the attribute is reported as a mismatch. Needs plugin 0.3.2 or newer; older plugins yield verification 'unavailable'. | |
| fixtures | No | Explicit target: fixture IDs/ranges ("1 Thru 5", "1 + 3 + 5 Thru 8", "Fixture 101.1") or a group ("Group 5"). Exactly one of fixtures / use_selection is required. | |
| use_selection | No | Apply to the fixtures currently selected on the console (explicit opt-in). Fails before sending when nothing is selected. | |
| add_to_selection | No | With `fixtures`: keep the fixtures already selected and add the target to them, so previously selected fixtures ALSO receive the values (explicit opt-in). Default false: ClearSelection is sent first so exactly the named fixtures are targeted. ClearSelection only deselects; programmer values are never cleared. | |
| check_attributes | No | With `fixtures` resolving to at most 8 fixtures (default true): check each fixture type's attribute list first and fail before sending when a fixture lacks the attribute. Skipped for groups and larger targets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it discloses partial-failure behavior ('stopping at the first the console rejects'), that it never clears programmer values, that ClearSelection fires and mutates the selection when `fixtures` is used, the check/verify round-trip with mismatch reporting, and serialization against other mutations. These are the exact non-obvious traits an agent needs for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first clause, and the remaining sentences each carry distinct operational information. It is dense and somewhat run-on with console-syntax detail, but for an 8-parameter mutation tool every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema, the description covers targeting rules, side effects on selection, failure/partial-result semantics, and verification outcomes, so an agent can call and interpret it correctly. Nothing essential is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all eight parameters (baseline 3). The description still adds meaning by tying parameters together: the explicit-target XOR rule, the ClearSelection side effect of `fixtures`, the add_to_selection interplay, and the read-back/compare behavior behind `verify`. Only marginal duplication keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: set ColorRGB_R/G/B in the programmer, and it scopes the tool by declaring 'Only the documented ColorRGB_* attributes are supported', which implicitly separates it from the generic gma3_set_attribute/gma3_set_property siblings. An agent can tell immediately what this tool operates on and what it writes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is well specified: the target must be either `fixtures` or `use_selection: true`, and small explicit targets trigger pre-checks. It doesn't, however, explicitly compare itself to alternatives like gma3_set_attribute or gma3_select for building selections, so the routing guidance stops short of naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_set_cue_timingSet cue timingA
Edit the timing of an existing cue part (default part 0, the cue's main part) with one Set() per given field: fade (CueInFade), delay (CueInDelay), out_fade (CueOutFade), out_delay (CueOutDelay), snap_delay (SnapDelay), all in seconds; 0 is a value. Only the given fields are changed. Refuses (nothing sent) when the cue part does not exist. No command-line command is sent; selection and programmer are untouched. Reads the changed fields back from the part. Stored fixture values are not touched or verified. The mutation lock orders only this server's own mutations; it does not isolate the operation from another console operator or another client.
| Name | Required | Description | Default |
|---|---|---|---|
| cue | Yes | One cue number, fractional allowed (2, 2.5, "10.001"; max three decimals). Ranges (Thru, +) are rejected. | |
| fade | No | Cue (in) fade time in seconds; 0 is a value. Part property CueInFade. | |
| part | No | Part number (default 0 = the cue's main part). | |
| delay | No | Cue (in) delay time in seconds; 0 is a value. Part property CueInDelay. | |
| verify | No | Read the result back after the mutation (default true). Verification is reported separately from the mutation steps. | |
| out_fade | No | Out fade in seconds (dimmers going down); 0 is a value. Part property CueOutFade. | |
| sequence | No | Sequence number (1..99999). Required unless use_selected_sequence is true; exactly one of the two. | |
| out_delay | No | Out delay in seconds; 0 is a value. Part property CueOutDelay. | |
| snap_delay | No | Snap delay in seconds (Part property SnapDelay); 0 is a value. | |
| use_selected_sequence | No | Act on the console's currently selected sequence. It is resolved to its sequence number first, and the command is sent with that explicit number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: only given fields mutate, nothing is sent on failure, no command-line command is issued, selection and programmer remain untouched, fixture values are not touched or verified, changed fields are read back, and it discloses the mutation-lock limitation (not isolated from other operators/clients). This is unusually candid behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the field list, and every sentence carries substantive information. It is dense and slightly run-on (many semicolon-joined clauses), which costs a point against a cleanly structured alternative, but there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no output schema, the description covers the mutation semantics, failure behavior, side-effect boundaries, the read-back/verify behavior, and the concurrency caveat. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by mapping each field to its console property (fade→CueInFade, out_delay→CueOutDelay, etc.) and stating the unit (seconds) and that 0 is a valid value. It does not cover cue/sequence selection semantics, but that is documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (edit/Set) and resource (timing of an existing cue part) and enumerates the exact fields it operates on. It is clearly distinguishable from siblings like gma3_set_cue_trigger, gma3_store_cue, or gma3_set_property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: edits an EXISTING cue part, defaults to part 0, only supplied fields change, and it refuses when the part does not exist. It stops short of naming alternatives (e.g., store_cue_part for creation or set_cue_trigger), so the when-not guidance is contextually implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_set_cue_triggerSet cue triggerA
Set how an existing cue is triggered: trigger "go" (manual), "time" (after time seconds; time required), "follow" (when the previous cue completes; optional time as extra delay), "sound" or "bpm" (no time). Sets the cue's TrigType and then TrigTime via Set(); no command-line command is sent, selection and programmer are untouched. Refuses (nothing sent) when the cue does not exist. Reads TrigType and TrigTime back. The mutation lock orders only this server's own mutations; it does not isolate the operation from another console operator or another client.
| Name | Required | Description | Default |
|---|---|---|---|
| cue | Yes | One cue number, fractional allowed (2, 2.5, "10.001"; max three decimals). Ranges (Thru, +) are rejected. | |
| time | No | Trigger time in seconds (TrigTime). Required for "time", optional for "follow", not allowed for "go", "sound", "bpm". 0 is a value. | |
| verify | No | Read the result back after the mutation (default true). Verification is reported separately from the mutation steps. | |
| trigger | Yes | Trigger type (console TrigType: Go, Time, Follow, Sound, BPM). | |
| sequence | No | Sequence number (1..99999). Required unless use_selected_sequence is true; exactly one of the two. | |
| use_selected_sequence | No | Act on the console's currently selected sequence. It is resolved to its sequence number first, and the command is sent with that explicit number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and delivers: it discloses the internal Set() sequence (TrigType then TrigTime), that no command-line command is sent, that selection and programmer are untouched, that nothing is sent on a non-existent cue, that TrigType/TrigTime are read back, and even the scope limit of the mutation lock (no isolation from other operators/clients).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger-mode table, then effects, then refusal/read-back and locking caveats — every sentence is load-bearing. It is a dense run-on paragraph rather than a scannable list, which costs it the top mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description supplies the return behavior itself ('Reads TrigType and TrigTime back'), plus failure semantics, side-effect boundaries, and concurrency caveats. For a 6-parameter mutation tool this is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates the trigger-to-time requirement mapping that the schema's `time` property already documents, adding no format or constraint detail beyond it; cue numbering, verify, and sequence/use_selected_sequence handling are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set how an existing cue is triggered') and immediately enumerates the five valid trigger modes with their semantics, so an agent can distinguish it from gma3_set_cue_timing, gma3_store_cue, or gma3_goto_cue 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional guidance per mode: 'time' requires time, 'follow' allows optional time as extra delay, 'go'/'sound'/'bpm' forbid it, and the tool refuses when the cue does not exist. It stops short of naming sibling alternatives (e.g., set_cue_timing) or stating when a caller should prefer a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_set_faderSet a faderA
Set a fader of a playback object (sequence, executor's assigned object, master) to a value 0..100 via the Lua SetFader API. Tokens: FaderMaster (default), FaderX, FaderXA, FaderXB, FaderTemp, FaderRate, FaderSpeed, FaderHighlight, FaderLowlight, FaderTime, FaderSolo. For a timed fade use gma3_command with e.g. 'FaderMaster Sequence 1 At 50 Fade 3'.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Object reference. Either command-line object syntax ("Sequence 1", "Sequence 1 Cue 3", "Fixture 101", "Group 5", "Macro 2", "Page 1.201"), a dotted show-data path from a root ("DataPool.Sequences", "Root.ShowData", "Patch.Fixtures"), a numeric address like "14.14.1.6.1", or one of: Root, ShowData, DataPool, SelectedSequence, CurrentCue, Patch, Programmer, Selection, CurrentExecPage. | |
| token | No | ||
| value | Yes | ||
| enabled | No | Enable/disable a toggleable fader (e.g. FaderTime) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the mechanism (Lua SetFader API), the valid value range, the default token, and the toggleable-fader hint for 'enabled'. It does not say whether the change takes effect immediately on live output, what happens on an invalid ref, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and value range, then the token inventory, then the alternative path. The long token list is justified because the schema leaves 'token' undescribed, though the enumeration is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description makes no claim about return values, and it does cover the two parameters the schema leaves thin (token tokens/default) as well as the value range. For a 4-param mutation tool this is nearly complete; only error/precondition behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the undocumented 'token' parameter is exactly where the description adds value, enumerating all valid tokens (FaderMaster, FaderX, FaderXA/XB, FaderTemp, FaderRate, FaderSpeed, FaderHighlight, FaderLowlight, FaderTime, FaderSolo) with a stated default. It reinforces the 0..100 range but does not add meaning to 'ref' beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) plus the resource (a fader of a playback object) and scopes the target set explicitly to sequence, executor's assigned object, or master. It also names the sibling tool (gma3_command) that handles the timed-fade case, so an agent can separate it from both gma3_get_fader and gma3_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: use this for a direct value set via the Lua SetFader API, and route timed fades to gma3_command with a concrete example. It also flags FaderMaster as the default token. It stops short of stating exclusions such as preconditions or when the fader doesn't exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_set_positionSet Pan/TiltA
Set Pan and/or Tilt in the programmer with explicit units: unit "degrees" sends Attribute "Pan" At Absolute Physical <v>, unit "percent" sends ... At Absolute Percent <v> (0..100). Pan first, then Tilt; stops at the first rejected command. Target is explicit: fixtures OR use_selection: true. With fixtures the tool sends ClearSelection and then SELECTS exactly those fixtures (the selection changes; previously selected fixtures are not affected unless add_to_selection is true). Never clears programmer values. Small explicit targets are pre-checked against the fixture type's attributes (check_attributes); after setting, the programmer is read back and Pan/Tilt are compared per fixture in the unit sent, converting degrees through each fixture's physical range (verify). A fixture without Pan/Tilt is a mismatch, not a success. Serialised against this server's other mutations only.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | Pan value in `unit`. At least one of pan/tilt is required. | |
| tilt | No | Tilt value in `unit`. | |
| unit | Yes | "degrees" (Physical readout, negative values allowed) or "percent" (0..100). Required. | |
| verify | No | Read the programmer back after setting (default true): every targeted fixture must hold the value, compared in the unit it was sent in (percent of the attribute range, tolerance 0.5 %). A fixture without the attribute is reported as a mismatch. Needs plugin 0.3.2 or newer; older plugins yield verification 'unavailable'. | |
| fixtures | No | Explicit target: fixture IDs/ranges ("1 Thru 5", "1 + 3 + 5 Thru 8", "Fixture 101.1") or a group ("Group 5"). Exactly one of fixtures / use_selection is required. | |
| use_selection | No | Apply to the fixtures currently selected on the console (explicit opt-in). Fails before sending when nothing is selected. | |
| add_to_selection | No | With `fixtures`: keep the fixtures already selected and add the target to them, so previously selected fixtures ALSO receive the values (explicit opt-in). Default false: ClearSelection is sent first so exactly the named fixtures are targeted. ClearSelection only deselects; programmer values are never cleared. | |
| check_attributes | No | With `fixtures` resolving to at most 8 fixtures (default true): check each fixture type's attribute list first and fail before sending when a fixture lacks the attribute. Skipped for groups and larger targets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers: it discloses that ClearSelection is sent (selection changes) but programmer values are never cleared, that execution stops at the first rejected command, that a fixture lacking Pan/Tilt is a mismatch not a success, and that it is serialised against other mutations. This is exactly the side-effect and failure-mode disclosure an 8-param mutation tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and dense but largely non-redundant; nearly every clause carries behavioural or targeting information. It is a single long paragraph with some overlap against the schema descriptions (e.g., use_selection/add_to_selection), which costs it the top mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 8 parameters, the description covers everything an agent needs: units, targeting rules, selection side effects, verification/readback semantics, and failure handling. There is no significant gap left for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining what the `unit` value actually dispatches (`Attribute "Pan" At Absolute Physical <v>` vs `... At Absolute Percent <v>`) and the ordering (Pan first, then Tilt). It reinforces rather than merely repeats the parameter docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) and resource (Pan and/or Tilt in the programmer) with explicit scope. An agent can distinguish this from siblings like gma3_set_attribute or gma3_set_color without opening a schema, since the title and first clause pin it to pan/tilt positioning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: target must be either `fixtures` or `use_selection: true`, values are set in the programmer, and pre-check/verify conditions are explained. It stops short of naming sibling alternatives (e.g., when to prefer gma3_set_attribute for non-pan/tilt), so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_set_propertySet an object propertyB
Set a property of a show object via the Lua Set() API, e.g. ref 'Sequence 1', property 'Name' or 'Tracking'; ref 'Sequence 1 Cue 2', property 'TrigTime'. Values are passed as text the way they would be typed in the editor (e.g. 'Yes', 'No', '2.5', 'Follow'). This modifies the show file.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Object reference. Either command-line object syntax ("Sequence 1", "Sequence 1 Cue 3", "Fixture 101", "Group 5", "Macro 2", "Page 1.201"), a dotted show-data path from a root ("DataPool.Sequences", "Root.ShowData", "Patch.Fixtures"), a numeric address like "14.14.1.6.1", or one of: Root, ShowData, DataPool, SelectedSequence, CurrentCue, Patch, Programmer, Selection, CurrentExecPage. | |
| value | Yes | ||
| property | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the critical trait that the operation 'modifies the show file' and that values are supplied as editor-typed text. It omits error behavior, whether changes are undoable, permission requirements, and how invalid property names or values are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, purpose front-loaded, with examples carrying the detail efficiently. Little waste, though the sentence about values-as-text and the mutation note could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description adequately covers purpose, mechanism, and arg examples, but leaves gaps on error behavior, permission needs, and differentiation from sibling setters that a fully complete definition would address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'ref' is documented), so the description must compensate, and it largely does: it clarifies that 'value' is passed as text exactly as typed in the editor and supplies representative property names ('Name', 'Tracking', 'TrigTime'). It adds real meaning beyond the bare schema, though it doesn't enumerate valid property strings comprehensively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (set a property of a show object) and grounds it in the Lua Set() API with concrete examples like 'Sequence 1'/'Name' and 'Sequence 1 Cue 2'/'TrigTime'. However, it never distinguishes itself from close siblings such as gma3_set_attribute, gma3_set_color, gma3_set_cue_timing, or gma3_patch_set, so the agent can't easily tell which setter to reach for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides usage examples of property/ref pairs but gives no when-to-use vs when-not guidance and names no alternative setter. The agent gets no rule for choosing this generic setter over the many specialized set_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_speed_master_actionTap, double, halve or reset a speed masterA
action learn: Learn Master 3.N, one tap (the console times the taps itself; taps with interval_ms send several, with the network's jitter); double / half: DoubleSpeed / HalfSpeed (the speed scale one step up or down, the fader stays); reset: Speed1 (60 BPM, scale One). Refuses a locked master. Verifies the scale and tempo afterwards; a single tap cannot be verified (the console needs an interval).
| Name | Required | Description | Default |
|---|---|---|---|
| taps | No | learn only: taps to send (1-16, default 1). | |
| action | Yes | ||
| master | Yes | ||
| verify | No | ||
| preview | No | ||
| interval_ms | No | learn only: time between taps (100-10000 ms). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it states that a locked master is refused, that scale and tempo are verified afterwards, and that a single tap cannot be verified because the console needs an interval. It also notes network jitter when interval_ms sends multiple taps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the action semantics, with no filler sentences. It is structured as action: explanation, though the long semicolon chain slightly reduces readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations or output schema, it provides strong behavioral context: preconditions, verification, and limitations. However, it leaves the meanings of verify and preview parameters unstated, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate. It maps the action enum values to console commands and clarifies taps/interval_ms behavior, but leaves master, verify, and preview undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (speed master) and the four distinct actions (learn/double/half/reset) with their console commands, so an agent can tell what the tool does without opening the schema. It differentiates itself from sibling configure/list tools by being action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the effect of each action but never states when to choose this tool over siblings like gma3_configure_speed_master or gma3_observe_tempo. Usage is only implied through action semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_speed_mastersRead the speed masters, what follows them, and the sound inputA
Read-only. The 16 speed masters (Master 3.N): name, fader, base BPM (from the fader: 50 = 60 BPM), speed scale, effective BPM (base x scale, what followers use), the console's own tempo text, learn mode, lock and problems (duplicate names make links ambiguous). usage (default true): per master the sequences that follow it by speed (phasers in their cues) and by rate (cue timing; the rate is effective BPM / 60 x RateScale) and the executors holding it. sound (default true): the onPC audio input device, the available devices, the SoundIn level and master 16 (the BPM master, driven by the input); beat detection and lock are not readable on 2.5.1, so synchronisation is never claimed. observe_seconds (0-10): samples the masters (master 16 when masters is not given) and reports how they moved. Distinct from timing masters (pool 5, fixed seconds) and cue timing.
| Name | Required | Description | Default |
|---|---|---|---|
| sound | No | ||
| usage | No | ||
| masters | No | Master numbers 1-16 (default all). | |
| observe_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it declares the tool read-only, states that beat detection and lock are not readable on 2.5.1 and that synchronisation is therefore never claimed, and notes duplicate names make links ambiguous. This version-specific limitation disclosure is genuinely useful, though it does not cover auth requirements or result volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the read-only nature and the resource, and each sentence carries distinct content. It is a dense wall of text with long compound sentences, which slightly hurts scannability, but nothing is padding given the schema coverage gap it must fill.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains the return contents for the base read, the usage expansion, the sound expansion, and the observe behavior, plus the 2.5.1 readability limits. An agent has enough to call it and interpret the response without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only 'masters' is documented), so the description must compensate and it does thoroughly: it defines usage (per-master followers by speed and by rate, plus executors), sound (device, available devices, SoundIn level, master 16 driven by input), and observe_seconds (sampling behavior and default of master 16). Each parameter's meaning and default is spelled out beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Read-only. The 16 speed masters") and enumerates exactly what is retrieved (name, fader, base BPM, speed scale, effective BPM, tempo text, learn, lock, problems). It explicitly distinguishes itself from timing masters (pool 5) and cue timing, so an agent can route without opening a sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions for the optional parameters (usage default true, sound default true, observe_seconds 0-10) and names the conceptual alternatives (timing masters, cue timing). It does not explicitly contrast with the adjacent write/read siblings like configure_speed_master, speed_master_action, or observe_tempo, so a small routing gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_start_bridgeStart the bridge plugin via OSCA
Fallback for when the bridge is not running: sends the command Plugin "gma3_mcp_bridge" to onPC over OSC (/cmd). Requires the OSC configuration in onPC (Menu > In & Out > OSC) to have Enable Input on and Receive Command = Yes on a line matching GMA3_OSC_PORT. Then waits briefly and pings the bridge.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the exact command sent, the onPC OSC settings required to succeed, and the post-action behavior ('waits briefly and pings the bridge'). It omits failure modes when OSC input is disabled, keeping 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the fallback purpose before the procedural prerequisites. The embedded menu path is a bit dense, but every sentence contributes necessary operational detail, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-output-schema action tool, the description covers what it does, the precondition for success, and the resulting behavior. It is complete enough for correct invocation, missing only explicit failure/error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero-parameter tool, so per the baseline this scores 4. The description correctly requires no arguments and instead documents environment-level requirements (GMA3_OSC_PORT line, Receive Command), which is the relevant equivalent of parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (start), resource (the bridge plugin), and mechanism (OSC /cmd to onPC). It also frames itself as a 'fallback,' which distinguishes it from the normal bridge operation path used by all other gma3_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the condition for use ('when the bridge is not running') and lists the required OSC configuration prerequisites. It does not name a specific alternative recovery tool, but the fallback framing implies the normal path clearly enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_statusgrandMA3 connection statusA
Check whether the gma3_mcp_bridge plugin inside grandMA3 onPC is reachable and report software version, show file, user, the Lua execution policy (whether gma3_lua is enabled on the console and its per-request time/instruction budget), the configured OSC fallback, and whether this server build matches its source checkout (server.build.state 'stale' means tools added or changed since the build are missing or out of date).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it implies a non-mutating probe, discloses the concrete data returned (version, show file, user, OSC fallback), and explains the non-obvious 'stale' build state semantics. It stops short of stating error/return behavior when the bridge is unreachable or confirming it has no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense but front-loaded sentence that opens with the core purpose before listing reported fields. The trailing clause explaining 'stale' is justified, though the sentence is long and could be split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe returns — and it enumerates the key reported fields (version, show file, user, Lua policy and budget, OSC fallback, build state). It leaves response shape and the unreachable-case representation implicit, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters with 100% schema coverage, so the parameter burden is nil; baseline 4 applies. Nothing in the description is needed to clarify inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination ('Check whether the gma3_mcp_bridge plugin ... is reachable') and then enumerates exactly what is reported. It is unmistakably distinct from every sibling, none of which is a health/diagnostic probe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description reads like a preflight/diagnostic check, but it never says when to call it (e.g., 'call before other tools', 'verify after gma3_start_bridge') or what to do when the bridge is unreachable. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_store_cueStore a cueA
Store the programmer content as a cue of a sequence (create, merge or overwrite), optionally with a name and cue timing (seconds). Sends one Store command (/NoConfirmation; /Merge or /Overwrite for those modes), then one Set() per given name/timing field on the part (part 0 for a cue): Name, CueInFade (fade), CueInDelay (delay), CueOutFade, CueOutDelay. Mode create first checks that the target does not exist and refuses (nothing sent) if it does; that check is a point-in-time read, not a transaction lock. The current fixture selection is not changed; the programmer is not cleared (no Clear is sent). Reads back existence, Name and the timing fields that were given; the store step and the read-back are reported separately. Stored fixture values (attribute data) are NOT verified; that needs gma3_cue_contents (FR-10). The mutation lock orders only this server's own mutations; it does not isolate the operation from another console operator or another client.
| Name | Required | Description | Default |
|---|---|---|---|
| cue | Yes | One cue number, fractional allowed (2, 2.5, "10.001"; max three decimals). Ranges (Thru, +) are rejected. | |
| fade | No | Cue (in) fade time in seconds; 0 is a value. Part property CueInFade. | |
| mode | Yes | create: refuse if the cue exists. merge: /Merge into an existing cue. overwrite: /Overwrite an existing cue. Exactly one mode. | |
| name | No | Cue name. Names must not contain any of \ " $ & * ? , . ; ^ { } | ~ (the console strips them) and are trimmed; they are set via the Name property of the part after the store. | |
| delay | No | Cue (in) delay time in seconds; 0 is a value. Part property CueInDelay. | |
| verify | No | Read the result back after the mutation (default true). Verification is reported separately from the mutation steps. | |
| out_fade | No | Out fade in seconds (dimmers going down); 0 is a value. Part property CueOutFade. | |
| sequence | No | Sequence number (1..99999). Required unless use_selected_sequence is true; exactly one of the two. | |
| out_delay | No | Out delay in seconds; 0 is a value. Part property CueOutDelay. | |
| use_selected_sequence | No | Act on the console's currently selected sequence. It is resolved to its sequence number first, and the command is sent with that explicit number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the exact command sequence (/NoConfirmation, /Merge or /Overwrite, then Set() per field), that create's existence check is a point-in-time read rather than a lock, that fixture selection is unchanged and the programmer is not cleared, that read-back is reported separately, that stored attribute data is NOT verified, and that the mutation lock only orders this server's own writes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and mode semantics before the caveats, and every sentence carries operational information an agent needs. Some sentences are dense run-ons bundling multiple caveats, which slightly hurts scannability but is not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description explains what the read-back returns (existence, Name, given timing fields) and how it is reported relative to the store step, and it flags the non-verification of fixture values plus concurrency limits. Nothing an agent needs to invoke this 10-parameter mutation safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all ten parameters including enums and constraints; that sets the baseline at 3. The description adds only marginal value beyond the schema, clarifying that name/timing fields become Set() calls on part 0 for a cue, while parameters like sequence, verify and use_selected_sequence are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (store the programmer content as a cue of a sequence) plus the three mutation modes, and distinguishes itself from gma3_store_cue_part by noting this operates on 'part 0 for a cue' and from gma3_cue_contents for verification. An agent can tell what it does and where it sits in the family without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes agents to gma3_cue_contents for verifying stored fixture values (FR-10), and gives the selection rule for each mode (create refuses if the target exists; merge vs overwrite). It lacks an explicit statement of when to prefer gma3_store_cue_part over this tool, so it stops short of full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_store_cue_partStore a cue partA
Store the programmer content into a part of a cue (Store Sequence n Cue c Part p). Part 0 is the main part that every cue has, so storing to part 0 is the same as storing the cue; parts 1..999 hold values with their own timing. Sends one Store command (/NoConfirmation; /Merge or /Overwrite for those modes), then one Set() per given name/timing field on the part (part 0 for a cue): Name, CueInFade (fade), CueInDelay (delay), CueOutFade, CueOutDelay. Mode create first checks that the target does not exist and refuses (nothing sent) if it does; that check is a point-in-time read, not a transaction lock. The current fixture selection is not changed; the programmer is not cleared (no Clear is sent). Reads back existence, Name and the timing fields that were given; the store step and the read-back are reported separately. Stored fixture values (attribute data) are NOT verified; that needs gma3_cue_contents (FR-10). The mutation lock orders only this server's own mutations; it does not isolate the operation from another console operator or another client.
| Name | Required | Description | Default |
|---|---|---|---|
| cue | Yes | One cue number, fractional allowed (2, 2.5, "10.001"; max three decimals). Ranges (Thru, +) are rejected. | |
| fade | No | Cue (in) fade time in seconds; 0 is a value. Part property CueInFade. | |
| mode | Yes | create: refuse if the part exists. merge: /Merge. overwrite: /Overwrite. Exactly one mode. | |
| name | No | Part name. Names must not contain any of \ " $ & * ? , . ; ^ { } | ~ (the console strips them) and are trimmed; they are set via the Name property of the part after the store. | |
| part | Yes | Part number 0..999. 0 is the cue's main part (always exists once the cue exists); mode create therefore refuses part 0 of an existing cue. | |
| delay | No | Cue (in) delay time in seconds; 0 is a value. Part property CueInDelay. | |
| verify | No | Read the result back after the mutation (default true). Verification is reported separately from the mutation steps. | |
| out_fade | No | Out fade in seconds (dimmers going down); 0 is a value. Part property CueOutFade. | |
| sequence | No | Sequence number (1..99999). Required unless use_selected_sequence is true; exactly one of the two. | |
| out_delay | No | Out delay in seconds; 0 is a value. Part property CueOutDelay. | |
| use_selected_sequence | No | Act on the console's currently selected sequence. It is resolved to its sequence number first, and the command is sent with that explicit number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses the exact command sequence (one Store with /NoConfirmation, then one Set() per field), that fixture selection is unchanged and the programmer is not cleared, that the create-mode check is a point-in-time read rather than a transaction lock, and that the mutation lock does not isolate against other clients.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first sentence and every sentence carries information, so nothing is wasted. The paragraph is dense and runs long with heavy parentheticals, which costs a little readability, but for an 11-parameter mutation tool the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description fills every gap an agent needs: side effects, the mutation command sequence, what is and is not verified, that store and read-back are reported separately, and the concurrency caveat. Nothing required to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by mapping each field to its console part property (fade→CueInFade, delay→CueInDelay, out_fade→CueOutFade, out_delay→CueOutDelay) and explaining the interaction between mode=create and part 0 of an existing cue. It stops short of restating everything, but the parameter-to-command mapping is a genuine addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Store the programmer content into a part of a cue') and even the underlying console syntax (Store Sequence n Cue c Part p). It distinguishes itself from the sibling gma3_store_cue by explaining that part 0 is equivalent to storing the cue, and it names gma3_cue_contents for the verification case it does not cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the three modes (create refuses on existence, merge, overwrite) and routes verification to gma3_cue_contents (FR-10). It implies but never states outright that storing part 0 should use gma3_store_cue instead, and gives no explicit when-not-to-use exclusions beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_store_groupStore a group with an explicit selection gridA
Create or overwrite Group from a fixture list with explicit selection-grid cells. The cells are the order: the console stores a group in patch order and MAtricks, phasers and At a Thru b distribute along the grid, not along the list. Give either items ([{fixture, x, y, z}]) or an arrangement helper that expands into such a list: row (along one axis), rectangle (row by row, optional serpentine), mirror (left and right halves listed outside-in, right[i] mirrors left[i], optional centre gap). preview: true returns the expanded list, bounds, gaps and shared cells without sending anything. Rules: duplicate fixtures are refused (the console silently ignores a second selection); shared cells are refused unless allow_shared_cells: true; gaps and offsets are kept (preserve_grid_positions, default true; false lets a recall at the origin compact them); a fixture and its own cells (501, 501.1) are separate items; missing fixtures are refused. An existing group needs overwrite: true (its name is kept unless name is given); a locked group is refused. Requires exclusive: true (not for preview): the tool clears the console's fixture selection (programmer values are kept), selects each fixture after its own 'Grid x/y/z' command, checks that the selection is exactly the plan before 'Store Group', sets PreserveGridPositions and the name, then (verify, default true) reads the stored group back and recalls it at Grid 0/0/0 to check order and cells, and finally clears the selection and returns the cursor to 0/0/0. Grid cells are not physical stage positions. Needs bridge 0.21.0.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Group name (a new group is otherwise named by the console). | |
| group | Yes | Group number (1-9999). | |
| items | No | Explicit list; each fixture once. The cells define the order distributions follow (the console stores the group in patch order). | |
| verify | No | Read back and recall-check the stored group (default true). | |
| preview | No | Only expand, analyse and check; send nothing (default false). | |
| exclusive | No | Required (true) unless preview: nobody else uses the console's selection while the tool runs. | |
| overwrite | No | Replace an existing group (default false: refuse). | |
| arrangement | No | Helper that expands into the explicit list (see preview). | |
| allow_shared_cells | No | Allow two fixtures in one cell (default false: refuse). | |
| preserve_grid_positions | No | Store with PreserveGridPositions (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses the exact console sequence (clears selection, selects fixtures with Grid commands, checks selection, stores, verifies, clears selection, returns cursor) and notes that programmer values are kept, shared cells are refused unless allowed, and missing fixtures are refused. It also states the bridge version requirement and that grid cells are not physical positions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then presents rules and behavioral details in a logical order. It is dense but every sentence carries useful information given the tool's complexity and lack of annotations. The single-paragraph format is slightly less scannable than ideal, but not excessively verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a complex 10-parameter tool, the description is complete enough for correct invocation. It covers requirements (exclusive, overwrite, verify), preview behavior, side effects, verification steps, and refusals, leaving no critical gap for an agent to call the tool safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it explains why cells define order (console stores in patch order, MAtricks/phasers/At Thru b distribute along the grid), details the arrangement helper expansion, and clarifies rules for duplicates, shared cells, gaps, preserve_grid_positions behavior, and fixture sub-cells. These semantics go well beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create or overwrite Group <n> from a fixture list with explicit selection-grid cells.' This clearly identifies the tool's function. However, it does not explicitly name or contrast with sibling store tools (e.g., gma3_store_cue, gma3_store_preset), so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear conditions for use: preview returns without sending, exclusive is required unless preview, overwrite is needed for existing groups, and locked groups are refused. It also states when to use arrangement helpers versus explicit items. However, it does not explicitly compare with alternative tools or state when not to use this tool versus another sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_store_macroCreate a macro or replace or append its lines (never runs it)A
mode (required): create (refuses an existing macro), replace (removes the existing lines first, keeping the macro, its appearance and its executor assignments) or append (adds after the existing lines). lines: [{command, wait (seconds, "follow" or "go" = a manual wait until the next Go+), enabled, add_to_cmdline, execute, name, note, raw}]; name, note, cli of the macro. Before anything is sent the references in each line are checked (single objects named with full keywords; a Store earlier in the macro counts as creating its object); raw: true stores a line unchecked. Refuses a locked or running macro. Sends Store Macro N, Delete/Store Macro N.L and one set per property; NEVER runs the macro. The console rewrites command text outside quotes (trims, collapses spaces, expands abbreviated keywords): every line is read back and compared exactly; a rewritten line is a mismatch unless accept_console_form: true (it is reported in rewritten either way).
| Name | Required | Description | Default |
|---|---|---|---|
| cli | No | ||
| mode | Yes | ||
| name | No | ||
| note | No | ||
| lines | Yes | ||
| macro | Yes | ||
| verify | No | ||
| preview | No | ||
| accept_console_form | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it discloses the underlying command sequence (Store Macro N, Delete/Store Macro N.L, one set per property), reference checking before send, refusal on locked/running macros, and console text rewriting with read-back comparison and mismatch handling via accept_console_form.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is dense and mostly earns its place, but it is delivered as one long semicolon-chained run-on paragraph that is hard to parse. It is front-loaded with 'mode' but the nesting of the lines array fields and behavioral caveats blurs structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 9-parameter tool with no output schema and no annotations, the description covers modes, line fields, verification, rewrite handling, and refusal conditions well. The main gaps are the unexplained 'verify' and 'preview' parameters and the implicit 'macro' identifier.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 0% schema coverage the description must compensate, and it explains mode, the full lines array sub-fields (command, wait with 'follow'/'go', enabled, add_to_cmdline, execute, name, note, raw), name, note, cli, and accept_console_form. It leaves 'verify' and 'preview' unexplained and only indirectly references the 'macro' number via 'Store Macro N', so it is strong but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (create/replace/append the lines of a macro) and explicitly clarifies scope with '(never runs it)' plus 'NEVER runs the macro', which cleanly distinguishes it from siblings like gma3_run_macro and gma3_edit_macro_line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mode semantics function as implied usage guidance (create refuses an existing macro, replace removes lines first, append adds after), and it names a when-not condition ('Refuses a locked or running macro'). However, it never explicitly routes to alternative tools such as gma3_run_macro or gma3_edit_macro_line, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_store_presetStore the programmer into a preset with explicit storage rulesA
Store the current programmer content into Preset .. Prepare the programmer first (gma3_select, gma3_set_attribute/color/position, At Preset ... for embedding); this tool only stores. Explicit rules: mode selective | global | universal (never the pool default: a default store resolves a mode conflict silently and can keep one fixture's values), or force global | universal for a forced conversion of an existing preset (removes its selective, or selective and global, data; needs existing: "merge"). existing: refuse (default) | merge | overwrite. fixtures: the scope; every active programmer value must belong to these fixtures (a fixture includes its cells) and each must have one; attributes (optional): exact attribute filter (an activation group, e.g. all ColorRGB_*, is activated as a whole); layers (default [absolute]; also relative, fade, delay, phaser) must cover every value's layers. Anything else in the programmer is refused, because the console stores every active value regardless of the selection. Also refused: universal mode with values that differ between fixtures, embed without a preset reference in the programmer, attributes a feature-group pool's input filter would drop (store into an All pool 21-25 or pass input_filter: false), a locked preset. embed (default false) stores references to the presets active in the programmer; matricks (default false) the selection MAtricks; keep_activation (default false); input_filter overrides the operator default for this store only. The command always carries /Programmer /Active, the mode, /Merge or /Overwrite, /Embed, /MAtricks, /KeepActivation and /NoConfirmation, so the operator's store preferences decide nothing and are not changed (read before and after); Look cannot be overridden per store, so the tool refuses while the operator's StoreLook preference is on. Requires exclusive: true (not for preview). verify (default true) reads the stored rows back and checks each programmer value by mode, value, layers and reference, unexpected content, the preset's mode, dependencies (recursively; incomplete inspection is reported) and that the store preferences are unchanged. Needs bridge 0.22.0.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Preset mode the data is stored in. | |
| name | No | Preset name. | |
| embed | No | Store references to the presets active in the programmer (default false: plain values). | |
| force | No | Forced conversion of an existing preset instead of mode (needs existing: merge). | |
| layers | No | Data layers the values may carry (default [absolute]). | |
| preset | Yes | Target preset "<pool>.<number>", e.g. "4.12" or "23.1". | |
| verify | No | Read back and check the stored content (default true). | |
| preview | No | Only read, check and return the planned command (default false). | |
| existing | No | What to do when the preset exists (default refuse). | |
| fixtures | Yes | Scope: fixture ids or "a Thru b" ranges; every programmer value must belong to them. | |
| matricks | No | Store the selection MAtricks into the preset (default false). | |
| exclusive | No | Required (true) unless preview: nobody else changes the programmer while the tool runs. | |
| attributes | No | Exact attribute filter: the programmer may hold only these attributes, and each must be present. | |
| input_filter | No | Override the operator's preset input-filter default for this store only. | |
| keep_activation | No | Keep the stored values active in the programmer (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses the exact command flags appended, that operator preferences are neither consulted nor changed, the StoreLook refusal case, the exclusive:true requirement, verification behavior, and the bridge version dependency. This is unusually complete for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a dense wall of run-on sentences mixing rules, defaults, and refusals without visual structure. Every clause is informative, yet the presentation makes it harder to scan than the content warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with no annotations and no output schema, the description covers preconditions, per-parameter interactions, refusal cases, and verification semantics. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains why mode is never the pool default (a conflict resolves silently), what force conversion removes, that fixtures must each carry a value, and how layers/attributes interact with activation groups and pool input filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Store the current programmer content into Preset <pool>.<number>.' It also immediately distinguishes itself from the preparation siblings by stating 'this tool only stores', so an agent can tell it apart from gma3_set_attribute/color/position and the other store_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the prerequisite sequence (gma3_select, gma3_set_attribute/color/position, At Preset for embedding) and states the tool 'only stores'. It further enumerates refusal conditions and when to use force/embed/existing, giving clear when-and-when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_timecodesRead the timecode pool or one timecode showA
Read-only. Without timecode: the timecode pool. With timecode: name, playing, cursor and duration (seconds), the source (tc_slot internal / slot N, offset, auto start/stop), playback settings (loop mode and count, switch off, assert previous events), recording settings (the armed state is not readable; these tools never record), and every track group, track (its target) and event: time in seconds and as H:MM:SS.sss (or H:MM:SS:FF with fps 24/25/30/60), exact raw time, action (go, goto, off, flash_press, ...), cue. problems names tracks without a target, Goto events without a cue and unmodelled tokens. slots: true lists the 16 timecode slots (their time only: external reception is not readable). Needs bridge 0.25.0.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| slots | No | ||
| timecode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it declares read-only, states that armed state and external reception are not readable, asserts these tools never record, and names the required bridge version. It omits error behavior and any size/pagination traits, keeping 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded and wastes few words, but the bulk arrives as one enormous run-on sentence packed with parentheticals that is hard to parse. A short bulleted breakdown of returned fields would read much better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex read tool with no output schema and no annotations, the description does the heavy lifting by enumerating the returned fields (source, playback/recording settings, track groups, events, raw time, actions) and the version prerequisite. Only failure/pagination behavior is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: timecode selects one show, slots:true lists the 16 slots, and fps governs the H:MM:SS:FF format at 24/25/30/60. The numeric type of timecode and its value domain remain only loosely implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (read) and resource (timecode pool or one timecode show), and the two operating modes are unambiguous. It is clearly a read tool distinct from the build/transport siblings, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Without timecode: the timecode pool. With timecode: ...' gives a clear condition for selecting each mode, plus the useful caveat that slots:true lists the 16 slots. It stops short of routing the agent away from gma3_build_timecode or gma3_timecode_transport, so no explicit alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_timecode_transportPlay, stop, rewind or seek a timecode show and observe itA
PLAYS when asked: play sends Go Timecode N (from the cursor, internal time; with a timecode slot the time comes from the slot), stop sends Off (playbacks it started keep running unless switch_off is off), rewind sends Top, seek writes the cursor (to: a time as in gma3_build_timecode). Recording is not offered. Then samples the cursor and the target sequences for observe_seconds (play: default 5) and, for play, checks every event the cursor crossed against the sequences' observed cue changes in order (goto -> that cue, go -> the next cue, off -> off, presses -> running; others are listed as not predictable). The result separates dispatched from observed.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| fps | No | ||
| action | Yes | ||
| timecode | Yes | ||
| interval_ms | No | ||
| observe_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It documents the side effect that a play-started playback keeps running unless switch_off is off, and it explains the post-action observation window and verification logic (dispatching vs observing, matching crossed events to observed cue changes). This is rich behavioural context, but it does not cover permissions, failure modes, or what happens if the cursor is outside the timecode range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single dense paragraph front-loads the actions but then runs on through observation mechanics and conditionals ('unless switch_off is off', 'for play', 'goto -> that cue...') that could be structured as a short list. It is information-dense rather than wasteful, but readability suffers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description does more than minimum but still leaves key parameters unexplained. It covers the action semantics and observation model well, yet an agent still lacks enough to call it confidently with the undocumented fps/interval_ms/timecode parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for to (a time as in gma3_build_timecode) and observe_seconds (default 5 for play), but leaves fps, interval_ms, and the interaction between timecode and to undocumented. Six parameters with only 2 described is a meaningful gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource – play/stop/rewind/seek a timecode show – and details the underlying command sent for each action (Go Timecode N, Off, Top, cursor write). It is clearly a transport control tool, distinguishable from gma3_timecodes and gma3_build_timecode. It loses a point because the outcome of each action (what transport state results) is described in internal MA2/MA3 syntax rather than operationally.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes that recording is not offered and names the cursor-writing behaviour for seek. It also explains when the time source comes from the cursor vs a timecode slot, which guides correct use. What remains missing is when to prefer this tool over a plain gma3_command or gma3_playback call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gma3_typeType text into the consoleA
Type Unicode text as one character event per code point into an EXPLICIT context. Which element receives characters cannot be observed from Lua, so acknowledge_focus: true is always required: you state that the command line (context 'command-line') or a text field (context 'text-field') is focused. 'command-line' is admitted only while the operator has disabled keyboard shortcuts (F10; with shortcuts enabled, characters never reach the command line and nothing is substituted) and is read back from the command line: matched when it shows the text; when it does not within the readback window the step is UNKNOWN and nothing after it runs. 'text-field' cannot be read back (verification unavailable) and must not be followed by PLEASE/Enter in the same sequence. Text is refused while an exclusive long-press is held or a held key's route changed. Text is typed in chunks by the bridge loop with the context rechecked between chunks; it stops with its progress (unknown) when shortcuts are toggled, a route changes or a long-press starts meanwhile. Newlines, tabs and other control characters are refused (up to 256 characters); text NEVER presses Enter, changes focus, opens an editor or toggles shortcuts: commit it with a separate gma3_hardkey PLEASE tap. Same gate and busy rules as gma3_hardkey (input OFF until the operator runs Plugin "gma3_mcp_bridge" "input=keyboard"; commands from every client are [busy] while it types). Nothing is retried or replayed; a character whose dispatch raised is reported as unknown at that position.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text (UTF-8, no control characters, at most 256 characters). | |
| context | Yes | Where the characters are meant to go; validated and read back where possible. | |
| display | No | Display index passed to the console as API context only. It must exist; input is NOT display-scoped on onPC 2.5.1 (no routing, focus or pop-up placement is promised). | |
| interaction | No | Id from gma3_input_interaction acquire. Required for a standalone hold (press). A bounded tap, chord tap, text or sequence may run without one (it owns an interaction for its duration) but must pass the id while this server has one open. | |
| acknowledge_focus | No | Must be true: you state that the named context (command line or a text field) is what currently receives characters; this cannot be observed from Lua. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers rich behavioral context beyond the schema: readback semantics (UNKNOWN when unmatched), chunked typing with context rechecks, refusal conditions (exclusive long-press, changed route, control characters), busy/gate rules, no retry/replay, and per-position unknown reporting. This is unusually complete disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is valuable but front-loaded with dense parenthetical and clause-heavy sentences that pack multiple rules together, making it harder to scan quickly. It is not padded with filler, but the wall-of-text structure is not optimally parsed by an agent skimming for the key constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers preconditions (explicit context, acknowledge_focus), failure modes (UNKNOWN, refusal conditions), interaction with siblings (gma3_hardkey for commit), and gate/busy rules. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: it explains why acknowledge_focus is always required (focus is unobservable from Lua), ties 'command-line' to the F10 shortcuts-disabled precondition, and states 'text-field' cannot be read back. Slight deduction because display and interaction parameters are addressed only via cross-reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (type) and resource (Unicode text as code-point character events into an explicit context), and distinguishes itself from siblings like gma3_hardkey and gma3_keyboard by clarifying it never presses Enter or changes focus. An agent can tell exactly what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use rules: 'text-field' must not be followed by PLEASE/Enter in the same sequence; commit text with a separate gma3_hardkey PLEASE tap; requires acknowledge_focus true; requires the keyboard bridge with input=keyboard. Names the sibling (gma3_hardkey) needed for committing, so alternatives and exclusions are clear.
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.
75 tool updates
v0.1.0- First observed
gma3_assign_to_executor - First observed
gma3_build_phaser - First observed
gma3_build_timecode - First observed
gma3_clear_programmer - First observed
gma3_command - First observed
gma3_configure_executor - First observed
gma3_configure_matricks - First observed
gma3_configure_sequence - First observed
gma3_configure_speed_master - First observed
gma3_cook_recipes - First observed
gma3_cue_contents - First observed
gma3_cues - First observed
gma3_delete_cue - First observed
gma3_dmx - First observed
gma3_dump - First observed
gma3_edit_macro_line - First observed
gma3_edit_recipe - First observed
gma3_executor_settings - First observed
gma3_executors - First observed
gma3_feedback - First observed
gma3_fixture_attributes - First observed
gma3_fixture_output - First observed
gma3_fixtures - First observed
gma3_get_fader - First observed
gma3_get_object - First observed
gma3_goto_cue - First observed
gma3_hardkey - First observed
gma3_hardkeys_release_all - First observed
gma3_hardkeys_status - First observed
gma3_help - First observed
gma3_input_interaction - First observed
gma3_input_sequence - First observed
gma3_keyboard - First observed
gma3_label_executor - First observed
gma3_list_children - First observed
gma3_lua - First observed
gma3_lua_api - First observed
gma3_macros - First observed
gma3_matricks - First observed
gma3_objects - First observed
gma3_observe_tempo - First observed
gma3_patch_add - First observed
gma3_patch_list - First observed
gma3_patch_remove - First observed
gma3_patch_set - First observed
gma3_patch_types - First observed
gma3_phaser_release - First observed
gma3_playback - First observed
gma3_pool - First observed
gma3_preset - First observed
gma3_programmer - First observed
gma3_recipes - First observed
gma3_run_macro - First observed
gma3_select - First observed
gma3_selection_grid - First observed
gma3_sequences - First observed
gma3_set_attribute - First observed
gma3_set_color - First observed
gma3_set_cue_timing - First observed
gma3_set_cue_trigger - First observed
gma3_set_fader - First observed
gma3_set_position - First observed
gma3_set_property - First observed
gma3_speed_master_action - First observed
gma3_speed_masters - First observed
gma3_start_bridge - First observed
gma3_status - First observed
gma3_store_cue - First observed
gma3_store_cue_part - First observed
gma3_store_group - First observed
gma3_store_macro - First observed
gma3_store_preset - First observed
gma3_timecode_transport - First observed
gma3_timecodes - First observed
gma3_type
TDQS
Scored across 75 tools
Tools are extensively documented with explicit distinctions (e.g. gma3_get_object vs gma3_dump vs gma3_objects; gma3_lua vs structured readers; gma3_hardkey vs gma3_keyboard). A few overlaps remain—gma3_set_property vs gma3_configure_* vs gma3_command—but descriptions consistently steer the selection.
Strong, predictable gma3_<verb>_<noun> convention throughout (gma3_store_cue, gma3_configure_sequence, gma3_patch_add, gma3_build_phaser). Minor deviations exist (gma3_dump, gma3_status, gma3_lua) but they are readable and intentional.
75 tools is heavy even for the broad grandMA3 domain; the patch/executor/sequence/cue/timecode/macro/phaser sub-surfaces each add clusters of tools. It is more than an agent can comfortably hold, pushing toward 25+ territory.
Covers the domain remarkably thoroughly: show-data reads, playback, programmer, patch (add/set/remove), cues/parts/timing/triggers, executors, sequences, presets, phasers, recipes, macros, timecodes and input. CRUD and lifecycle gaps are rare and explicitly documented with limitations.
Maintenance
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Shared memory and mail for your AI agents. Verified with Claude Code; other MCP clients in testing.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that lets AI assistants control grandMA2 lighting consoles via Telnet, exposing 41 high-level tools for cue management, fixture control, preset management, executor control, macro editing, appearance assignment, bulk operations, console state queries, show file management, read-back verification, and music show workflows.10016Apache 2.0
- FlicenseAqualityDmaintenanceAn MCP server that gives Claude Code (or any MCP client) full control of Reaper.53-
- AlicenseNot gradedqualityBmaintenanceEnables users to control grandMA3 consoles through official OSC /cmd commands, with an admin UI for IP scanning, object/action permissions, chat integration, and MCP stdio access.MIT
- AlicenseBqualityBmaintenanceAn MCP server that lets Claude and other MCP clients read PreSonus Studio One .song files directly and drive a running Studio One through an in-app bridge device. It exposes tools for songs, tracks, takes, markers, transport, mixer channels, meters and roughly 1,000 Studio One commands.2728 npm10MIT