Skip to main content
Glama
leancoderkavy

Premiere Pro MCP Server

Ripple Delete

ripple_delete
Destructive

Delete a clip and close its gap by shifting later clips on the same and sync-locked tracks, keeping linked audio and video in sync.

Instructions

Remove a clip and close the gap it leaves, shifting later clips earlier on the clip's own track and on every sync-locked track so audio stays in sync. With the default scope the clip's linked audio/video partners are removed with it and their tracks close up too, even when not sync-locked; with scope 'own_track' the partners stay in place (reported as linkedPartnersKept). Premiere's QE rippleDelete() and the DOM's rippleEdit flag are both non-functional on 26.x, so this is done explicitly and verified. Refuses without changing anything if a clip on a participating track straddles the ripple point or sits inside the range being closed.

Input Schema

NameRequiredDescriptionDefault
scopeNoWhich tracks shift: 'sync_locked' (default) shifts the clip's track plus every sync-locked track, matching Premiere's ripple behaviour; 'own_track' shifts only the clip's own track and WILL desync other tracks.
dry_runNoValidate and report the shift plan without changing the timeline (default: false)
node_idYesNode ID of the clip to ripple delete
range_contentNoWhat to do about other clips on participating tracks that sit entirely inside the time range being closed (the usual case in a multicam-style sequence with aligned clips). With scope 'sync_locked' the clip's own linked audio/video partners are always removed with it, as in Premiere; with 'own_track' they are kept. 'refuse' (default) changes nothing and reports them; 'delete' also removes them, i.e. lifts that whole time segment out of every participating track and closes up. 'delete' is destructive across tracks -- the removed clips are listed in the result.
idempotency_keyNoOptional client-chosen key (1-128 chars of A-Z a-z 0-9 . _ : -) for this intended edit. Pass a fresh key per edit and reuse it only when retrying that same edit, for example after a client-side timeout. A repeat with the same tool, key and arguments is not run again: while the first call is running it fails with IDEMPOTENCY_IN_PROGRESS (poll get_last_operations); after it finished it returns the original outcome marked replayed. A definite failure with nothing applied (receipt outcome not_applied) may be retried with the same key. Reusing a key with different arguments fails with IDEMPOTENCY_KEY_REUSED. Scoped to this MCP session (the stdio server process or one HTTP session) and held in memory only (200 keys, 1 hour); it does not survive a restart or reconnect. Read-only invocations are never deduplicated.
allow_large_rippleNoAllow a ripple above large_ripple_threshold after its preflight estimate.
expected_cep_targetNoOptional reviewed CEP sequence/clip identity and exact tick ranges. Checked before every generated command; UXP refuses this CEP-only guard.
expected_project_pathNoOptional absolute saved-project path. Every generated CEP command refuses before its body when the active project differs or is unsaved. UXP commands refuse this CEP-only guard; local-only tools do not inspect Premiere. Omit to keep existing behavior.
large_ripple_thresholdNoMover count above which ripple_delete refuses unless allow_large_ripple is true (default: 400).

Output Schema

NameRequiredDescriptionDefault
okYesWhether the tool completed successfully.
dataNoTool-specific result data when ok is true; on failure, diagnostic detail when the tool provides it.
toolYesThe registered MCP tool name.
errorNoFailure detail when ok is false.
receiptNoVersioned common mutation receipt; success never implies rendered verification.
idempotencyNoPresent when idempotency_key deduplicated this call: replayed is true when the original outcome was returned instead of running again.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.25.0
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "description": "Optional client-chosen key (1-128 chars of A-Z a-z 0-9 . _ : -) for this intended edit. Pass a fresh key per edit and reuse it only when retrying that same edit, for example after a client-side timeout. A repeat with the same tool, key and arguments is not run again: while the first call is running it fails with IDEMPOTENCY_IN_PROGRESS (poll get_last_operations); after it finished it returns the original outcome marked replayed. A definite failure with nothing applied (receipt outcome not_applied) may be retried with the same key. Reusing a key with different arguments fails with IDEMPOTENCY_KEY_REUSED. Scoped to this MCP session (the stdio server process or one HTTP session) and held in memory only (200 keys, 1 hour); it does not survive a restart or reconnect. Read-only invocations are never deduplicated.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "pattern": "^[A-Za-z0-9._:-]+$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / idempotency
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Present when idempotency_key deduplicated this call: replayed is true when the original outcome was returned instead of running again.",
      +  "type": "object"
      +}
  2. Changed3 schema fields changedv1.24.0
    • addedInput schema / properties / expected_cep_target
      Added value: +{
      +  "additionalProperties": false,
      +  "anyOf": [
      +    {
      +      "required": [
      +        "sequence_id"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "source_item"
      +      ]
      +    }
      +  ],
      +  "description": "Optional reviewed CEP sequence/clip identity and exact tick ranges. Checked before every generated command; UXP refuses this CEP-only guard.",
      +  "properties": {
      +    "backend": {
      +      "const": "cep",
      +      "description": "Backend namespace for these IDs.",
      +      "type": "string"
      +    },
      +    "clip": {
      +      "additionalProperties": false,
      +      "description": "Optional exact reviewed timeline clip.",
      +      "properties": {
      +        "effect": {
      +          "additionalProperties": false,
      +          "description": "Reviewed effect and parameter identity checked before mutation.",
      +          "properties": {
      +            "display_name": {
      +              "description": "Optional exact host display name.",
      +              "maxLength": 512,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "match_name": {
      +              "description": "Effect match name from host inspection.",
      +              "maxLength": 512,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "parameter_index": {
      +              "description": "Inspected zero-based parameter index.",
      +              "maximum": 255,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "parameter_name": {
      +              "description": "Exact inspected parameter name.",
      +              "maxLength": 512,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "match_name",
      +            "parameter_index",
      +            "parameter_name"
      +          ],
      +          "type": "object"
      +        },
      +        "end_ticks": {
      +          "description": "Exact expected exclusive timeline end ticks.",
      +          "pattern": "^-?\\d{1,30}$",
      +          "type": "string"
      +        },
      +        "in_ticks": {
      +          "description": "Exact expected source In ticks.",
      +          "pattern": "^-?\\d{1,30}$",
      +          "type": "string"
      +        },
      +        "node_id": {
      +          "description": "Stable CEP node ID.",
      +          "maxLength": 512,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "out_ticks": {
      +          "description": "Exact expected exclusive source Out ticks.",
      +          "pattern": "^-?\\d{1,30}$",
      +          "type": "string"
      +        },
      +        "project_item_id": {
      +          "description": "Expected source project-item node ID.",
      +          "maxLength": 512,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "start_ticks": {
      +          "description": "Exact expected timeline start ticks.",
      +          "pattern": "^-?\\d{1,30}$",
      +          "type": "string"
      +        },
      +        "track_index": {
      +          "description": "Expected zero-based track index; identity still checked.",
      +          "maximum": 255,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "track_type": {
      +          "description": "Expected media track group.",
      +          "enum": [
      +            "video",
      +            "audio"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "node_id",
      +        "track_type",
      +        "track_index"
      +      ],
      +      "type": "object"
      +    },
      +    "project_document_id": {
      +      "description": "Exact Premiere project document ID observed during review.",
      +      "maxLength": 512,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "sequence_id": {
      +      "description": "Stable expected active sequence ID.",
      +      "maxLength": 512,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "source_item": {
      +      "additionalProperties": false,
      +      "description": "Reviewed source identity for a source-only operation.",
      +      "properties": {
      +        "media_path": {
      +          "description": "Optional exact source-media path.",
      +          "maxLength": 4096,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "node_id": {
      +          "description": "Exact project-item node ID.",
      +          "maxLength": 512,
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "node_id"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "backend"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / expected_project_path
      Added value: +{
      +  "description": "Optional absolute saved-project path. Every generated CEP command refuses before its body when the active project differs or is unsaved. UXP commands refuse this CEP-only guard; local-only tools do not inspect Premiere. Omit to keep existing behavior.",
      +  "maxLength": 4096,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedOutput schema / properties / receipt
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Versioned common mutation receipt; success never implies rendered verification.",
      +  "type": "object"
      +}
  3. Changed2 schema fields changedv1.19.1
    • addedInput schema / properties / allow_large_ripple
      Added value: +{
      +  "description": "Allow a ripple above large_ripple_threshold after its preflight estimate.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / large_ripple_threshold
      Added value: +{
      +  "description": "Mover count above which ripple_delete refuses unless allow_large_ripple is true (default: 400).",
      +  "maximum": 5000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  4. Changed3 schema fields changedv1.18.6
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / range_content / description
      Previous value: -"What to do about clips on OTHER participating tracks that sit entirely inside the time range being closed (the usual case in a multicam-style sequence with aligned clips). 'refuse' (default) changes nothing and reports them; 'delete' also removes them, i.e. lifts that whole time segment out of every participating track and closes up. 'delete' is destructive across tracks -- the removed clips are listed in the result."New value: +"What to do about other clips on participating tracks that sit entirely inside the time range being closed (the usual case in a multicam-style sequence with aligned clips). With scope 'sync_locked' the clip's own linked audio/video partners are always removed with it, as in Premiere; with 'own_track' they are kept. 'refuse' (default) changes nothing and reports them; 'delete' also removes them, i.e. lifts that whole time segment out of every participating track and closes up. 'delete' is destructive across tracks -- the removed clips are listed in the result."
    • changedOutput schema / properties / data / description
      Previous value: -"Tool-specific result data when ok is true."New value: +"Tool-specific result data when ok is true; on failure, diagnostic detail when the tool provides it."
  5. Changed3 schema fields changedv1.16.1
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "description": "Validate and report the shift plan without changing the timeline (default: false)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / range_content
      Added value: +{
      +  "description": "What to do about clips on OTHER participating tracks that sit entirely inside the time range being closed (the usual case in a multicam-style sequence with aligned clips). 'refuse' (default) changes nothing and reports them; 'delete' also removes them, i.e. lifts that whole time segment out of every participating track and closes up. 'delete' is destructive across tracks -- the removed clips are listed in the result.",
      +  "enum": [
      +    "refuse",
      +    "delete"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / scope
      Added value: +{
      +  "description": "Which tracks shift: 'sync_locked' (default) shifts the clip's track plus every sync-locked track, matching Premiere's ripple behaviour; 'own_track' shifts only the clip's own track and WILL desync other tracks.",
      +  "enum": [
      +    "sync_locked",
      +    "own_track"
      +  ],
      +  "type": "string"
      +}
  6. Changed2 schema fields changedv1.14.4
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {
      +      "description": "Tool-specific result data when ok is true."
      +    },
      +    "error": {
      +      "description": "Failure detail when ok is false.",
      +      "type": "string"
      +    },
      +    "ok": {
      +      "description": "Whether the tool completed successfully.",
      +      "type": "boolean"
      +    },
      +    "tool": {
      +      "description": "The registered MCP tool name.",
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "ok",
      +    "tool"
      +  ],
      +  "type": "object"
      +}
  7. Changed1 schema field changedv1.4.0
    • removedInput schema / additionalProperties
      Removed value: -false
  8. First observedv1.1.1

TDQS

A4.5/5.0
Behavior5/5

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

Beyond destructiveHint=true annotations, it discloses the precise blast radius (own track plus sync-locked tracks, linked partners removed by default), that the operation is done explicitly because QE/DOM ripple is broken on 26.x, that it is verified, and that it refuses without changing anything in straddle/range cases. That is rich, non-redundant 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.

Conciseness4/5

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

Front-loaded with the core action in the first sentence, then scope nuances and the refusal guarantee. Four dense sentences with little waste, though the legacy QE/DOM note is background rather than call-critical.

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?

Given 9 params (mostly schema-documented), nested guards, and an output schema, the description covers the operation's semantics, defaults, and refusal safety well. It omits the idempotency key, dry_run, and large-ripple threshold mechanics, which the schema carries.

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 100%, so the baseline is 3; the description nonetheless adds meaning by framing scope as default-vs-own_track with the sync consequence and by linking the range-content behavior to the refusal rule and the linkedPartnersKept result. It stops short of covering dry_run, idempotency_key, or the expected_* guards.

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 specific verb+resource+effect: 'Remove a clip and close the gap it leaves, shifting later clips earlier' on the clip's track and sync-locked tracks. This clearly distinguishes it from siblings like remove_selected_clips, lift_selection, extract_selection, and ripple_remove_timeline_ranges.

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?

Explains the default scope behavior and the 'own_track' alternative with its consequence (partners kept, desync), plus the refusal condition when a clip straddles the ripple point. It does not explicitly name competing siblings for comparison, so an agent must infer which tool to pick versus lift/extract.

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