Skip to main content
Glama

Run an edit op (deprecated)

run_op
Destructive

DEPRECATED since 2026-09-27, kept until at least 2026-10-27: the edit ops are split by cost between two tools, one for the free deterministic ops and one for the paid LLM re-authoring ops (invocableVia in the op catalogue names them). This alias routes each op to the tool that owns it and answers what that tool answers, plus a deprecated notice that names it. Ops:

  • assign_material_to_shot: Puts a piece of the person's own library material (its asset_id: a photo or a video they uploaded) on one shot of a scene, by default the base shot that is the scene's visual; the edit mounts it as is, with nothing bought or searched. Deterministic, $0. Args: scene_index, asset_id (the assetId of the person's own material in the piece), shot_index? (0-based; default the base shot, which is the scene's visual), shows? (what the material shows, in English; the shot's brief only when the scene has no shot list yet), source_start_sec? (second of the video the shot enters from); only on an ai_image, ai_video or archive scene.

  • assign_narration_to_scene: Sets a segment (from_sec-to_sec) of the person's own recording (its asset_id: an audio file, or the sound of a video they uploaded) as the VOICE of one scene; with with_picture that video is also the scene's picture, tied to its voice. The voice is cut from the recording at the next build, not synthesized, and a voice regeneration keeps it. Deterministic, $0. Args: scene_index, asset_id (the assetId of the person's own recording in the piece: an audio file, or a video whose sound is the voice), from_sec, to_sec (the segment, in seconds from the start of the recording), with_picture? (video only: the same segment is also the scene's picture, tied to its voice; only on an ai_image, ai_video or archive scene). The voice is cut from the recording at the next build, not synthesized.

  • remove_narration_from_scene: Returns one scene to the cast voice: the person's own recording it spoke with is taken away. Deterministic, $0. Args: scene_index (the scene goes back to the cast voice).

  • replan_scenes: Reorder the scenes (a permutation of indexes). Deterministic, $0. Args: order=[int...].

  • revestir_como_autor: Re-dress ONE scene's visual as an animated author's scene (a world with an actor where the data lives), keeping the narration word for word; for a still image held too long. LLM. Args: scene_index, brief? (only the VISUAL is re-dressed as an animated author's scene by the piece's director; the narration stays word for word, so the voice is reused; brief orients the world/actor).

  • rewrite_scene: Re-author one scene (script and visual) under a brief. LLM. Args: scene_index, brief (the WHOLE scene is re-authored under the brief).

  • set_piece_fields: Set PIECE-level fields (production_score: silence_plan, music_intent, narrative_arc…), validated by the schema. Deterministic, $0. Args: fields (partial production_score: silence_plan, music_intent, narrative_arc, expected_total_duration_sec…; lists replace).

  • set_scene_fields: Set concrete fields of one scene (narration, duration, silences, infographic data…), validated by the schema. Deterministic, $0. Args: scene_index, fields (partial scene object: narrator_text, direction_notes, pre_silence_sec, pause_after_sec, visual.duration_target_sec, visual.prompt, infographic.data, kinetic_caption…; nested dicts merge by key, null deletes; validated by the VBP schema).

  • set_title: Sets the piece's TITLE (the name it is saved and published under); once committed, the choice is sealed and nothing overwrites it. Deterministic, $0. Args: title (the new title of the piece: one line, in the piece's language, at most 140 characters).

  • set_visual: Set a scene's visual type and/or visual prompt. Deterministic, $0. Args: scene_index, visual_type?, visual_prompt?.

  • swap_voice: Change the voice (semantic attributes) of one scene or all of them. Deterministic, $0. Args: voice_spec={...} (semantic attributes only: timbre, cadence, accent, language, apparent_gender, voice_style — NOT a voice id: the concrete voice is a piece-level decision made when the piece is created; a scene has no voice pin of its own, for the human either), scene_index?.

  • tighten_hook: Strengthen the opening hook (scene 0). LLM. Args: brief? (scene 0). Requires the write scope. The deterministic ops are $0. Spends LLM budget only on the authoring ops (charged like a chat turn); the deterministic ops are $0.

Input Schema

NameRequiredDescriptionDefault
opYes
argsYesOp arguments (see description).
project_idYes
request_idNoOptional: a caller-chosen key for this request (up to 64 characters). The same key returns the same job for 24 h; a new key runs it again. Without it, an identical call within 15 minutes is the same request.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / op / enum
      Previous value: -[
      -  "assign_material_to_shot",
      -  "assign_narration_to_scene",
      -  "remove_narration_from_scene",
      -  "replan_scenes",
      -  "revestir_como_autor",
      -  "rewrite_scene",
      -  "set_piece_fields",
      -  "set_scene_fields",
      -  "set_visual",
      -  "swap_voice",
      -  "tighten_hook"
      -]New value: +[
      +  "assign_material_to_shot",
      +  "assign_narration_to_scene",
      +  "remove_narration_from_scene",
      +  "replan_scenes",
      +  "revestir_como_autor",
      +  "rewrite_scene",
      +  "set_piece_fields",
      +  "set_scene_fields",
      +  "set_title",
      +  "set_visual",
      +  "swap_voice",
      +  "tighten_hook"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / op / enum
      Previous value: -[
      -  "replan_scenes",
      -  "revestir_como_autor",
      -  "rewrite_scene",
      -  "set_piece_fields",
      -  "set_scene_fields",
      -  "set_visual",
      -  "swap_voice",
      -  "tighten_hook"
      -]New value: +[
      +  "assign_material_to_shot",
      +  "assign_narration_to_scene",
      +  "remove_narration_from_scene",
      +  "replan_scenes",
      +  "revestir_como_autor",
      +  "rewrite_scene",
      +  "set_piece_fields",
      +  "set_scene_fields",
      +  "set_visual",
      +  "swap_voice",
      +  "tighten_hook"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / op / enum
      Previous value: -[
      -  "replan_scenes",
      -  "rewrite_scene",
      -  "set_piece_fields",
      -  "set_scene_fields",
      -  "set_visual",
      -  "swap_voice",
      -  "tighten_hook"
      -]New value: +[
      +  "replan_scenes",
      +  "revestir_como_autor",
      +  "rewrite_scene",
      +  "set_piece_fields",
      +  "set_scene_fields",
      +  "set_visual",
      +  "swap_voice",
      +  "tighten_hook"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / request_id / description
      Previous value: -"Optional: a key of your own for this request (up to 64 characters). The same key returns the same job for 24 h; a new key runs it again. Without it, an identical call within 15 minutes is the same request."New value: +"Optional: a caller-chosen key for this request (up to 64 characters). The same key returns the same job for 24 h; a new key runs it again. Without it, an identical call within 15 minutes is the same request."
  5. Changed1 schema field changed
    • addedInput schema / properties / request_id
      Added value: +{
      +  "description": "Optional: a key of your own for this request (up to 64 characters). The same key returns the same job for 24 h; a new key runs it again. Without it, an identical call within 15 minutes is the same request.",
      +  "type": "string"
      +}
  6. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (destructive, non-idempotent), it discloses the `write` scope requirement, the cost model (deterministic ops $0, LLM ops charged like a chat turn), per-op cost tags, and that responses carry an added deprecation notice. That is meaningful context the annotations cannot express. It does not cover failure/partial-success behavior when an op is routed mid-flight, which is the main remaining gap.

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

Conciseness3/5

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

Front-loading the deprecation notice is good and the per-op bullet structure is scannable, which justifies much of the length for a 12-op dispatcher. But there is real duplication: the closing paragraph states 'the deterministic ops are $0' twice, and 'The voice is cut from the recording at the next build, not synthesized' appears twice within `assign_narration_to_scene`.

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

Completeness4/5

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

For a dispatcher with free-form nested args, no output schema, and 12 sub-operations, the definition gives per-op purpose, cost, and argument semantics, plus scope and return-shape notes ('answers what that tool answers, plus a `deprecated` notice'). The missing piece is an explicit successor mapping so the agent can act on the deprecation notice rather than just observe it.

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

Parameters4/5

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

Schema coverage is only 50% and `args` is an untyped free-form object described only as 'see description', so the description must carry the burden — and it largely does, spelling out required/optional arguments per op (scene_index, asset_id, shot_index, from_sec/to_sec, brief, order, voice_spec) including the 0-based indexing and defaults. It loses a point because `set_piece_fields` and `set_scene_fields` defer to 'validated by the schema' while listing only example keys.

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

Purpose4/5

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

The description opens with a specific status and role: a deprecated alias that routes each of 12 named edit ops to the tool that now owns it, plus a `deprecated` notice in the answer. The enumerated op list makes the resource scope unambiguous. It stops short of 5 because the underlying purpose is expressed indirectly ('the edit ops are split by cost between two tools') rather than naming the two tools the agent should target.

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

Usage Guidelines3/5

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

It clearly signals when-not-to-use (deprecated since 2026-09-27, kept until at least 2026-10-27) and defers routing to `invocableVia` in the op catalogue. However, the replacement tools are never named, despite `author_op` and `stage_op` appearing in the sibling list — an agent must perform a second lookup instead of being routed directly.

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.

Resources