Skip to main content
Glama
leancoderkavy

Premiere Pro MCP Server

Export Sequence

export_sequence

Render the active Premiere Pro sequence using an Adobe Media Encoder preset, optionally set the range, and verify the output file is written.

Instructions

Export the active sequence directly (Premiere renders it; blocks until done) with an Adobe Media Encoder preset. The output extension must match what the preset writes (an H.264 preset in AME's QuickTime folder writes .mov); a missing extension is added. Refuses an output_path that already exists unless overwrite is true. Fails if Premiere rejects the render, verifies a non-empty file was written (for an overwrite, that the file changed), and checks its duration with ffprobe within one sequence frame. An unavailable or mismatched duration leaves a written artifact unverified. range 'work_area' fails closed unless the work area is enabled and covers only part of the sequence — otherwise Premiere would encode the entire timeline.

Input Schema

NameRequiredDescriptionDefault
rangeNoWhat to render: the entire sequence (default), the sequence in/out range (set_sequence_in_out_points), or the work area. work_area requires an enabled work area around part of the sequence; unset or full-sequence work areas are refused instead of encoding everything. Set and read back a valid work area where the host supports it, or use in_to_out for a ranged export.
overwriteNoReplace a file that already exists at output_path (default: false, which refuses the export). The replacement is only reported as written when the file's size or modification time changes.
output_pathYesFull output file path (e.g., '/Users/me/exports/video.mp4')
preset_pathNoPath to an AME preset file (.epr). Uses the default H.264 (MP4) Match Source preset if omitted.
work_area_onlyNoDeprecated alias for range: 'work_area'
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.
timeout_minutesNoHow long to wait for the render (default: 15; long sequences such as full podcast episodes may need more)
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. 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. Changed1 schema field changedv1.19.0
    • changedInput schema / properties / range / description
      Previous value: -"What to render: the entire sequence (default), the sequence in/out range (set_sequence_in_out_points), or the work area. Scripts cannot set the work area on current Premiere builds, so prefer in_to_out for a ranged export."New value: +"What to render: the entire sequence (default), the sequence in/out range (set_sequence_in_out_points), or the work area. work_area requires an enabled work area around part of the sequence; unset or full-sequence work areas are refused instead of encoding everything. Set and read back a valid work area where the host supports it, or use in_to_out for a ranged export."
  4. Changed7 schema fields changedv1.18.6
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / overwrite
      Added value: +{
      +  "description": "Replace a file that already exists at output_path (default: false, which refuses the export). The replacement is only reported as written when the file's size or modification time changes.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / preset_path / description
      Previous value: -"Path to an AME preset file (.epr). Uses default H.264 if omitted."New value: +"Path to an AME preset file (.epr). Uses the default H.264 (MP4) Match Source preset if omitted."
    • addedInput schema / properties / range
      Added value: +{
      +  "description": "What to render: the entire sequence (default), the sequence in/out range (set_sequence_in_out_points), or the work area. Scripts cannot set the work area on current Premiere builds, so prefer in_to_out for a ranged export.",
      +  "enum": [
      +    "entire",
      +    "in_to_out",
      +    "work_area"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / timeout_minutes
      Added value: +{
      +  "description": "How long to wait for the render (default: 15; long sequences such as full podcast episodes may need more)",
      +  "maximum": 240,
      +  "minimum": 1,
      +  "type": "number"
      +}
    • changedInput schema / properties / work_area_only / description
      Previous value: -"Export only the work area (default: false, exports entire sequence)"New value: +"Deprecated alias for range: 'work_area'"
    • 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.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"
      +}
  6. Changed1 schema field changedv1.4.0
    • removedInput schema / additionalProperties
      Removed value: -false
  7. First observedv1.1.1

TDQS

A4.7/5.0
Behavior5/5

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

Goes well past annotations: blocking render semantics, extension-must-match-preset rule, refusal of existing output_path, post-render verification (non-empty file, file changed on overwrite, ffprobe duration within one frame), and the explicit honest caveat that an unavailable/mismatched duration leaves an artifact unverified. Also discloses the fail-closed work_area behavior and why (Premiere would otherwise encode the whole timeline).

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?

Front-loads the core action and mechanism, then layers constraints and failure modes in descending priority; every sentence carries a distinct fact (extension, overwrite, verification, work_area failure mode) with no filler or restatement of the title.

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 blocking, file-writing tool with an output schema, the description covers prerequisites, side effects, refusal conditions, and verification limits. The remaining structured concerns (identity guards, idempotency replay semantics, timeout) are fully documented in the schema, so nothing an agent needs to call it correctly is absent.

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 baseline is 3, but the description adds real meaning beyond the schema: output extension derivation from the preset (H.264 in QuickTime folder writes .mov), automatic extension insertion, and the fail-closed condition for range='work_area'. It leaves timeout_minutes, idempotency_key, and the CEP guards to the schema, which documents them thoroughly.

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, and mechanism: exports the active sequence via an Adobe Media Encoder preset, rendered by Premiere itself. The parenthetical '(Premiere renders it; blocks until done)' immediately separates it from async siblings such as export_sequence_job_start or add_to_render_queue, so an agent knows what kind of export this is.

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?

It gives operative decision rules: use overwrite=true to replace an existing file, and use in_to_out for a ranged export when the host cannot hold a valid work area. What is missing is explicit routing against the sibling family (job-start, render queue, encode_project_item) — the agent must infer that this call blocks synchronously rather than queuing.

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