Skip to main content
Glama

plan_shot

Compile a shot and report what it would do, without moving the camera.

Instructions

Compile a shot and report what it would do, without moving the camera.

Takes exactly the step list run_shot takes: each step is an object like {"axis": "pan", "to": 60, "seconds": 2.5, "ease": "in_out"}, optionally with {"hold": 1.0} to pause after it. Every step is validated against the camera's advertised ranges and clamped exactly as it would be at execution time, so an impossible or out-of-range shot is refused here, before anything moves.

Use this to compose a shot. It returns the per-step schedule (where each axis starts, the value it was clamped to, how far it travels, how many ticks it costs), the per-axis envelope, the total duration, and the axes with their ranges so the next attempt can be written against the real limits. Nothing is written to the camera and no frame is captured, so it is safe to call as often as you like while deciding.

The from values come from the device's own position report, which this server treats as a hint rather than a fact. run_shot recompiles from the same hint when it runs, so a plan and its execution agree unless the camera moved in between.

Input Schema

NameRequiredDescriptionDefault
stepsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.0

TDQS

A4.6/5.0
Behavior5/5

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: validation against advertised ranges, clamping identical to execution time, refusal of impossible shots, no camera writes, no frame capture, idempotent/safe repeated calls, and the caveat that `from` values are treated as a hint rather than fact.

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

Conciseness4/5

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

Four short paragraphs, front-loaded with the dry-run distinction before the mechanics. Dense and mostly earned, though the final paragraph about `from` being a hint borders on implementation detail that could be tightened.

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

Completeness5/5

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

No output schema and no annotations, yet the description fully specifies the return payload (per-step schedule, clamped values, travel distance, tick cost, per-axis envelope, total duration, axis ranges) and the safety profile. An agent has everything needed to call it correctly and interpret the result.

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

Parameters4/5

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

Schema coverage is 0% and the item object is opaque (additionalProperties: true), so the description must compensate, and it does: it gives the exact step shape {"axis", "to", "seconds", "ease"} plus the optional {"hold": 1.0} pause semantics. It doesn't enumerate valid axis names or ease values, but the returned axes/ranges list is offered as the mechanism for discovering them.

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

Purpose5/5

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

States a precise verb+resource: compiles a shot and reports what it would do *without moving the camera*. It immediately distinguishes itself from the sibling run_shot by noting it takes exactly the same step list but performs no motion, so an agent can route between the two without opening either schema.

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

Usage Guidelines4/5

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

Explicitly says 'Use this to compose a shot' and explains the value: impossible/out-of-range shots are refused here before anything moves, and it is safe to call repeatedly while deciding. The relationship to run_shot is spelled out (same hint, same recompile), though it never states the inverse rule 'use run_shot to actually execute' as an explicit when-not.

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