Skip to main content
Glama
leancoderkavy

Premiere Pro MCP Server

Preview Edit Plan

preview_edit_plan

Preview a compound timeline edit without changing Premiere. Verify sequence, clip, and track targets, then return a single-use confirmation token that expires in 30 minutes for apply_edit_plan.

Instructions

Inspect sequence, project item, clip and requested track targets before previewing a compound timeline edit without changing Premiere. Returns a single-use confirmation token bound to stable project, sequence and target identities; it expires after 30 minutes and is required by apply_edit_plan.

Input Schema

NameRequiredDescriptionDefault
planYesAn edit plan: { sequence_id?, operations: [...] } with up to 100 insert_clip and remove_clip operations. Operations run in order, and each one's times refer to the timeline as the operations before it left it.
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.

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. Changed1 schema field changedv1.25.0
    • 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. Changed5 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"
      +}
    • addedInput schema / properties / plan / additionalProperties
      Added value: +false
    • addedInput schema / properties / plan / properties / operations / items / additionalProperties
      Added value: +false
    • 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 / plan / properties / operations / items / properties / allow_large_ripple
      Added value: +{
      +  "description": "ripple remove_clip: allow execution above large_ripple_threshold after the read-only mover estimate",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / plan / properties / operations / items / properties / large_ripple_threshold
      Added value: +{
      +  "description": "ripple remove_clip: refuse above this mover count unless allow_large_ripple is true (default 400)",
      +  "maximum": 5000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  4. Changed5 schema fields changedv1.18.6
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / plan / description
      Previous value: -"An edit plan containing insert_clip and remove_clip operations (maximum 100)"New value: +"An edit plan: { sequence_id?, operations: [...] } with up to 100 insert_clip and remove_clip operations. Operations run in order, and each one's times refer to the timeline as the operations before it left it."
    • addedInput schema / properties / plan / properties
      Added value: +{
      +  "operations": {
      +    "items": {
      +      "properties": {
      +        "audio_track_index": {
      +          "description": "insert_clip: audio track (default 0)",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "include_linked": {
      +          "description": "remove_clip without ripple: also remove linked audio/video partners (default true)",
      +          "type": "boolean"
      +        },
      +        "item_id": {
      +          "description": "insert_clip: project item node ID or name",
      +          "type": "string"
      +        },
      +        "node_id": {
      +          "description": "remove_clip: timeline clip node ID",
      +          "type": "string"
      +        },
      +        "ripple": {
      +          "description": "remove_clip: close the gap with a verified sync-locked ripple delete (always takes linked partners)",
      +          "type": "boolean"
      +        },
      +        "start_seconds": {
      +          "description": "insert_clip: timeline insert time in seconds (insert edit, sync-locked tracks shift)",
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "type": {
      +          "enum": [
      +            "insert_clip",
      +            "remove_clip"
      +          ],
      +          "type": "string"
      +        },
      +        "video_track_index": {
      +          "description": "insert_clip: video track (default 0)",
      +          "minimum": 0,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "type"
      +      ],
      +      "type": "object"
      +    },
      +    "maxItems": 100,
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  "sequence_id": {
      +    "description": "Sequence name or ID to edit (activated first); defaults to the active sequence",
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / plan / required
      Added value: +[
      +  "operations"
      +]
    • 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. Changed2 schema fields changedv1.14.9
    • removedInput schema / properties / plan / additionalProperties
      Removed value: -{}
    • removedInput schema / properties / plan / propertyNames
      Removed value: -{
      -  "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. Addedv1.4.0

TDQS

A4/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: no Premiere mutation, single-use token, 30-minute expiry, identity binding to project/sequence/targets. This also clarifies why readOnlyHint=false despite 'without changing Premiere' (a token is issued). It doesn't say what happens when inspection fails, e.g. whether an error is raised or a refusal result is returned.

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?

Two dense sentences with no filler; the token/expiry/consumer facts come after the purpose statement. The opening clause listing four target kinds is slightly clause-heavy but still front-loads the core purpose.

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?

For a complex tool with a nested plan object, a CEP guard object and an output schema, the description covers the essential contract: no mutation, what is returned, how long it lives, and which tool consumes it. Remaining details (result shape, failure modes) are handled by the output schema or are non-blocking.

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?

Schema description coverage is 100%, so the nested plan/operations and expected_cep_target fields are already documented in the schema. The description adds no parameter-level meaning of its own (e.g. that the plan holds up to 100 ordered operations), so the baseline 3 applies.

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 uses specific verbs (inspect, preview) on a specific resource (a compound timeline edit plan spanning sequence, project item, clip and track targets) and names the follow-up tool apply_edit_plan. It does not distinguish itself from the other preview_*_plan siblings (preview_extended_edit_plan, preview_editorial_plan), so it stops short of a 5.

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?

Saying the returned token 'is required by apply_edit_plan' establishes the use context clearly: call this first, then apply. There are no explicit exclusions or guidance on when a different preview tool is the better choice, which keeps it out of 5 territory.

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