Skip to main content
Glama
gma3-mcp

gma3-mcp

by nf-s

Place fixtures in 3D

gma3_place_fixtures

Set fixture positions, rotations, and mesh mirroring in the 3D stage, including line, arc, and mirror layouts, with preview and restore data.

Instructions

Set fixtures' position, rotation and mesh mirroring in the 3D stage (X positive stage left, Y positive upstage, Z positive up). Positions in unit (m, cm, mm, ft, in); rotations in degrees, always all three angles (the console renormalizes them, so one axis cannot be changed on its own; read the current rotation with gma3_fixture_positions). placements: [{fid, position?: {x?, y?, z?}, rotation?: {x, y, z}, mirror_mesh?}] (position axes not given stay). layouts expand into placements: line {kind: 'line', fids, from, to, rotation?} spaces fixtures evenly from..to (inclusive); arc {kind: 'arc', fids, center, radius, start_deg, end_deg, rotation?, follow?} spaces them on a horizontal arc (0° = stage left of the centre, 90° = upstage; follow adds the arc angle to rotation z); mirror {kind: 'mirror', pairs: [[source_fid, target_fid]]} puts each target at its source's final pose mirrored across the stage centre line (x negated, rotation y and z negated). preview: true returns the expanded plan with every fixture's current values and sends nothing. Refused while the patch copy is open (committing it would overwrite the positions). Scale is not offered: the console ignores scale writes. mirror_mesh is the fixture's MeshMirrorX flag (its 3D model mirrored). Read back a frame later: positions within 0.1 mm, rotations by quaternion. NO UNDO (Oops does not revert positions): the result's restore list holds every fixture's previous values in the same format. A clean success (all written, read-back matched or not requested) lists each fixture as {fid, position, rotation, mirror_mesh?} in items, the pose it now has, with the writes as one step; detail: true returns every write step and each fixture's pose before and read back.

Input Schema

NameRequiredDescriptionDefault
unitNoUnit for positions and radii: m (default), cm, mm, ft or in. The console stores metres; rotations are always degrees.
detailNoReturn the full result on a success too: one step per property write and each fixture's pose before and read back (default false: a clean success lists one entry per fixture in items, plus restore; anything else is always returned in full).
verifyNoRead back and compare (default true).
layoutsNo
previewNoReturn the plan without sending anything.
placementsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so: it states NO UNDO (Oops does not revert positions) and that the restore list holds every previous value, that writes are refused during patch copy, that rotations are renormalized so a single axis cannot be changed alone, that scale is silently ignored, and that read-back occurs a frame later with stated tolerances (0.1 mm, quaternion). That is exactly the destructive/reversibility and verification 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.

Conciseness4/5

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

Front-loads the core action and coordinate system before descending into layout kinds and return shapes, so an agent can stop reading early if it only needs a simple placement. It is dense and long, with some overlap against schema property descriptions (unit, follow, preview), but essentially every clause carries operational information.

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

Completeness5/5

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

There is no output schema, so the description takes responsibility for the return contract: items with {fid, position, rotation, mirror_mesh?} on a clean success, the restore list, and the fuller per-write-step shape under detail: true. Combined with the refusal and no-undo notes, an agent has enough to call this correctly on the first attempt.

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

Parameters5/5

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

Adds substantial meaning beyond the 67%-covered schema: it defines the arc angle convention (0° = stage left of centre, 90° = upstage, 180° = stage right), what 'follow' adds to rotation z, how mirror negates x and rotation y/z, that line spacing is inclusive from..to, and that position axes not given stay unchanged. It also restates the semantics of unit, preview, detail, verify and mirror_mesh in operational terms rather than mere labels.

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

Purpose4/5

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

Opens with a specific verb and resource ('Set fixtures' position, rotation and mesh mirroring in the 3D stage') and pins down the coordinate convention (X stage left, Y upstage, Z up), which tells an agent exactly what domain of state this mutates. It also names gma3_fixture_positions as the read counterpart, but never contrasts itself with the sibling gma3_set_position, which is the most likely confusion point for a write-to-stage-position tool.

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

Usage Guidelines4/5

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

Gives concrete when-to-use conditions: preview: true to expand a plan without sending, and the explicit exclusion that the call is refused while the patch copy is open. It also directs the agent to read rotation via gma3_fixture_positions first. The missing piece is guidance on when to use this versus the programmer-oriented gma3_set_position.

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

Deploy Server

Other Tools