Skip to main content
Glama

shot.update

Change a shot's story, cast, framing, camera rig, lighting, reference videos or duration (a duration change ripples later clips)

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "projectId": "<projectId>",
      "expectedVersion": "<expectedVersion>",
      "shotId": "<shotId>"
    },
    "name": "shot.update"
  }
}

Input Schema

NameRequiredDescriptionDefault
seedNo
actionNoWhat happens during the shot (used for video)
cameraNoPhysical camera settings. Unset fields are left to the model.
shotIdYes
dialogueNoSpoken line(s); prefix with the speaker's name ("ANNA: …") so shot.lipsync knows who says it
lightingNo
shotSizeNo
projectIdYes
locationIdNoOverride the scene's location for this shot (null = where the scene is)
videoModelNo
aspectRatioNoThis shot's frame shape (null = the film look's, else the project's). Stills use it; the video take follows its start frame
cameraAngleNo
compositionNoe.g. "rule of thirds, subject frame left, negative space right"
descriptionNoWhat the frame shows
characterIdsNoCast members in frame — their reference images keep them consistent
generateAudioNoAsk the video model for native audio (costs more)
cameraMovementNo
endFrameAssetIdNo
expectedVersionYes
videoResolutionNoVideo output resolution (null = the model's default; only some models offer a choice, and higher costs more)
plannedDurationMsNo
startFrameAssetIdNo
referenceVideoModeNofollow (default): make a new clip copying the reference's motion and camera. edit: change the first reference clip itself and keep the rest — write the change in the description (e.g. "Replace the man with Whiskers") and add the new subject to the cast. Needs a model whose videoReferences.modes includes edit (kling-o3-pro-edit, kling-o3-standard-edit, seedance-2.5-ref); the take is as long as the clip.
speakerCharacterIdNoWho speaks the dialogue (null = the character it names, else the first cast member with a voice)
referenceVideoAssetIdsNoVideo assets (uploads or earlier takes) whose motion and camera the shot follows; replaces the list ([] clears it). Only reference_to_video models use them — generation.list_models shows each model's videoReferences limits and modes.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / referenceVideoAssetIds / description
      Previous value: -"Video assets (uploads or earlier takes) whose motion and camera the shot follows; replaces the list ([] clears it). Only reference_to_video models use them — generation.list_models shows each model's videoReferences limits."New value: +"Video assets (uploads or earlier takes) whose motion and camera the shot follows; replaces the list ([] clears it). Only reference_to_video models use them — generation.list_models shows each model's videoReferences limits and modes."
    • addedInput schema / properties / referenceVideoMode
      Added value: +{
      +  "description": "follow (default): make a new clip copying the reference's motion and camera. edit: change the first reference clip itself and keep the rest — write the change in the description (e.g. \"Replace the man with Whiskers\") and add the new subject to the cast. Needs a model whose videoReferences.modes includes edit (kling-o3-pro-edit, kling-o3-standard-edit, seedance-2.5-ref); the take is as long as the clip.",
      +  "enum": [
      +    "follow",
      +    "edit"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / referenceVideoAssetIds
      Added value: +{
      +  "description": "Video assets (uploads or earlier takes) whose motion and camera the shot follows; replaces the list ([] clears it). Only reference_to_video models use them — generation.list_models shows each model's videoReferences limits.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 3,
      +  "type": "array"
      +}
  3. First observed

TDQS

B3.2/5.0
Behavior3/5

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

Because no annotations are supplied, the description must carry the full disclosure burden, and it does make one genuinely useful disclosure: a duration change ripples into later clips, a side effect absent from the schema. It says nothing, however, about optimistic-concurrency behavior for the required expectedVersion, whether fields left out are preserved versus cleared, or the cost implications of changing video settings.

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

Conciseness5/5

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

The description is a single front-loaded sentence with the mutation scope stated immediately and the ripple warning in a parenthetical. Nothing is redundant or wasted.

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

Completeness2/5

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

For a 25-parameter nested mutation tool with no annotations and no output schema, a one-sentence description leaves major gaps: version-conflict handling, which fields are optional versus required, how nulls are interpreted, and whether omitted fields are preserved. The complexity demands substantially more explanation than is given.

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

Parameters3/5

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

With 25 parameters and only 52% schema description coverage, the description compensates only partially: its category list (story, cast, framing, camera rig, lighting, reference videos, duration) loosely groups the parameters but adds no syntax, defaults, or clearing semantics. The nested camera and lighting objects and the many null-able enums are left entirely to the schema.

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

Purpose4/5

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

The description names a specific verb ('Change') and resource ('a shot') and enumerates the aspects that can be modified: story, cast, framing, camera rig, lighting, reference videos, duration. An agent immediately knows this is a mutation tool scoped to a single shot. It gains no credit for distinguishing itself from shot.create or shot.draft, since it never names a sibling.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use shot.update rather than shot.draft, shot.create, or the specialized tools (shot.select_take, shot.select_keyframe). The only usage-adjacent statement is the note that a duration change ripples into later clips, which is an effect warning rather than routing guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.