Skip to main content
Glama
Premiere Pro MCP Server

Premiere Pro MCP Server

MCP for Adobe Premiere Pro — local MCP server

Languages: English · Español · Português (Brasil) · Français · Deutsch · 简体中文 · 繁體中文 · 日本語 · 한국어 · Русский · العربية · हिन्दी · Italiano · Türkçe · Bahasa Indonesia

MCP Toplist

Adobe Premiere Pro MCP server for reviewable, local-first workflows with compatible AI assistants.

Premiere Pro automation for Claude, Cursor, Codex, and other MCP clients: AI-assisted editing, project organization, and export checks through Adobe's documented UXP and CEP/ExtendScript APIs.

Free, MIT licensed, local-first, and published to npm as premiere-pro-mcp — the only package name that installs this project.

Website · Recorded demo · Compare servers · Setup guides · Search tools · Troubleshooting · Release facts

Development source: 453 core tools across 72 modules, 4 resources, and 29 guided workflows. A connected UXP host adds 98 capability-gated tools.

The completed AE render handoff previews and confirms importing one finished render into an existing Premiere bin, with host and file rechecks and an import receipt.

License: MIT Node.js MCP npm Website Premiere Pro

npm downloads GitHub stars GitHub forks Open issues Last commit Buy Me A Coffee


MCP for Adobe Premiere Pro turns a structured AI request into an organized local editing workflow

What is this?

MCP for Adobe Premiere Pro is the independent, MIT-licensed local MCP server published as premiere-pro-mcp by leancoderkavy/premiere-pro-mcp. Install this package and its separate Premiere connector to connect a compatible AI assistant to supported project inspection, timeline editing, and export tools. Start with verify_premiere_connection and make no changes until the bridge works.

Find the right Adobe Premiere Pro MCP guide

Goal

Guide

Understand the local server and connector

What is Adobe Premiere Pro MCP?

Connect Claude Desktop, Cursor, or Codex

Claude Desktop · Cursor · Codex

Choose between similarly named projects

Source-linked server comparison

Match a repeatable task to a tool and verification step

Adobe Premiere Pro automation guide

Check a tool before planning an edit

Published tool catalog

Confirm released version and provenance

Published package facts

An MCP (Model Context Protocol) server that lets AI assistants like Claude, Windsurf, Cursor, GitHub Copilot, or any MCP-compatible client directly control Adobe Premiere Pro — importing media, editing timelines, applying effects, managing keyframes, exporting, and more.

"Add the B-roll clips to V2, apply a cross dissolve between each, color correct them to match the A-roll, and export a 1080p ProRes."

At a glance

Display name

MCP for Adobe Premiere Pro

npm package

premiere-pro-mcp

Install (npm route)

npm install -g premiere-pro-mcp

Connector install

premiere-pro-mcp --install-cep

MCP server name

io.github.leancoderkavy/premiere-pro

Repository

https://github.com/leancoderkavy/premiere-pro-mcp

Website

https://premiere-pro-mcp.com

License

MIT

Hosts

Windows and macOS, Premiere Pro 2020-2026

This project is independent and is not affiliated with or endorsed by Adobe Inc. It is also separate from other MCP servers for Premiere Pro. The only npm package published from this repository is premiere-pro-mcp, and no other package name installs it.

Comparing similarly named packages? Both this package and adobe-premiere-pro-mcp declare a premiere-pro-mcp executable. Verify the package and repository before configuring a client. The new local configuration helper prints Claude, Cursor, VS Code, or Codex settings that point directly to this installation. It is a feature included in v1.15.1 and later.

The current source exposes 453 core tools for supported workflow steps spanning the supported ExtendScript, QE DOM, local media and interchange analysis, revisioned project-context retrieval, safe edit-planning, project-intake preview, review handoff, connection verification, and guarded After Effects MOGRT authoring, batch, library, render-queue, inspection, and Premiere-handoff workflows. A compatible, authenticated UXP panel adds 98 documented, capability-gated tools without replacing the production CEP bridge.

Latest release: 1.30.0

The published v1.30.0 npm artifact contains 449 core tools, 447 in its default profile, and 545 with a compatible UXP connection. The development catalog above can include unreleased work. See the versioned facts and package provenance.

GitHub releases use v<SemVer> for both title and tag, such as v1.30.0. See release naming and version conventions.

Try a bounded workflow

Choose a setup guide: Claude Desktop, Codex, other local MCP clients, or ChatGPT connection options.

Download the workflow starter kit for synthetic media and three evaluation recipes: a read-only sequence check, an explicitly confirmed review-frame export, and a product-spot preview. No email is required. The kit has no recorded Premiere demo or verified host result. Start with a disposable project and use setup and recovery if the connection is unavailable.

Release highlights

v1.30.0 adds compact CEP recovery status checks and fixes false recovery locks on pre-write refusals and duplicate stateless HTTP retries.

  • 1.28.0 guarded workflows: preview and confirm an After Effects clip round trip, clone a range between sequences with capability-gated UXP actions, and optionally inspect a direct export's first decoded audio stream. Copying omits transitions and picture/sound links; audio signal does not establish audibility or synchronization.

  • 1.28.0 safety and correctness: precise file/host authority, explicit overwrite consent, owned temporary-file cleanup, pre-write refusal recovery, subclip time-of-day metadata, caption mark preservation and audio parameter-scale annotations.

  • 1.28.0 connection selection: automatic diagnostics prefer connected UXP; PREMIERE_BRIDGE_MODE=cep withholds UXP tools. CEP-only tools keep their CEP route. Failed UXP mutations are never retried through CEP. Exact-head live Undo, reopen/persistence and cross-host linked-audio validation remain unverified.

  • 1.24.0 mark-write fixes: temporary overwrite marks and restored project-item marks are written a quarter media frame past the tick boundary, so Premiere 26.5.2 no longer floors them one frame early in unnest_sequence, replace_clip and duplicate_clip.

  • 1.24.0 caption style guidance: get_caption_style_guidance accepts a bounded custom_style and returns Properties panel and Track Style steps; it is guidance only and applies nothing.

  • 1.23.0 bounded workflows: 41 added core tools and five guided routes cover exact timeline planning, editorial review, interchange/turnover and guarded delivery. The 52-item implementation ledger records each supported subset and host limit.

  • 1.23.0 execution and recovery: cooperating processes serialize protected edits, retain recovery for uncertain outcomes and report cancellation/partial work explicitly. UXP writes require the matching updated panel; older unversioned panels remain read-only.

  • 1.23.0 artifact evidence: review and delivery checks pin source checksums, inspect actual decoded frames/audio and preserve unknown native-job completion. Local decoder checks do not establish Premiere playback or native round-trip compatibility.

  • 1.23.0 import fixes: folder imports verify actual project-item readback; caption imports validate formats and counts and preserve mutation readback. Export preset discovery avoids proxy ingest presets, and unnesting refuses mixed-media overwrite hazards.

  • 1.22.0 readback receipts: effect writes, stabilization, smart bins, proxies, folder imports, sequence creation, marker deletion and clip selection report what Premiere applied as verified, committed_unverified or failed; create_subclip, add_title and update_marker report the stored values; set_sequence_frame_rate lists clips Premiere re-snapped.

  • 1.22.0 display codes and proxies: set_sequence_display_format writes Premiere's real display codes (video 100-113, audio 200-201) and maps the older 0-11 and 0-1 inputs onto them; manage_proxies toggle can set a known proxy display state; the Windows ACL check waits up to 30 seconds for PowerShell.

  • 1.21.0 Claude Desktop startup fix: the extension starts when optional settings are blank, and Desktop's discover-only probe no longer holds the UXP port, so the real server keeps its UXP tools.

  • 1.21.0 frame-grid verification: project-item marks, sequence In/Out, work area, link/unlink, zero point, transitions, replace_clip and duplicate_clip verify against Premiere's own frame and sample grids and fail closed; UXP tools snap times to the sequence frame grid.

  • 1.20.0 verified range removal: ripple_remove_timeline_ranges previews, then applies a multi-range ripple removal with a single-use confirmation token and clip-level readback (QE razor; experimental).

  • 1.20.0 effect safety: effect colours read and write losslessly, ambiguous property names (for example repeated Lumetri controls) are refused unless property_index is given, and duplicate_clip copies keep the original length.

  • 1.20.0 import and metadata additions: import_fcp_xml can import into the open project, import_folder accepts target_bin, get_encoder_presets pages with limit/offset, set_footage_interpretation sets field_type, and XML/AAF/EDL imports through import_media no longer report a false error.

  • 1.19.1 timeline fixes: bounded sequence pages with continuation, measured unlinked-clip compatibility, and faster ripple movement with a large-edit opt-in and scaled host waits.

  • 1.19.1 safer handoffs: AME queue-wide start requires explicit opt-in, malformed MOGRT files refuse before host import, and uncertain committed edits retain inspection guidance.

  • 1.19.1 transcript and capture fixes: empty host-attached transcripts can accept guarded imports; stored values and still files do not establish temporal animation. A short actual video export is needed to assess keyframe curves.

  • Editorial planning: film evidence, transcript cleanup, caption authoring, shorts and chapter planning, rhythm and speaker layouts, timeline QA, and platform delivery plans.

  • Cross-app handoff: capability-aware workflow routes and guarded After Effects render-to-Premiere handoff.

  • Editing correctness: verified readback and explicit capability or committed-but-unverified failures across transition, import, effects, source identity, and track operations. Insert edits ripple QE sync-locked tracks instead of silently desyncing neighbours.

  • MOGRT studio: an optional, separate After Effects CEP connector can author approval-gated title, callout, quote, and social recipes; constrain them with local brand kits; batch, publish, queue, inspect, and hand them to Premiere without claiming visual or completed-render proof.

  • Global-update handoff: a global npm installation can show its server and connector update state in the Windows CEP panel and, after explicit confirmation, update only after Premiere has been quit; it never changes a project, client configuration, source checkout, or custom npm prefix.

  • Local review planning: caption timing previews parse caller-supplied SRT/VTT without writing or importing it, while revision-bound editorial evidence stays in the opt-in local context index without provider calls.

  • Repair preview: premiere-pro-mcp --doctor --plan-fixes produces a privacy-safe, no-write repair plan; the narrowly eligible connector repair still requires an explicit confirmation that Premiere is closed.

  • Auditable guidance: the universal setup guide, generated public workflow manifest, and proof runbook make workflow and verification boundaries inspectable without claiming a licensed-host walkthrough occurred.

  • Faster, clearer delivery: immutable MCP registration work is reused safely across stateless requests, and the website gained a lighter, mobile-first workflow view plus current machine-readable facts and crawl guidance for its public pages.

  • Explicit boundary: the hosted endpoint remains an operator-managed MCP service; unauthenticated callers are rejected and it does not pair users to local Premiere processes. See the generated supported action catalog for individual capability and verification contracts.

See the v1.30.0 release notes for complete details. Live installation in Premiere Pro still requires host verification.

Current MCP protocol support

The server uses the stable TypeScript SDK v2 and serves the 2026-07-28 stateless protocol over HTTP and stdio, while retaining legacy MCP compatibility through 2025-11-25. Modern clients receive discovery, validated routing headers, cache hints, subscription-stream support, and the formal Premiere extension capability. See the complete MCP capability and boundary report.

If an MCP client cannot complete its server/discover probe, set PREMIERE_MCP_PROTOCOL_MODE=legacy in that client's server environment and restart the client. This uses the SDK's base stdio transport and the legacy initialization handshake only; leave it unset (or auto) for modern MCP capabilities.


Guarding multi-project CEP sessions

Every registered tool accepts optional expected_project_path, an absolute path to the intended saved Premiere project. Generated CEP scripts compare the active project's host-normalized file path before the tool body; a different, missing or unsaved project refuses without running that body. The guard is scoped to the request and checked for every generated command in a multi-command tool. Omitting it preserves existing behavior.

{"name":"get_project_info","arguments":{"expected_project_path":"/Projects/Film.prproj"}}

This protects against accidental active-project switches, not deliberate project switching inside unsafe scripts. It does not select a project or prove media identity. Paths remain in request context and are not telemetry. UXP and After Effects commands refuse this CEP-only guard; UXP workflows use their expected_snapshot identity contracts. Local-only tools do not inspect Premiere. Filesystem aliases are not resolved as a claim of project identity.

Related MCP server: Adobe Premiere Pro MCP

For editors evaluating an AI workflow

Before an assistant changes an active project, use the Premiere Pro AI workflow checklist to define the target and no-change boundaries, verify the local connection, request a bounded plan, and inspect the returned result. It is a practical starting point for assistant editors and post leads testing a repeatable workflow on a duplicate project or small test sequence.

For product context, see the Adobe Premiere AI Assistant and MCP comparison and the Claude Desktop setup guide.

If you are deciding between a single local project, an Adobe Production on shared storage, or a remote Team Project, use the Premiere Pro collaboration workflow guide before you evaluate an MCP path. It links the relevant Adobe guidance, makes no project inspection request, and ends with the same read-only connection check.

For a concrete first Project Intake preview, choose one of the three schema-checked, no-sensitive-data starter templates. They are evaluation samples only: a human policy owner must review and replace their bins, media rules, and organization rules before a facility uses one.


Quick Start

Install the published package (verify the name)

npm i -g premiere-pro-mcp@1.30.0

This repository publishes only premiere-pro-mcp. A differently named package (adobe-premiere-pro-mcp) may also declare a premiere-pro-mcp executable. Before configuring a client, confirm:

Check

Expected

Package name

premiere-pro-mcp (not adobe-premiere-pro-mcp)

Version

1.30.0

Homepage / repo

https://premiere-pro-mcp.com/ · https://github.com/leancoderkavy/premiere-pro-mcp

npm list -g premiere-pro-mcp
premiere-pro-mcp --version
npm view premiere-pro-mcp homepage repository.url

On Premiere 25.6+, install the UXP .ccx connector first, configure its token, then run the read-only verify_premiere_connection prompt. Keep --install-cep as the compatibility path for older hosts and operations not yet available through UXP.

Easiest supported path: Claude Desktop

  1. Download the current Claude Desktop bundle (.mcpb).

  2. In Claude Desktop, open Settings > Extensions > Advanced settings > Install Extension, select the downloaded bundle, and restart Claude Desktop.

  3. On Premiere 25.6+, install the release's UXP .ccx connector and configure the same PREMIERE_UXP_TOKEN in the server and panel. See UXP installation. Install the signed CEP connector (.zxp) too when you need compatibility-only tools or an older Premiere host.

  4. Restart Premiere, open a project, then open Window > UXP Plugins > MCP for Adobe Premiere Pro. For CEP compatibility, use Window > Extensions > MCP for Adobe Premiere Pro.

  5. In Claude, enter: Safely check my Premiere connection with verify_premiere_connection. Make no changes.

The Claude bundle contains the local MCP server, so this route does not require Node.js. The Premiere connector is a separate required install. The first prompt is read-only and reports whether the server is installed, configured, connected, and live-verified.

First proof, before the first edit

Illustrated local Premiere MCP workflow

This is an illustrated workflow, not a Premiere panel screenshot or licensed-host proof.

  1. Open a copied test project and an active sequence in Premiere.

  2. Open Window > Extensions > MCP for Adobe Premiere Pro. “Running” means the local panel bridge is available; it does not show that an edit completed.

  3. Run premiere-pro-mcp --doctor to check only local package/configuration readiness.

  4. Ask the AI client: Run verify_premiere_connection. Make no changes. The returned check is read-only and avoids project names, paths, and media details.

If a bridge, project, or active sequence is missing, fix that setup state before allowing a mutation. For a concise, translatable version of this path, see quick starts in English, Spanish, and Japanese. The translations are machine-assisted drafts and retain command names in English.

Other AI assistants

Cursor, VS Code/Copilot, Windsurf, and other MCP clients do not currently have a project-provided one-click installer. Use their MCP settings with the advanced npm route below. Keep the assistant, server, connector, and Premiere on the same computer.

For a portable reference users can download and attach to any AI assistant, see the MCP for Adobe Premiere Pro setup guide for AI assistants. Attaching the guide provides assistant context; the local server and Premiere connector still need to be installed separately.

Before you begin

  • Node.js 20.19 or newer on Windows or macOS.

  • Adobe Premiere Pro 2020–2026. Prefer the UXP bridge on Premiere 25.6+; use CEP for older hosts and compatibility-only operations. Keep Premiere, installed bridges, and your MCP client on the same computer.

  • For trim_clip and slip_edit, install FFmpeg with ffprobe on PATH (brew install ffmpeg on macOS or winget install Gyan.FFmpeg on Windows). These source-range edits are unavailable without ffprobe and accessible media with readable timestamp clocks: they refuse before mutation when physical source bounds cannot be verified. FFmpeg also provides the optional detect_silence dependency. The production Docker image already includes it.

1. Install

Option A — npm:

npm install -g premiere-pro-mcp

Option B — Clone from source:

git clone https://github.com/leancoderkavy/premiere-pro-mcp.git
cd premiere-pro-mcp
npm install
npm run build

2. Install the Premiere bridge

For Premiere 25.6+, install the UXP .ccx connector using the UXP distribution instructions, then set the same secret (at least 16 characters) as PREMIERE_UXP_TOKEN in the MCP server and UXP panel. Automatic connection diagnostics select UXP when connected; CEP-only tools still require CEP.

Install CEP as the compatibility bridge for older Premiere versions and tools without a documented UXP route:

If installed via npm:

premiere-pro-mcp --install-cep

If cloned from source:

npm run install-cep

This installs the CEP compatibility plugin into Premiere Pro's per-user extensions folder and enables debug mode. Set PREMIERE_BRIDGE_MODE=cep only when you need to force CEP even while UXP is connected.

3. Check the setup

premiere-pro-mcp --doctor

Then ask your MCP client to run verify_premiere_connection. The check is read-only.

Update an existing installation

New releases update the local server and Premiere connector; a deployment of the hosted MCP service does not replace software on your computer. Fully quit Premiere before updating the connector.

Installed globally from npm:

premiere-pro-mcp --check-update
premiere-pro-mcp --update

--update only changes a global npm installation. It installs the published latest package, refreshes the bundled CEP connector, and leaves your MCP client configuration and projects untouched. Restart Premiere and your MCP client afterward, then run verify_premiere_connection before editing.

From the MCP for Adobe Premiere Pro panel (Windows global npm install):

The MCP updates card compares the installed global server and connector with npm latest. Choose Update after quit, review the confirmation, then quit Premiere normally. A per-user helper waits for Premiere to exit; it never force-quits the app, then installs the published npm package and refreshes its matching connector. This also supports older global installs that predate the --update command. When you reopen Premiere, the panel reports the result and reminds you to restart your MCP client and verify the connection. This flow never changes a project or MCP client configuration. It deliberately will not update a Git checkout, a custom npm prefix, or a Claude Desktop .mcpb bundle.

Installed from a Git clone:

npm run check-update:source
npm run update:source

The source updater refuses a checkout with uncommitted files or local commits, fast-forwards only to its configured upstream, runs npm ci and the production build, then refreshes the CEP connector. This avoids silently overwriting local code. If you installed the Claude Desktop .mcpb bundle, download and install the newer bundle from the GitHub release instead; Claude controls extension updates.

Remove the CEP connector

Fully quit Premiere, then remove only this connector:

premiere-pro-mcp --uninstall-cep

The uninstaller intentionally leaves Adobe's shared PlayerDebugMode setting in place so it does not disrupt other CEP extensions. Remove the MCP server from your AI client's configuration and uninstall the npm package separately if you no longer use it. On macOS, --uninstall-cep removes the per-user npm/source install; the signed system-wide .pkg route has a separate privileged removal command in distribution readiness.


Publishing to npm

The easiest repeatable path is the token-free GitHub Actions workflow:

  1. In the npm package settings, configure GitHub Actions as the trusted publisher for leancoderkavy/premiere-pro-mcp and workflow file npm-publish.yml.

  2. Allow the npm publish action.

  3. Open Actions -> Publish npm -> Run workflow and keep the default latest tag.

The workflow installs dependencies, builds, runs tests, verifies the packed files, refuses to republish an existing version, then publishes through short-lived OIDC credentials with automatic provenance. No npm token or recurring OTP is required.

For local publishing, use the guided helper:

npm run publish:npm

Useful local variants:

npm run publish:npm:dry-run
NPM_OTP=123456 npm run publish:npm
NPM_TOKEN=npm_xxx npm run publish:npm
mkdir -p ~/Library/Application\ Support/Adobe/CEP/extensions
ln -s "$(pwd)/cep-plugin" ~/Library/Application\ Support/Adobe/CEP/extensions/MCPBridgeCEP

# Enable unsigned extensions (CSXS 9–14)
for v in 9 10 11 12 13 14; do
  defaults write com.adobe.CSXS.$v PlayerDebugMode 1
done
  1. Copy the cep-plugin folder to %APPDATA%\Adobe\CEP\extensions\MCPBridgeCEP

  2. Open Registry Editor and set these String (REG_SZ) values to 1 (not DWORD):

    • HKEY_CURRENT_USER\Software\Adobe\CSXS.12\PlayerDebugMode

    • (repeat for CSXS.9 through CSXS.14)

3. Configure your MCP client

If you installed from npm, configure the client to run the global command:

{
  "mcpServers": {
    "premiere-pro": {
      "command": "premiere-pro-mcp"
    }
  }
}

If you cloned the repository instead, use the source-build configuration shown below for your client.

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "premiere-pro": {
      "command": "node",
      "args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
    }
  }
}

Add to your MCP server configuration:

{
  "premiere-pro": {
    "command": "node",
    "args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
  }
}

Add to .cursor/mcp.json in your project or global config:

{
  "mcpServers": {
    "premiere-pro": {
      "command": "node",
      "args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
    }
  }
}

After the server is enabled, select Claude Fable 5.1 in Cursor when you want a longer-horizon session. See Claude Fable 5.1 workflows.

Add to your VS Code MCP server configuration:

{
  "mcpServers": {
    "premiere-pro": {
      "command": "node",
      "args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
    }
  }
}

4. Verify the bridge in Premiere Pro

  1. Open (or restart) Premiere Pro

  2. The bridge starts automatically using the default temp directory (or its previously saved setting)

  3. Optionally go to Window > Extensions > MCP for Adobe Premiere Pro to confirm the green "Running" status or change the Temp Directory to match your MCP client config

  4. Ask your AI assistant to run get_capabilities, then verify_premiere_connection, with Premiere open. Both report the active bridge; ping remains the CEP-specific probe.

  5. For a safe first request, ask: "What is my current Premiere Pro project and active sequence? Do not make changes."

The default bridge directory is derived from the operating system on both sides, so most local setups should not set PREMIERE_TEMP_DIR. On macOS, the server resolves the per-user system temporary directory even when a GUI-launched client strips TMPDIR, keeping it aligned with Premiere's CEP panel. If you override it, use the same absolute path in the MCP server and CEP panel; Windows and macOS paths are not interchangeable.

Codex plugin

This repository includes an installable Codex plugin that bundles the local MCP server with a safety-oriented Premiere editing skill.

From a clone of this repository:

codex plugin marketplace add .
codex plugin add premiere-pro@premiere-pro-mcp
npx -y premiere-pro-mcp@1.30.0 --install-cep

Restart Premiere Pro and start a new Codex session after installation. The plugin launches premiere-pro-mcp@1.30.0 through npx; the separate CEP installation is required because the MCP server communicates with the running Premiere host through the local bridge.

The plugin source lives in plugins/premiere-pro, and the repository marketplace manifest lives in .agents/plugins/marketplace.json.

GPT-6 Astra and agent tool discovery

Use the Codex plugin with codex --model gpt-6-astra when your account has access. The server supplies session-aware workflow instructions and bounded tool discovery: call get_capabilities with {"tool_query":"transcript","tool_limit":10} to find relevant operations, their descriptions, and backend requirements. Searches default to tools registered under the current authority and tool packs.

See GPT-6 Astra workflows for evidence retrieval, visual review, execution ordering, and the division between MCP and client capabilities.

GPT-6 Sol and GPT-6 Luna

Use the Codex plugin with codex --model gpt-6-sol for multi-step agentic edits, or codex --model gpt-6-luna for focused, high-volume inspection passes, when your account has access. Both call the same MCP tools under the same authority, preview, and readback rules. See GPT-6 Sol and Luna workflows.

Claude

For Claude Code, add this repository as a marketplace and install the plugin:

/plugin marketplace add leancoderkavy/premiere-pro-mcp
/plugin install premiere-pro@premiere-pro-mcp

Then install the Premiere bridge and start a new Claude Code session:

npx -y premiere-pro-mcp@1.30.0 --install-cep

The Claude Code package lives in claude-plugins/premiere-pro, with its marketplace at .claude-plugin/marketplace.json.

Claude Desktop uses the self-contained MCP Bundle (.mcpb) format. Build and validate the current bundle with:

npm run build:claude

Install the resulting file from artifacts/ through Settings > Extensions > Advanced settings > Install Extension. The Premiere CEP bridge must still be installed separately.

Claude Fable 5.1

Use Cursor, Claude Desktop, or Claude Code with Claude Fable 5.1 (claude-fable-5-1) when your account has access. Model selection belongs to the client; this server does not run an Anthropic model. Fable 5.1 is optional: other Claude models can call the same MCP tools. If Cursor Privacy Mode or an Enterprise plan is enabled, an admin must approve Anthropic's Fable data-retention policy before the model is available.

The server supplies session-aware workflow instructions and bounded tool discovery: call get_capabilities with {"tool_query":"transcript","tool_limit":10} to find relevant operations, their descriptions, and backend requirements. Keep Premiere mutations serialized even in a long Fable 5.1 session. Image review of returned frames is not playback or delivery proof.

See Claude Fable 5.1 workflows for connection order, privacy boundaries, evidence retrieval, Cursor's Opus fallback, and the division between MCP and client capabilities. The public walkthrough is How to Use Claude Fable 5.1 with MCP for Adobe Premiere Pro.

Claude Opus 5.5

Use Claude Code, Claude Desktop, or Cursor with Claude Opus 5.5 (claude-opus-5-5) when your account has access. Model selection belongs to the client; this server does not run an Anthropic model. Opus 5.5 is optional. Keep Premiere mutations serialized and preview before apply. See Claude Opus 5.5 workflows.

Windows and macOS capability coverage

Surface

Windows

macOS

Verification boundary

UXP preferred diagnostic / preview workflows

Premiere Pro 25.6+

Premiere Pro 25.6+

Live loopback WebSocket and host API verification required

CEP production / compatibility bridge

Premiere Pro 2020–2026

Premiere Pro 2020–2026

Run get_capabilities, then ping with Premiere open

npm CEP installer

Copies plugin and verifies REG_SZ debug keys

Copies plugin and verifies the installed manifest/debug settings

Restart Premiere after installation

AE MOGRT authoring CEP bridge

After Effects 2018+

After Effects 2018+

Opens only a saved, workspace-contained AE project; a local ZIP check is not import, playback, or visual verification

CI build and unit tests

Node 20, 22, and 24

Node 20, 22, and 24

GitHub-hosted OS runners; no Adobe host is available in CI

get_capabilities reports the current operating system, temp directory, CEP/UXP coverage, enabled authority profile, and any live-host verification still required. It also includes the full tools catalog generated from the tools registered by the server, including tools disabled by the active profile. Every entry identifies:

  • the execution backend (local, CEP/ExtendScript, QE, or orchestrator);

  • static support status (supported, limited, experimental, or unsupported);

  • the minimum Premiere version known to the server;

  • the required authority and whether the current profile enables it;

  • the verification boundary and whether a live Premiere host is required; and

  • relevant operational notes.

QE-backed tools are reported as experimental because QE is undocumented and can vary between Premiere builds. Authority availability is reported separately from implementation support, so disabling edit, for example, does not incorrectly label editing tools as unsupported. Static metadata never claims that a Premiere operation succeeded; use ping and inspect each tool result for runtime evidence.

MCP tools/list is filtered to the active authority profile. The default inspect,edit,export,filesystem profile advertises 367 of the 369 registered tools and omits execute_extendscript and evaluate_expression, which require explicit unsafe-script authority. ping and get_capabilities remain visible under every profile so a restricted or misconfigured server can still explain its state. The call-time capability guard remains authoritative even if listing metadata is wrong.

Workflow-scoped discovery packs and structured outputs

By default, the full permitted catalog remains available. Set PREMIERE_MCP_TOOL_PACKS to essential, inspection, delivery, captions, or a comma-separated combination such as inspection,captions to reduce the tool discovery and registered session surface for a focused client. full is the explicit full-catalog mode and cannot be combined with another pack. ping and get_capabilities remain listed for diagnosis, and every registered call still passes through the same capability guard; a pack never grants authority.

Opt-in fast client setup

Print a configuration snippet for a smaller discovery surface:

premiere-pro-mcp --print-client-config claude --fast

Replace claude with cursor, vscode, or codex for that client's format. Merge the printed entry into your client configuration, then restart its MCP connection. This command prints only; it does not edit client files or contact Premiere. It targets this installed copy using absolute local paths.

The fast profile selects the existing essential pack, clears inherited explicit tool lists, and keeps full per-call guard schemas. Authority checks and mutation readback remain unchanged. It reduces discovery payload; it does not make Premiere execute edits faster. Tools outside the pack are unavailable in that session. For a broader workflow, change PREMIERE_MCP_TOOL_PACKS in the entry to another pack or full, then reconnect. Without --fast, configuration output and the default full catalog remain unchanged. No plugin install defaults change.

Compact schema profile

Every tool accepts two optional host guards per call, expected_project_path and expected_cep_target, and by default every listed inputSchema carries both (about 3,100 characters per tool). Set PREMIERE_MCP_SCHEMA_PROFILE=compact to omit them from tools/list and register one extra tool, set_session_guard, that stores them once for the MCP stdio session (one process, memory only). Stateless HTTP rejects the compact profile; use full schemas and per-call guards there. Every later call applies the stored guards exactly as if the client had passed them; a per-call value still wins and is still validated against the full guard schema. full is the default and changes nothing. The profile is a listing decision only: enforcement is unchanged under both. For a session that needs a handful of specific tools rather than a whole pack, set PREMIERE_MCP_TOOL_LIST to a comma-separated list of tool names, for example PREMIERE_MCP_TOOL_LIST=get_project_info,get_bin_contents,save_project. The list unions with PREMIERE_MCP_TOOL_PACKS when both are set, ping and get_capabilities stay listed, and a name that matches no registered tool is a startup error so a typo never silently drops a tool. UXP tool names are accepted without PREMIERE_UXP_TOKEN; they register once the UXP bridge is configured. fork/packs/*.txt hold reviewable one-name-per-line lists (PREMIERE_MCP_TOOL_LIST="$(grep -v '^#' fork/packs/cleanup.txt | paste -sd, -)").

Every listed tool now declares the same machine-readable result envelope through MCP outputSchema: ok, tool, plus data on success or error on failure. The tool-specific data shape remains versioned by the individual tool result, so clients can reliably distinguish transport success from a Premiere or local operation failure without parsing the text block.

After Effects MOGRT studio

This is a narrow authoring path, not an arbitrary After Effects script runner. Install the separate local connector, fully restart After Effects, and open Window > Extensions > MCP for Adobe After Effects:

premiere-pro-mcp --install-after-effects-cep

Then open a saved .aep project inside an approved workspace and use this order:

  1. verify_after_effects_connection — read-only connector and saved-project check.

  2. preview_mogrt_recipe — produces an expiring, one-time plan for one of five supported recipes: lower_third, title_card, callout, quote_card, or social_end_card; it never creates directories or contacts Adobe.

  3. create_mogrt_recipe with that token and confirm_export: true — creates one composition, saves the open project, and requests one .mogrt export.

  4. verify_mogrt_artifact — checks only local file existence and its ZIP header.

Optional studio paths retain the same preview-and-confirm boundary:

  • validate_mogrt_brand_kit validates local name-prefix, accent/text colors, font request, safe-margin, and workspace-contained logo values before they are passed into a recipe.

  • preview_mogrt_batch / create_mogrt_batch export up to 20 JSON/CSV rows serially; batches stop on a host error and do not promise rollback.

  • preview_mogrt_library_publish / publish_mogrt_to_library write a new, immutable v001, v002, … copy under an already-existing local library.

  • inspect_after_effects_template_source returns source-comp dimensions, duration, fonts, layer kinds, and controller names on AE 16.1+, while inspect_after_effects_render_templates lists host template names from an existing queue item.

  • preview_after_effects_render / enqueue_after_effects_render queue one exact render but never start it. preview_mogrt_premiere_handoff / apply_mogrt_premiere_handoff import into an explicitly named empty MOGRT Verify - … Premiere sequence and read back insertion/control descriptors.

The authoring connector uses AFTER_EFFECTS_MCP_TEMP_DIR (default: the OS temp directory plus after-effects-mcp-bridge), completely separate from PREMIERE_TEMP_DIR. The tool will not create, replace, or switch projects; it requires the already-open AE project and output directory to be contained by the same approved workspace. An import/control readback still needs rendered-frame review before delivery; use capture_frame or a separate approved export path.

inspect_sequence_review_report creates one read-only handoff report from Premiere timeline readback: sequence structure, primary-track gaps, disabled clips, muted tracks, marker timing, and offline-source evidence. It never returns media paths; marker comments are omitted unless explicitly requested. The report is not proof of rendered pixels, audio quality, caption accuracy, rights, or editorial approval.

The MCP handshake reads serverInfo.version from the installed package.json, so clients receive the package version that is actually running rather than a separately maintained literal.

Tools with mixed execution boundaries can provide explicit operational metadata at registration. This is used for local file verification, static feature-support reports, and hybrid local-plus-Premiere validation so the capability catalog does not infer a host dependency from naming alone.

Collaboration and AI feature boundaries

get_advanced_feature_support returns a machine-readable matrix for Productions, Team Projects, Frame.io, Media Intelligence, Generative Extend, Object Mask, caption translation, Speech-to-Text, Enhance Speech, Remix, editorial plans, Premiere AI Assistant, Generative Media, and a future local semantic index. Each entry includes an explicit access mode: direct, observable-only, artifact-import, external-provider, user-assisted, unavailable, or planned. Pass an optional Premiere version, intended backend, confirmed entitlements, and network state to evaluate prerequisites without conflating them with API availability. It distinguishes documented APIs from entitlements, network prerequisites, separate service APIs, and user-assisted operations without using menu automation or private APIs.

The report tool itself is local: it does not contact Premiere and is callable through the current MCP server. Each feature entry separately reports whether its operations are callable through the production CEP transport. Productions reports only static backend/version eligibility until a UXP host performs live capability negotiation.

  • Productions exposes documented read-only state through UXP, but the production MCP transport is still CEP.

  • Frame.io needs a separately authenticated Frame.io API integration; an account entitlement alone does not make it callable through Premiere's DOM.

  • Transcript JSON import/export is documented in UXP. Starting Speech-to-Text is not.

  • preview_transcript_edit_uxp and plan_transcript_rough_cut_uxp provide a revision-locked transcript-edit workflow. The planner maps selected transcript ranges to verified 1x placements in a duplicate sequence and emits descending split/remove instructions; it does not claim that Adobe exposes native transcript text deletion or perform an unverified destructive edit.

  • The remaining AI operations are user-assisted or unsupported by documented public APIs. The tool explains what can be inspected after a user completes the operation and where artifact provenance cannot be established safely.

  • The server never uses menu automation, private APIs, clip-name heuristics, or duration changes as proof that an AI operation occurred.

Reusable project context

For projects where repeatedly inspecting clips, transcripts, audio, and timeline placements is expensive, call manage_project_context with action: "capture". The local context engine indexes a bounded active-sequence snapshot, hashes native project/media paths before persistence, and returns independent source, timeline, and combined context revisions. Add transcript passages, shot descriptions, audio observations, or editor notes once with action: "enrich"; ordinary trims and moves update the timeline revision without discarding unchanged source analysis.

Use search_project_context to retrieve only evidence relevant to the current editing intent. create_context_edit_plan returns a non-mutating candidate scaffold and stale-state guards; create_editorial_plan adds reviewed organization, stringout, rough-cut, and caption-artifact routes without calling an LLM or changing Premiere. Exact identities must still be resolved and passed through the routed operation's preview/confirmation flow before any application. See the project context engine guide for storage controls, privacy boundaries, and invalidation behavior; see local-first AI editorial workflows for the complete review-and-route workflow.

Authenticated UXP connection

Automatic connection diagnostics prefer a connected local UXP panel. Supported UXP tools remain capability-gated, and CEP-only tools retain their CEP route. If UXP is not connected, the automatic diagnostic selects CEP:

PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp

Generate that secret yourself and enter the same value in the UXP panel (Window → UXP Plugins, not the CEP Connector). CEP-only setups do not use a token. The listener binds only to 127.0.0.1:7777, authenticates the WebSocket upgrade, requires a versioned capability handshake, correlates concurrent requests, and fails pending work on timeout or disconnect. Set PREMIERE_UXP_PORT to use another loopback port.

PREMIERE_BRIDGE_MODE=auto is the default. Automatic connection diagnostics prefer connected UXP; PREMIERE_BRIDGE_MODE=cep disables UXP tool registration and forces CEP selection. Core CEP-only tools keep their CEP route. get_capabilities and verify_premiere_connection report the mode and connection selection; runtime capability checks still decide each UXP operation. A failed UXP mutation is never retried through CEP.

When enabled, MCP discovery includes 98 capability-gated UXP additions. The first expansion covers effects, deterministic timeline selection, selection batches, scene detection, proxy/ingest, relink, metadata, color conformance, read-only Premiere/After Effects environment inspection, Source Monitor audition, storage, and least-privilege workspace access. The second adds Project-panel selection, marker CRUD, single-transaction undoable beat-grid marker application, bin organization, sequence settings, imports, typed effect parameters/keyframes, track-item transforms, atomic J/L split edits, SequenceEditor timeline edits, sequence lifecycle, and AME encoding. The third wave begins with a redacted event journal, conservative AME terminal receipts, explicit host-readiness gates, safe multi-project sessions, lease-based growing-media control, namespaced workflow checkpoints, bounded media-health maintenance, caption-aware track mute state, transactional source trim/framing, guarded sequence-range updates, guarded source-media start timing, and guarded source-media frame-rate/pixel-aspect overrides documented in the third-wave workflow matrix. The bounded migration surface also includes a non-ripple selected-item lift, native video-transition listing and guarded transactions, native active and explicit-GUID sequence timing inspection, opt-in installed-MOGRT directory inspection without filesystem enumeration, bounded native timeline structure inspection with opt-in source IDs, classification, and broad content category, guarded sequence display-format updates, a capped native Project-panel tree, a double-read Project-panel insertion-bin snapshot, guarded empty/default sequence creation, bounded native Project-panel schema/item-column metadata inspection, guarded direct Project-panel metadata replacements with exact state/readback guards, guarded typed Project metadata schema-field creation with non-field-level readback, guarded direct updates to three named application preferences, guarded transcript JSON replacement for one exact source clip, direct active-track-item identity readback, guarded source-only slips, guarded contiguous three-item slides, guarded append-only timeline duplicates, a guarded clone-based unnest that keeps every nested clip's effects in one undoable transaction, guarded contiguous same-track ripple deletes, guarded source-project-item color labels resolved from one timeline coordinate, guarded explicit-sequence preview-frame rectangle updates, explicit opt-in source-media provenance paths with bounded double resolution, bounded source-proxy readiness with an explicit attached-path disclosure, guarded static effect-parameter PointF x/y updates, bounded effect-parameter descriptor catalogs, bounded project/sequence Object Mask audits, native FrameRate/TickTime frame-alignment inspection with caller-owned inputs and tick readback, and native TickTime arithmetic over caller-owned canonical tick strings; it does not claim direct empty-track create/delete, global redo support, playback proof, Object Mask counts or visual validity, an atomic Project-panel metadata compare-and-set, app-preference Undo, installed-template availability or compatibility, imported transcript persistence, override-presence/clear semantics, path existence, source lineage or rights, proxy compatibility, general or keyframed effect-parameter value readback, rendered-frame correctness, linked-item sync, or licensed-host validation. A separate hybrid benchmark gate keeps native acceleration disabled until reproducible cross-platform evidence exists. See also the first stable workflow matrix, the next-ten workflow matrix, the guarded-slip workflow notes, the guarded-slide workflow notes, the guarded-duplicate workflow notes, the clone-based unnest notes, and the guarded-ripple-delete workflow notes. Commands are advertised only while the authenticated local UXP bridge is connected; the host capability handshake remains the authority for support in the running Premiere build. A failed UXP command is never silently retried through CEP because the first operation may have partially succeeded. UXP edits require a matching command-schema/receipt version, durable panel ledger storage and native cryptographic entropy; older unversioned panels remain read-only until the matching panel is installed.

The bounded UXP migration surface also exposes a read-only animated-PointF endpoint-displacement inspection through automate_effect_parameters_uxp. It requires one exact component and parameter target plus a strictly increasing time interval, double-reads native endpoint values and their distance, and refuses static, malformed, or changed parameter state. It does not modify Premiere or prove rendered appearance, playback, persistence, Undo, or licensed-host behavior.

The bounded UXP migration surface also exposes guarded static Color effect-parameter RGBA updates through automate_effect_parameters_uxp. They require a complete double-read snapshot, explicit confirmation, a valid operation ID, per-parameter serialization, one native transaction, and exact raw-component readback. They reject time-varying parameters and do not claim keyframed Color edits, color management, rendered appearance, playback, persistence, Undo, or licensed-host validation.

The bounded UXP migration surface also exposes guarded typed Project metadata schema-field creation. It requires the exact inspected active-project identity and 12 KiB-bounded panel XML, an explicit confirmation and operation ID, and serializes this bridge's schema and panel-replacement calls per project. Adobe provides no atomic compare-and-set or field-level schema getter: native acceptance and a changed panel XML are evidence only, so the command always returns committed_unverified and does not claim field presence, persistence, UI results, Undo, cancellation, or licensed-host validation.

The panel now requests access to one operator-selected workspace instead of declaring full filesystem access. Choose the folder in the panel before invoking a path-based UXP workflow. Media, relink, preset, export, and Source Monitor file paths must remain inside it; the persistent capability token and native root path are never returned over MCP. After a folder is granted, path-based commands resolve each native path through that folder's Entry tree and compare the host nativePath against the approved root, so symlink or junction targets outside the workspace still fail closed. If the host Entry cannot be walked and no resolver is supplied, those commands stay unsupported and the CEP fallback remains the path-based compatibility route.

Native transcript editing starts with a read-only, revision-locked planning flow. Use get_clip_transcript_uxp to export the transcript Premiere generated for a source clip, select source-time ranges from that JSON, and pass its SHA-256 revision to preview_transcript_edit_uxp. The preview sorts and merges ranges and returns a confirmation token without changing the timeline. Premiere does not expose a documented operation that directly turns deleted transcript text into timeline cuts, so automatic application remains withheld until the source-to-sequence mapping and documented reconstruction path pass live-host validation. search_clip_transcript_uxp provides read-only discovery without substituting an external transcription engine.

Premiere 26.2-26.3 hosts also expose documented UXP workflows for revisioned project inspection, verified project saves, preset-based sequence creation, OTIO/FCP XML interchange, transcript-language discovery, Object Mask detection, Adobe Media Encoder control, track renaming, subclip creation, stable marker inspection, Source Monitor positioning, and clip transcript detection. Mutations accept optional idempotency keys and return explicit verification outcomes. See the Adobe UXP 26.3 coverage matrix and the UXP capability foundation for the command matrix and live-host validation boundary.

The Premiere surface registry separately tracks the Premiere DOM, general UXP JavaScript, HTML/CSS, Spectrum, plugin guides, UXP Hybrid C++, the standalone Premiere C++ PrSDK, CEP/ExtendScript, the CEP platform, QE, and pinned competitor sources. The exhaustive general UXP JavaScript inventory is generated from Adobe's pinned declarations, while the exhaustive Premiere documentation inventory tracks every page in Adobe's live sitemap. This keeps declaration and documentation inventory distinct from implementation and licensed-host coverage.

The stable workflow expansion adds native component-chain effects, deterministic timeline selection, compound selection batches, scene-edit detection, proxy/ingest control, guarded offline relink, transactional project/XMP metadata, color and footage-conformance preflight, full Source Monitor audition, and project/Production storage checks. See the stable UXP workflow matrix for exact argument, undo, confirmation, and live-host boundaries.


Architecture

Local-first MCP for Adobe Premiere Pro workflow from AI assistant through the MCP bridge to a verified Premiere result

Local (stdio):

┌───────────────┐   stdio (MCP)    ┌──────────────┐   File-based IPC   ┌───────────────┐
│  AI Client    │ ◄──────────────► │  MCP Server  │ ◄────────────────► │  CEP Plugin   │
│  (Claude,     │                  │  (Node.js /  │   .jsx commands    │  (runs inside │
│   Windsurf,   │                  │  TypeScript) │   .json responses  │  Premiere)    │
│   Cursor,     │                  └──────────────┘                    └──────┬────────┘
│   Copilot)    │                                                             │
└───────────────┘                                                             │ evalScript()
                                                                              ▼
                                                                       ┌───────────────┐
                                                                       │  Premiere Pro │
                                                                       │  ExtendScript │
                                                                       │  + QE DOM     │
                                                                       └───────────────┘

Remote (HTTP/SSE — Fly.io):

┌───────────────┐  HTTP+SSE (MCP)  ┌─────────────────────┐   File-based IPC   ┌──────────────┐
│  AI Client    │ ◄──────────────► │  MCP Server         │ ◄────────────────► │  CEP Plugin  │
│  (any MCP     │                  │  premiere-pro-mcp   │   .jsx / .json     │  (Premiere)  │
│   client)     │                  │  .fly.dev           │   shared volume    └──────────────┘
└───────────────┘                  └─────────────────────┘
  1. AI client invokes an MCP tool (e.g., add_to_timeline)

  2. MCP server generates ES3-compatible ExtendScript with helper functions prepended

  3. Script is written to a .jsx command file in a shared temp directory

  4. CEP plugin polls for command files, executes via CSInterface.evalScript()

  5. Result JSON is written to a response file and returned to the AI

The file-based IPC bridge is simple, reliable, and works across macOS and Windows without network sockets.


inspect_unique_object_identity_uxp is a separate read-only native identity inspection route. It resolves exactly one project item or sequence, reads the opaque UniqueSerializeable identity twice, and rejects drift without retaining the value or treating it as edit authority. See the unique-identity workflow notes for its bounds and proof boundary.

Film editorial review

inspect_film_editorial_workflow validates captured identities and explicit source/scene coverage, builds marker/stringout/line/beat review artifacts, and reports revision-bound notes, VFX state, change impact and turnover exceptions. It performs local inspection; host edits and exports use separate guarded tools. See usage, example and remaining execution adapters.

Reviewed assistant-editing tools now provide dialogue candidate decisions, quote paper-edit CSV, batch copy previews, sync-evidence triage, and owned-footage B-roll review. These are local evidence reviews, not new host engines. See review workflow contracts.

See Filmcraft improvement ledger for exact-time planning, recovery, job observation, temporal evidence and facility workflows.

Tools (453 core total; 451 under the default profile; 549 with a connected UXP bridge)

The complete supported-actions catalog lists every registered core tool, the two tools restricted behind explicit unsafe-script authority, and all 97 authenticated UXP additions with their current action or mode values. It is generated from the same MCP registration surface returned to clients; the tables below are a shorter workflow-oriented overview.

Discovery & Inspection (10 + 10)

Tool

Description

get_project_info

Current project name, path, sequences, items

get_active_sequence

Detailed active sequence with all clips

list_project_items

All items in the project panel

get_full_project_overview

Comprehensive snapshot: bin tree, sequences, media types

get_full_sequence_info

Exhaustive sequence data: tracks, clips, effects, markers

get_full_clip_info

Everything about a clip: effects, keyframes, metadata

get_timeline_summary

Human-readable overview: duration, coverage %, effects

search_project_items

Filter by name, extension, offline status, color label

get_premiere_state

Full snapshot: project, sequence, playhead, selection

inspect_dom_object

Explore any Premiere Pro DOM object interactively

get_advanced_feature_support

Collaboration/AI API support, prerequisites, entitlements, and user-assisted boundaries

create_editorial_plan

Create a review-only local editorial plan from captured project context

preview_editorial_plan

Revalidate a local editorial plan and return a review receipt without changing Premiere

apply_editorial_organization_plan

Apply a confirmed organization plan through guarded UXP bin transactions only

Project Management (27)

Tool

Description

save_project / save_project_as / open_project

File operations

create_project / close_project

Project lifecycle

import_media / import_folder / import_ae_comps

Import media and AE comps

create_bin / delete_bin / rename_bin / create_smart_bin

Bin management

audit_project_structure

Audit Project-panel layout rules (allowed root names, extension-to-bin, sequences bin, depth, empty bins); optional apply with the audit's plan_token creates target bins and moves planned items with per-item parent readback. Never deletes or renames

import_sequences / import_fcp_xml

Import from other projects

create_bars_and_tone

Generate bars & tone media

set_scratch_disk_path

Configure scratch disks

consolidate_and_transfer

Project Manager consolidation

Timeline & Editing (11 + 27 advanced)

Tool

Description

add_to_timeline / overwrite_clip

Insert and overwrite edits

ripple_delete

Remove clip and close gap (QE)

roll_edit / slide_edit / slip_edit

Professional trim modes (QE)

move_clip_to_track

Move between tracks (QE)

reverse_clip / speed_change / set_clip_speed_qe

Unavailable: Premiere's documented ExtendScript and UXP APIs have no setter for a timeline clip's speed or direction; use set_clip_duration for timeline length

split_clip / trim_clip / move_clip

Basic edits; trim verifies source points and visible timeline edges

set_clip_duration

Set a clip's timeline duration or absolute end (extends still images); refuses next-clip overlaps and restores the original end if Premiere clamps

set_clip_properties

Opacity, scale, rotation, position (speed requests fail before mutation)

link_selection / unlink_selection

Link/unlink A/V

Premiere Pro 26.3 compatibility: some installations silently ignore QE structural edits (ripple_delete, razor/split) and existing effect-parameter writes. These tools now verify the resulting sequence state and return an error instead of a false success. For structural edits, rebuild the wanted source ranges into a new sequence with create_sequence and add_to_timeline. The legacy CEP transition path targets qeClip.addTransition (not the QE track) and reports success only after DOM transition-count readback. Prefer the connected UXP transition tools where available; overlay clips remain a workaround when a legacy QE write is rejected or not verified. See issue #21.

Speed, caption, and visual-keyframe boundaries: Premiere Pro 26.3 may reflect legacy QE speed/direction methods, but exposes no supported scripting setter or Time Remapping component for timeline-clip speed or direction (documented UXP through 26.3 has only getSpeed / isSpeedReversed). reverse_clip, speed_change, set_clip_speed_qe, and set_clip_properties with speed now stop before host mutation; use set_clip_duration to change timeline length, or the Speed/Duration UI or pre-rendered media to retime. add_text_overlay likewise stops before mutation because a raw-text-to-caption API is not exposed; import an .srt/.vtt and use create_caption_track, or use a MOGRT/PNG overlay. Keyframe and caption-track responses can prove parameter/structure readback only—not rendered pixels—so verify playback or exported frames before delivery. On macOS, AME preset discovery scans each installed app bundle's Contents/MediaIO/systempresets; prefer a Match Source preset for vertical projects.

Host limits: The capability ledger distinguishes unavailable APIs, unverified host requests, and property/structure readback. A verified parameter or component does not establish rendered appearance.

Verified track edits: add_track and add_tracks validate requested counts and return success only when the active sequence's track counts exactly match the request. overwrite_clip validates both selected track indices and confirms the requested source item appears at the requested frame on a target track. On a Premiere 26.x build that ignores any of these calls, the MCP response is an error with the observed state rather than a false success. These are automated CEP contracts, not proof of a particular licensed host configuration.

trim_clip accepts exactly one source-relative new_in_seconds or new_out_seconds per call. It refuses retimed clips because CEP cannot prove their source-to-timeline mapping, then reads both source points and visible timeline start/end/duration before reporting success. The default keyframe_policy: "reject" stops before a trim that would leave effect keyframes beyond the visible clip; keyframe_policy: "preserve" is an explicit opt-in and reports the remaining count. keyframe_policy: "hold_last_value" also keeps them, and makes each animated numeric parameter hold its edge value: a trim into an animation keys the new edge with the value sampled there, and an extension past hidden keys anchors the old and new edge at the old edge value. It refuses before mutation when keys would be revealed or a value cannot be sampled or written losslessly, and reads every value back at the new edge (committed_unverified if one differs). Only edge values are verified; a Bezier segment next to an added key can reshape between keys. split_clip verifies a spanning clip, the expected count increase, and the left/right cut boundaries. Its QE path cannot prove effect-keyframe redistribution, so a successful result labels those semantics unverified. These are CEP contract checks, not validation in a licensed Premiere Pro 26.x host.

set_clip_duration changes a placed clip's timeline length without touching source in/out directly: pass exactly one of duration_seconds (from the current start) or end_seconds (absolute timeline end). It writes the documented TrackItem.end as a tick-based Time, refuses an end that would overlap the next clip on the same track, applies the same keyframe_policy guard as trim_clip when shortening, and reads start/end back. If Premiere clamps the end (for example, video media with no remaining handle, or a still whose project item has in/out points), the original end is restored and the tool returns an error. Linked audio/video partners are not adjusted. This is a CEP contract check, not validation in a licensed Premiere Pro host.

Effects & Color (8)

Tool

Description

apply_effect / apply_audio_effect

Apply by name (QE)

remove_effect / remove_all_effects

Remove effects

color_correct

Lumetri: exposure, contrast, temperature, etc.

apply_lut

Apply LUT files

stabilize_clip

Warp Stabilizer with configurable settings

Premiere 26.x component removal: remove_effect and remove_effect_by_name require the CEP Component.remove() method. Some 26.x components, including Essential Sound's Amplify, do not expose that method. The tools return an actionable capability error and leave the component unchanged; use Effect Controls to remove it manually. The QE DOM has no safe targeted-removal fallback.

Essential Sound audio automation: Essential Sound can write ducking or level automation to an Amplify component rather than the clip's Volume > Level. adjust_audio_levels, set_clip_volume, and get_clip_volume operate only on Volume > Level, so they do not read, change, or verify Amplify automation. Inspect the clip's components (or Effect Controls) before treating a Volume readback as the clip's final gain.

Keyframes (8)

Tool

Description

add_keyframe / get_keyframes

Create and read keyframes

remove_keyframe / remove_keyframe_range

Delete keyframes

set_keyframe_interpolation

Linear / Hold / Bezier

get_value_at_time

Query interpolated value at any time

set_color_value

Set color properties on effects

Export & Encoding (19)

Tool

Description

export_sequence

Export via Adobe Media Encoder

export_sequence_job_start / get_export_job_status

Asynchronous AME export job for long renders: returns a job id at once, then reports queued, encoding, completed, or failed with event and output-file evidence

validate_export_preset

Validate an .epr file and resolve its output extension in Premiere

verify_delivery_file

Verify output size and calculate SHA-256/SHA-512 checksums

capture_frame

Export frame as PNG, return as base64 image

export_as_fcp_xml / export_aaf / export_omf

Interchange formats

export_sequence_edl

CMX 3600 EDL for one track, generated from timeline readback and self-validated (cuts, reels, drop/non-drop timecode, M2 lines for retimed clips)

encode_project_item / encode_file

Direct encoding

start_batch_encode

Start render queue

Documented Premiere UXP exposes format-specific OTIO import/export through runtime-probed export_interchange_uxp and import_interchange_uxp. CEP has no documented native OTIO route. Native EDL, Render and Replace, cloud publishing and Content Credentials export configuration remain unavailable through the supported automation contracts. export_sequence_edl therefore builds the CMX 3600 list locally from the clips Premiere reads back and validates it with the same parser used by inspect_cmx3600_edl; it is not a Premiere-native export. get_capabilities reports the remaining delivery gaps explicitly rather than presenting UI-only operations as available tools.

Source Monitor & Playback (7 + 4)

Tool

Description

open_in_source / close_source_monitor

Source monitor control

insert_from_source / overwrite_from_source

3-point editing

play_timeline / stop_playback

Playback control (QE)

play_source_monitor

Play in source monitor

Selection & Clipboard (7 + 7)

Tool

Description

select_clips_by_name / select_clips_in_range

Smart selection

copy_effects_between_clips

Copy effects via QE

paste_clip_attributes

Paste Attributes: effect stack, values, and keyframes with per-property readback; masks and differing Blend Mode are reported, not copied

batch_apply_effect

Apply effect to multiple clips

set_blend_mode

27 blend modes

Media Properties (16)

Tool

Description

set_offline / has_proxy / detach_proxy

Offline/proxy management

set_override_frame_rate

Override FPS

set_scale_to_frame_size

Auto-scale to sequence frame

get_xmp_metadata / set_xmp_metadata

Raw XMP access; writes merge a well-formed patch without removing unrelated fields

get_color_space

Color space info

Sequence Management (11)

Tool

Description

create_sequence / create_sequence_from_preset

Create sequences from .sqpreset files without opening Premiere's modal dialog

duplicate_sequence / delete_sequence

Manage sequences

auto_reframe_sequence

Auto-reframe for social media

attach_custom_property

FCP XML custom properties

unnest_sequence

Replace nested sequence with its clips

Workspace & Captions (2 + 1)

Tool

Description

get_workspaces / set_workspace

Switch workspace layouts

create_caption_track

Create caption/subtitle tracks; action import_plan writes an SRT from a caption plan, imports it and creates the track

Timeline QA (2)

Tool

Description

diff_sequence_snapshots

Added / removed / moved / trimmed / retimed / renamed / enabled changes between two sequence snapshots with frame deltas and EDL-like lines

audit_timeline_health

Health score with flash-frame, gap, overlap, repeated-shot, coverage, overlength, and speed findings plus review-frame suggestions

Editor Requests: markers, selection, checkpoints, navigation (5)

Tool

Description

add_markers_batch

Up to 200 sequence or clip markers in one verified request; feed it beat grids from detect_beats, chapters from plan_chapter_markers, or client notes from plan_client_notes_checklist

select_clips_by_pattern

"Select every other clip": every-Nth selection with offset, name/regex, duration, range, track, and enabled filters, read back after selecting

create_sequence_checkpoint / list_sequence_checkpoints

Named [checkpoint] sequence clone before a risky edit, plus a diff_sequence_snapshots-ready snapshot of the original

navigate_playhead

Start, end, in/out, work area, next/previous edit or marker, or frame stepping with position readback

Review and Conversation Planning (2)

Tool

Description

plan_client_notes_checklist

Pasted client or reviewer feedback → prioritized checklist (category, must/should/nice, approvals, questions, timecodes and ranges) and an add_markers_batch payload

plan_multicam_angle_switches

Active-speaker angle switching for stacked camera tracks: minimum holds, crosstalk cover shots, lead-in cuts, cutaways, razor times, per-camera enable ranges, and markers

Both planners are local and deterministic. Premiere exposes no scripting API for switching angles inside a multicam source sequence, so the multicam plan targets synced clips stacked on separate video tracks and is applied through razor_all_tracks, select_clips_in_range, batch_enable_disable, and add_markers_batch on a checkpointed sequence. See editor requests for the community and competitor evidence behind these tools and their verification boundaries.

Speaker Layout (2)

Tool

Description

plan_speaker_checkerboard

Per-speaker segments, split points, and track assignments for checkerboarded dialogue

plan_active_speaker_reframe

Active-speaker vertical reframe keyframes, or static stacked / side-by-side two-speaker layouts

Mask Fit (1)

Tool

Description

compute_mask_fit_motion

Inspect only: Motion Scale and Position that place a still's subject box (source-image fractions) inside an existing Rounded Crop, Crop, or similar mask, with the math inputs and warnings. Apply with set_clip_scale / set_clip_position, then check with capture_frame. No image analysis.

Rhythm Plans (2)

Tool

Description

plan_emphasis_zoom_keyframes

Punch-in zoom keyframes (Motion Scale + subject-anchored Position) from sentence starts, emphasis words, intervals, or supplied triggers

plan_beat_montage

Beat-grid shot assignment for a clip list with add_to_timeline_batch chunks, trim plan, and beat markers

Shorts Intelligence (2)

Tool

Description

rank_short_form_candidates

Rank sentence-aligned windows as short-form candidates with explainable hook, completeness, density, evidence, and duration-fit scores

plan_chapter_markers

Lexical-cohesion chapter segmentation with titles, YouTube timestamps, and ready Chapter marker payloads

Caption Authoring (7)

Tool

Description

build_caption_artifact

Word-grouped SRT/VTT captions with karaoke timestamps, emphasis markup, speaker prefixes, and style presets, written inside an approved workspace

check_caption_safe_zone

Overlap check for caption and graphic rectangles against approximate platform UI zones, with a suggested clear position

retime_caption_file

Local SRT/VTT retimer for after ripple edits: shift, ripple-remove ranges, ripple-insert a gap, or edit one cue; re-import with create_caption_track

plan_captions

Caption plan to a published standard (Netflix adult/kids, BBC, DCMP, social 9:16): timing fixes, grammar-aware line breaks, shot-change snapping, clean-up, social chunking, speakers and SDH; exports SRT, WebVTT or TTML (IMSC 1.1)

check_captions

Lint an SRT/VTT file, a caption plan or read-back cues against a standard: reading speed, line length, lines, durations, gaps, overlaps, line-break grammar, shot changes and an estimated safe-area check

add_caption_graphics

Burned-in captions: one MOGRT clip per caption (or per word) on a video track, with text fields, speaker colour, an estimated safe-area fit, stale-clip replacement and readback

transcribe_audio

Word-timed transcript from ElevenLabs Scribe (third-party upload, needs confirm_upload) of a file, a sequence's single source clip, or an exported sequence mix

Reaction Shorts (3)

Tool

Description

plan_reaction_captions

Stacked speaker-colored caption plan from a word timeline and explicit palette; flash words merge, overlaps stack, unknown speakers stay uncolored

plan_short_subscribe_cta

Brief subscribe overlay placed about two-thirds through a Short, after an optional hook, with brand-safe styling notes

plan_short_export_folder

Series-named export path under an approved Shorts root; create the folder when it is missing and keep Cafe and Watch Club assets separate

Transcript Word Edits (4)

Tool

Description

plan_filler_word_removal

Word-level filler removal plan (um, uh, you know…) with frame-snapped removal and keep ranges

plan_pause_tightening

Shorten long pauses to a target length without deleting speech

plan_word_mute_ranges

Mute or bleep listed words: padded ranges, ready audio keyframes, redacted text

detect_repeated_takes

Group near-duplicate retakes and plan removal of all but the kept take

Platform Delivery Planning (2)

Tool

Description

plan_platform_delivery_matrix

Per-platform sequence settings, fit/fill reframe math, duration and file-size fit, caption safe zones, and an ordered clone → reframe → caption → export → verify route

validate_platform_publish_package

Validate a rendered file plus title, description, hashtags, and content flags against approximate TikTok, Reels, Shorts, YouTube, LinkedIn, X, and Facebook limits

Scripting (2)

Tool

Description

execute_extendscript

Run arbitrary ExtendScript (ES3); requires explicit unsafe-script authority

evaluate_expression

Evaluate a one-line expression; requires explicit unsafe-script authority

...and 100+ more

Track targeting, batch operations, markers, audio levels, motion/transform, metadata, sequence settings, navigation, project analysis, and more. Run get_project_info to get started — the AI will discover what it needs.


MCP Resources

The server exposes fourteen LLM context resources and nineteen workflow prompts:

Resource URI

Description

config://premiere-instructions

Best practices: workflow order, metadata layers, timeline rules, error handling

config://extendscript-reference

Complete ExtendScript API reference for writing custom scripts

config://premiere-workflows

Machine-readable catalog for rough cuts, metadata review, dialogue cleanup, captions, and delivery

config://premiere-project-context

Revisioned local project-context indexing and retrieval workflow

premiere://project/info

Fresh, path-redacted current-project and active-sequence summary

premiere://project/sequences

Bounded sequence inventory with stable Premiere IDs

premiere://project/media

Bounded, path-redacted project-media inventory

premiere://project/bins

Bounded, path-redacted project-bin inventory

premiere://timeline/active

Bounded active-timeline tracks, clips, and markers snapshot

premiere://effects/available

Bounded video/audio effect catalog for planning

premiere://effects/applied

Bounded active-timeline component inventory

premiere://transitions/available

Bounded video/audio transition catalog for planning

premiere://export/presets

Bounded export-preset names and formats, without native paths

premiere://project/metadata

Path-redacted project and active-timeline summary — not XMP or Project Metadata XML

The ten premiere:// snapshots are read-only CEP bridge requests. They include a revision token for stale-state detection and omit native media, project-tree, preset, and output paths. A successful snapshot proves bridge readback only—not licensed-host feature coverage, playback, rendering, or editorial correctness.


Remote Deployment (Fly.io)

The server includes an HTTP/SSE transport (src/http-server.ts) for remote access via mcp-remote or any MCP client that supports Streamable HTTP.

An operator-managed MCP endpoint runs at https://premiere-pro-mcp.fly.dev/mcp (health check: /health). The website is https://premiere-pro-mcp.com, served from a separate repository; other paths on the Fly host redirect there. The endpoint is not a public desktop relay: it cannot connect an authenticated user to Premiere on that user's computer. Public users should use the local stdio setup until the separate device-pairing relay is available.

Connect to an operator-managed instance

{
  "mcpServers": {
    "premiere-pro": {
      "command": "npx",
      "args": ["mcp-remote", "https://your-authorized-instance.example/mcp"]
    }
  }
}

The instance must either provision an operator bearer token or use the OAuth resource-server configuration below. The production endpoint intentionally returns 401 to callers who have not been authorized.

Self-host on Fly.io

# Clone and deploy your own instance
git clone https://github.com/leancoderkavy/premiere-pro-mcp.git
cd premiere-pro-mcp
fly apps create your-app-name
# Required: add bearer token auth. Use a unique, high-entropy secret per deployment.
fly secrets set MCP_AUTH_TOKEN=your-secret-token
fly deploy --remote-only

Then connect with:

{
  "mcpServers": {
    "premiere-pro": {
      "command": "npx",
      "args": ["mcp-remote", "https://your-app-name.fly.dev/mcp",
               "--header", "Authorization: Bearer your-secret-token"]
    }
  }
}

Trusted-operator OAuth resource-server mode

For an identity-aware operator deployment, configure a real OAuth/OIDC authorization server rather than distributing MCP_AUTH_TOKEN. The authorization server must support the MCP client's registration model and issue signed access tokens with an exact audience for this MCP resource.

fly secrets set \
  MCP_OAUTH_ISSUER=https://identity.example.com \
  MCP_OAUTH_JWKS_URI=https://identity.example.com/.well-known/jwks.json \
  MCP_OAUTH_AUDIENCE=https://your-app-name.fly.dev/mcp \
  MCP_PUBLIC_URL=https://your-app-name.fly.dev \
  MCP_OAUTH_REQUIRED_SCOPES=premiere:mcp \
  MCP_OAUTH_ALLOWED_SUBJECTS=your-provider-user-subject

OAuth mode validates the token signature, algorithm, issuer, exact audience, expiry, issued-at time, subject, and required scopes. It publishes protected resource metadata at /.well-known/oauth-protected-resource/mcp and includes that URL in the WWW-Authenticate challenge. Configuration is fail-closed: partial OAuth settings, non-HTTPS production URLs, ambiguous OAuth/shared-token settings, and missing credentials all prevent startup.

MCP_OAUTH_ALLOWED_SUBJECTS is mandatory and restricts this single-bridge deployment to explicitly trusted operator identities. This is an enforcement boundary, not a public-user device model.

This mode authenticates trusted operators but does not yet implement device ownership, desktop pairing, or per-user Premiere routing. Do not expose editor mutations as a public multi-user service until an outbound desktop relay and durable user/device authorization are implemented.

Note: The file bridge still requires the CEP plugin to share the same PREMIERE_TEMP_DIR. For cloud deployments this means running a sync agent or using fly proxy / WireGuard to reach your local machine. detect_silence can analyze only media paths available inside the server filesystem; a desktop-only path is not automatically available to a remote Fly machine. For a shared or multi-user remote deployment, put a managed identity-aware edge in front of the server and replace the shared bearer secret with per-user authorization. The built-in limiter is intentionally process-local defense in depth, not a substitute for an edge/WAF or account system.


Environment Variables

Variable

Description

Default

PREMIERE_TEMP_DIR

Shared temp directory for MCP ↔ CEP communication

OS user temp dir + /premiere-mcp-bridge (macOS fallback is independent of TMPDIR)

PREMIERE_TIMEOUT_MS

Command timeout in milliseconds

30000

PREMIERE_DEFAULT_SEQUENCE_PRESET

Override the auto-discovered .sqpreset used by create_sequence

auto-discovered

PREMIERE_MCP_CAPABILITIES

Comma-separated authority profile; add unsafe-script only when raw scripting is required

inspect,edit,export,filesystem

PREMIERE_MCP_DEBUG

Set to 1 (or true) to emit verbose server diagnostics to stderr

unset

PREMIERE_CONTEXT_BACKEND

Local project-context store: auto, sqlite, json, or memory

auto

PREMIERE_CONTEXT_DIR

Override local context storage; unsafe existing ownership/permissions/links are rejected, safe POSIX directories/files tightened to 0700/0600

OS application-data directory

PORT

HTTP port (HTTP/SSE transport only)

3000

MCP_AUTH_TOKEN

Operator bearer token for controlled HTTP deployments; mutually exclusive with OAuth mode

unset

MCP_OAUTH_ISSUER

Exact trusted OAuth/OIDC token issuer URL

unset

MCP_OAUTH_JWKS_URI

HTTPS JWKS URL used to verify access-token signatures

unset

MCP_OAUTH_AUDIENCE

Exact MCP resource audience, normally the public /mcp URL

unset

MCP_PUBLIC_URL

Canonical HTTPS origin used in protected-resource discovery

unset

MCP_OAUTH_REQUIRED_SCOPES

Space- or comma-separated scopes required for /mcp

premiere:mcp

MCP_OAUTH_ALLOWED_SUBJECTS

Mandatory comma-separated token-subject allowlist for the single operator bridge

unset

ALLOW_UNAUTHENTICATED

Set to 1 only for local/test HTTP harnesses; it is rejected when NODE_ENV=production

unset

MCP_MAX_REQUEST_BYTES

Maximum HTTP MCP request body size

1048576

MCP_HEADERS_TIMEOUT_MS

Maximum time to receive request headers

10000

MCP_REQUEST_TIMEOUT_MS

Maximum time to receive an HTTP request

60000

MCP_KEEP_ALIVE_TIMEOUT_MS

Idle keep-alive socket timeout

5000

MCP_MAX_REQUESTS_PER_SOCKET

Requests permitted on one keep-alive socket

100

MCP_MAX_CONCURRENT_REQUESTS

In-flight authenticated MCP request ceiling

8

MCP_MAX_CONCURRENT_STREAMS

Open authenticated SSE stream ceiling; isolated from operation capacity

32

PREMIERE_MCP_PROJECT_BACKUP_MAX_BYTES

Positive integer byte budget for one project backup

2147483648 (2 GiB)

MCP_RATE_LIMIT_PER_MINUTE

Per-credential token-bucket refill rate

120

MCP_RATE_LIMIT_BURST

Per-credential short burst allowance

30

MCP_MAX_RATE_LIMIT_KEYS

In-memory rate-limit identity ceiling

2048

MCP_TRUST_PROXY

Set to 1 only behind a proxy that overwrites X-Forwarded-For

unset

POSTHOG_API_KEY

PostHog project token; enables privacy-safe MCP usage telemetry

unset

POSTHOG_HOST

PostHog ingestion host

https://us.i.posthog.com

POSTHOG_ENVIRONMENT

Environment property attached to telemetry events

production

POSTHOG_DISTINCT_ID

Optional stable anonymous server identifier

Fly machine ID or random boot ID

When PostHog is enabled, the server records mcp_connection_attempt, mcp_request, mcp_request_rejected, and mcp_tool_call. It also records premiere_mcp_activation_completed only after the read-only verify_premiere_connection check confirms the selected bridge, an open project, and an active sequence. Events contain bounded operational fields such as method, tool name, outcome, status code, duration, and selected bridge. Authentication tokens, IP addresses, MCP arguments, project paths, media names, and tool results are never sent. Person profiles are disabled for these events.

This signal is an aggregate emission, not proof that an analytics provider received it, a count of unique people or editors, or evidence that an editing workflow succeeded. It does not carry a person or editor identifier, so it cannot safely infer "first value."


Project Structure

premiere-pro-mcp/
├── src/
│   ├── index.ts                 # Entry point — stdio transport setup
│   ├── http-server.ts           # Entry point — HTTP/SSE transport (Fly.io / remote)
│   ├── server.ts                # MCP server — registers 453 tools, filtered by authority profile
│   ├── bridge/
│   │   ├── file-bridge.ts       # File-based IPC (write .jsx, poll .json)
│   │   └── script-builder.ts    # ExtendScript generator with ES3 helpers
│   ├── tools/                   # 51 tool modules
│   │   ├── discovery.ts         # Project discovery and queries
│   │   ├── recovery.ts          # Read-only autosave discovery and private bridge telemetry
│   │   ├── project.ts           # Project management and import
│   │   ├── media.ts             # Media and proxy management
│   │   ├── sequence.ts          # Sequence creation and settings
│   │   ├── timeline.ts          # Timeline clip operations
│   │   ├── effects.ts           # Effect application and color correction
│   │   ├── transitions.ts       # Transition management (QE DOM)
│   │   ├── audio.ts             # Audio levels, keyframes, and ffmpeg silence analysis
│   │   ├── av-settings.ts       # Documented AV inspection, mapping, and capability boundaries
│   │   ├── text.ts              # Text overlays and MOGRTs
│   │   ├── markers.ts           # Sequence and clip markers
│   │   ├── tracks.ts            # Track add/delete/lock/visibility
│   │   ├── playhead.ts          # Playhead, work area, in/out points
│   │   ├── metadata.ts          # Metadata, XMP, color labels
│   │   ├── export.ts            # Export, frame capture, encoding
│   │   ├── advanced.ts          # QE DOM: ripple, roll, slide, slip, speed
│   │   ├── keyframes.ts         # Keyframe CRUD and interpolation
│   │   ├── scripting.ts         # Execute arbitrary ExtendScript
│   │   ├── inspection.ts        # Deep project/sequence/clip inspection
│   │   ├── selection.ts         # Clip selection utilities
│   │   ├── clipboard.ts         # Copy effects, batch operations
│   │   ├── source-monitor.ts    # Source monitor control
│   │   ├── track-targeting.ts   # Track targeting, motion, audio props
│   │   ├── utility.ts           # Batch ops, analysis, navigation
│   │   ├── health.ts            # Connectivity ping
│   │   ├── workspace.ts         # Workspace layout switching
│   │   ├── captions.ts          # Caption track creation
│   │   ├── playback.ts          # Timeline/source playback control
│   │   └── project-manager.ts   # Project consolidation/transfer
│   └── resources/
│       └── extendscript-reference.ts  # API reference for LLM context
├── cep-plugin/                  # CEP panel that runs inside Premiere Pro
│   ├── CSXS/manifest.xml        # Extension manifest (PPRO 14.0+)
│   ├── index.html               # Panel UI
│   ├── main.js                  # Bridge polling and script execution
│   ├── host.jsx                 # ExtendScript entry point
│   └── CSInterface.js           # Adobe CEP interface library
├── after-effects-cep-plugin/    # Separate AE CEP bridge for guarded MOGRT recipes
├── scripts/
│   ├── install-cep.sh           # macOS CEP installer (symlink + debug mode)
│   └── install-cep.ps1          # Windows CEP installer (copy + REG_SZ debug mode)
├── Dockerfile                   # Multi-stage Docker build for Fly.io
├── fly.toml                     # Fly.io deployment config
├── RESEARCH.md                  # API research and implementation status
├── AGENTS.md                    # IDE / coding-agent map
├── CONTRIBUTING.md              # Contribution guidelines
├── CHANGELOG.md                 # Version history
└── LICENSE                      # MIT License

Technical Details

CEP and UXP backends

Automatic connection diagnostics prefer UXP when a compatible Premiere 25.6+ panel is connected. Supported UXP workflows remain a capability-aware preview surface. CEP-only tools retain their CEP route; CEP remains the broad production backend because it provides broader ExtendScript access and the undocumented QE DOM used for effects, ripple deletes, and advanced trims across Premiere Pro 2020–2026. Automatic selection uses CEP when UXP is unavailable; it never retries a failed UXP mutation through CEP.

ExtendScript Compatibility

All generated scripts use ES3 syntax (var, manual for loops, no arrow functions, no let/const) since ExtendScript is based on ECMAScript 3. The bridge writes a versioned helper library to the shared temp directory and loads it once per ExtendScript engine via $.evalFile; each command then sends only its tool-specific script.

Security

Metadata privacy: CEP get_metadata and get_xmp_metadata now default to bounded parsed fields with GPS, serial, author and contact values omitted. Raw packets require explicit packet flags and include_sensitive: true; source media paths require include_media_path: true. Existing callers expecting raw XML must opt in. Disk context can retain names, transcripts and notes; select PREMIERE_CONTEXT_BACKEND=memory to avoid persistence.

Understand the trust model before deploying this: any client that can reach the MCP server can control Premiere Pro. execute_extendscript and evaluate_expression are arbitrary-code-execution tools by design and are omitted from discovery and denied at call time by default. Enable them only by setting PREMIERE_MCP_CAPABILITIES=inspect,edit,export,filesystem,unsafe-script.

  • Run it locally over stdio unless you have a specific reason not to. That's the safe default.

  • The HTTP transport (http-server) requires MCP_AUTH_TOKEN and refuses to start without it in production. It binds 0.0.0.0 and is remotely reachable, so never expose it publicly without a strong token and edge controls. ALLOW_UNAUTHENTICATED=1 is limited to non-production local/test use.

  • The HTTP transport admits only exact /mcp Streamable HTTP requests, enforces body/socket/request limits, and applies a bounded in-process per-credential rate and concurrency limit before MCP request parsing or Premiere bridge work begins. It returns 413, 429, or 503 on containment failures. Configure an upstream rate limit and request-size limit too; process-local counters do not protect a multi-machine deployment.

  • The HTTP transport serves no web pages. It answers only /mcp, /health, and OAuth protected-resource metadata under a deny-all Content Security Policy. Other GET/HEAD paths on premiere-pro-mcp.fly.dev or a *.premiere-pro-mcp.com host redirect (308) to https://premiere-pro-mcp.com; every other host receives a JSON 404.

  • Media scans yield between asynchronous filesystem operations and bound total traversal: 25,000 entries, 5,000 matching files, 2,000 directories, depth 32, a 1,000-directory pending queue, and a cooperative five-second budget. A stalled OS call can exceed that elapsed budget. Inspect scan_incomplete and scan_limit_reasons before treating a watch baseline as complete; import previews also report incomplete.

  • Project backups stream their copy and checksum work with a configurable byte budget. Only one backup runs per process; concurrent requests fail promptly. Failed or cancelled copies are removed without replacing an existing backup.

  • The Docker runner uses the unprivileged node user (UID 1000). Custom bridge or context volume mounts must be writable by that user and private to the operator. The default context directory is under /home/node/.local/state/premiere-pro-mcp.

  • Dependency audits run in CI for both lockfiles. Keep local .env*, .npmrc, and private key/certificate files out of commits and Docker build contexts; only placeholder .env.example and .env.template files are eligible for Git tracking.

  • Both CEP panels validate the bridge directory before writing a heartbeat or polling commands. Symlinks and directories owned by another user are refused. On POSIX, directories writable by group/other users are refused by both the server and panels; tightening permissions alone cannot make previously staged commands trustworthy. On Windows, only the current user, SYSTEM and Administrators may have write access, including inherited grants. Windows capability and app-container SIDs (S-1-15-*) are ignored: they are not logon principals and appear as inherited FullControl on stock %LOCALAPPDATA% paths. ACL inspection failures also stop startup. Ancestors must also prevent other users from replacing the bridge path; a private child inside a broadly writable parent is insufficient (POSIX sticky temp directories are supported). Choose a new directory under a private user-owned location if the connector rejects a shared temp folder, and configure the same path on the server and panel. Do not copy pending commands from the rejected folder into the new one. Windows checks invoke PowerShell synchronously before publishing commands, with a five-second timeout and 64 KiB output cap; this adds command latency rather than caching a permission decision that could become stale.

  • There is a 500 KB script size limit, and a small regex check that rejects eval(), new Function(), and System.callSystem() in tool-generated scripts. This is a guard rail, not a sandbox — it is trivially bypassable and is not a security boundary. Do not rely on it to contain untrusted input; the real boundary is who can reach the server.

QE DOM

Many tools use the undocumented QE DOM (enabled via app.enableQE()). These tools are marked with "Uses QE DOM" in their descriptions. The QE DOM provides capabilities unavailable through the standard ExtendScript API:

  • Apply effects and transitions by name

  • Ripple delete, roll/slide/slip edits

  • Set clip speed and reverse

  • Frame blending and time interpolation

  • Remove all effects from a clip


Frequently asked questions

What is an MCP server for Adobe Premiere Pro? It is a Model Context Protocol server that gives a compatible AI assistant structured, reviewable control over supported Adobe Premiere Pro workflows on your own computer. This project's display name is MCP for Adobe Premiere Pro; its npm package is premiere-pro-mcp.

How do I use it with Claude? Install the Claude Desktop bundle, install the separate signed Premiere connector, restart Premiere, then ask Claude to run verify_premiere_connection with no changes. That first prompt is read-only. Claude Fable 5.1 is an optional client model for Cursor, Claude Desktop, or Claude Code; see Claude Fable 5.1 workflows.

Where is the GitHub repository? https://github.com/leancoderkavy/premiere-pro-mcp. Releases, the signed .zxp connector, and the Claude .mcpb bundle are on that repository's Releases page.

What is the bridge panel in Premiere Pro? A local CEP panel (Window > Extensions > MCP for Adobe Premiere Pro) that connects the server to a running Premiere Pro instance. "Running" in the panel means the local bridge is available; it does not by itself show that an edit completed. An authenticated UXP panel is an additional, capability-gated route.

Is there a setup guide? Yes - premiere-mcp-setup-guide.md is a portable guide you can attach to any AI assistant, and https://premiere-pro-mcp.com/docs/ hosts the published documentation.

Does it run on Windows and macOS? Both. Node.js 20.19 or newer and Premiere Pro 2020-2026 are required, and the assistant, server, connector, and Premiere should stay on the same computer. Individual tool support remains capability- and host-dependent.

Is this Adobe's AI Assistant? No. This is an independent MIT-licensed project, not an Adobe product and not Adobe's native AI Assistant. It is also distinct from other MCP servers for Premiere Pro; premiere-pro-mcp is the only npm package published from this repository.

Does local-first mean my AI assistant sends no data to a cloud service? The recommended Premiere bridge runs locally. Your AI client's handling of prompts and tool results still applies. Review its settings before sharing sensitive project information; local-first is not a universal no-upload guarantee.

Is every action previewed, undoable, and host-verified? Tool contracts differ. Review action modes and approval requirements before calling an edit. Readback-confirmed results are verified; committed_unverified means the host accepted a change but verification is incomplete. Inspect Premiere before retrying an uncertain mutation. Save a duplicate project for evaluation and confirm rendered output separately.

Which Adobe Premiere Pro tasks are good first automation candidates? Start with a read-only project and timeline inventory. Then evaluate one bounded workflow on a duplicate project: approved media imports, bin organization, marker preparation, or review-frame exports. The automation guide links exact tool contracts and explains what evidence to check. A still-frame export does not prove playback or audio; a local delivery QC scan does not prove every platform requirement.

Where can search engines and AI assistants find current product facts? Use the website's facts page and generated AI reference, which describe the integrity-verified published npm artifact. The source counts in this README can include changes not yet published. Neither catalog counts nor unit tests establish that an operation succeeded on a particular Premiere host.

Is it free? Yes. The server, the CEP connector, and the documentation are MIT licensed and free to use.


Troubleshooting

  1. Verify debug mode:

    • macOS: defaults read com.adobe.CSXS.12 PlayerDebugMode should return 1

    • Windows: reg query "HKCU\SOFTWARE\Adobe\CSXS.12" /v PlayerDebugMode should report REG_SZ 1 (a REG_DWORD value is not valid for unsigned CEP discovery)

  2. Check the plugin exists:

    • macOS: ls ~/Library/Application\ Support/Adobe/CEP/extensions/MCPBridgeCEP

    • Windows: dir "%APPDATA%\Adobe\CEP\extensions\MCPBridgeCEP"

  3. Completely restart Premiere Pro (not just close/reopen the project)

  4. Check the CSXS version matches your Premiere Pro version

  5. Run premiere-pro-mcp --diagnose-cep to check installation metadata and recent Premiere logs.

Version 1.3.0 and newer installs the signed artifacts/MCPBridgeCEP.zxp included in the npm package on Windows. If diagnostics report Signature verification failed, reinstall the latest npm version, fully quit every Premiere process, run premiere-pro-mcp --install-cep, and relaunch.

  1. Open the CEP panel and verify it shows "Running" with a green dot (the bridge normally starts automatically)

  2. Ensure temp directories match between MCP client config and CEP panel

  3. Read the timeout error: if it reports an in-flight heartbeat, dismiss any open Premiere modal dialog; without a heartbeat, verify the bridge is running and using the same temp directory

  4. Increase timeout: set PREMIERE_TIMEOUT_MS to 60000 or higher

  5. Try ping tool to test basic connectivity

  1. Restart the AI client after editing config

  2. Verify the path to dist/index.js is absolute and correct

  3. Run node dist/index.js in a terminal to check for startup errors

  4. Ensure npm run build completed without errors

  1. QE tools require an active sequence — open one first

  2. Some QE operations are index-based and can fail if clips have been reordered

  3. Re-query the sequence structure after QE operations


Star history

If this project saves you time in Premiere, a star helps other editors find it.


Support the project

This is an independently maintained, MIT-licensed project with no company behind it. Every release is tested against real Premiere versions on both Windows and macOS, which takes hardware, licenses, and time.

Free ways to help, in order of usefulness:

  • ⭐ Star the repo — the main way editors discover it

  • 🐛 File a bug with your Premiere version, OS, and the tool name that failed

  • 📝 Report what worked on a host version not yet in the capability coverage table

  • 🔧 Open a PR — see CONTRIBUTING.md

Sponsorship funds host verification, signing certificates, and hosting. It does not buy prioritized support, roadmap influence, or any claim about unverified host behavior.


Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines. AI agents and IDE assistants should read AGENTS.md.

The evidence-backed next improvement pull-request roadmap breaks the proposed feature, protocol, reliability, and performance work into ten reviewable changes with explicit dependencies and live-host acceptance gates.


License

MIT — free for personal and commercial use.

Available Tools

445 tools
acknowledge_operation_recoveryAcknowledge Operation RecoveryA

Acknowledge user-reviewed reconciliation of uncertain execution after current-state inspection. Requires the exact latest recovery and host-state revisions. Consumed operation IDs remain unavailable for replay; acknowledgement does not undo or retry a host edit.

Inputs: backend (required), reviewed (required), expected_recovery_revision (required), expected_host_state_revision (required),… Returns: ok, data, tool, error, +2 more

add_adjustment_layerAdd Adjustment LayerA

EXPERIMENTAL (QE DOM): add an adjustment layer at the playhead on the specified track. Refuses when the host lacks the QE APIs; verifies a new public TrackItem using isAdjustmentLayer and placement readback.

Inputs: track_index, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

add_audio_keyframesAdd Audio KeyframesB

Add audio level keyframes to create fades or level changes

Inputs: node_id (required), keyframes (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

add_custom_metadata_fieldAdd Custom Metadata FieldA

Add a custom metadata field to the project's metadata schema. This creates a schema/column definition only; it does not set a per-item value. Use set_metadata field_name/value or complete Project Metadata XML with readback to update a value.

Inputs: field_name (required), field_type (required), field_label (required), idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

add_keyframeAdd KeyframeA

Add and read back a keyframe on an effect property. The receipt warns when its time is outside the clip's visible range. Two-component numeric values must match the current host value shape; Motion Position and Anchor Point use normalized 0–1 coordinates only. Colour keys refuse because CEP has no lossless time-specific colour setter. This verifies stored parameter data only; render/playback verification remains host-dependent.

Inputs: value (required), node_id (required), effect_name (required), time_seconds (required), +5 more. Returns: ok, data, tool, error, +2 more

add_markerAdd MarkerB

Add a marker to the active sequence or a clip and read its name, comments, color and duration back. EXPERIMENTAL (QE DOM): the receipt reports undoStackIndex movement, which does not prove QE can reverse the marker. Every marker attempt protects an engine undo boundary; undoTracked:false means the marker did not observably advance the QE index. Marker start and end storage are compared at exact integer ticks; unsupported time writes remain unverified with the created marker identity when available.

Inputs: time_seconds (required), name, color, node_id, +5 more. Returns: ok, data, tool, error, +2 more

add_markers_batchAdd Markers BatchA

Add up to 200 sequence or clip markers in one verified CEP request (beat grids, chapters, silence reviews, client notes). Every marker is validated and range-checked before the first write; the tool reads back the marker count and each created marker's time and fails closed on any mismatch. EXPERIMENTAL QE: records an observed marker boundary for guarded Undo/Redo; crossing it is refused by default, and unreadable history records unknown protection. This boundary does not verify native marker reversal. Marker start and end storage are compared at exact integer ticks; unsupported time writes remain unverified with the created marker identity when available.

Inputs: markers (required), node_id, sequence_id, idempotency_key, +4 more. Returns: ok, data, tool, error, +2 more

add_marker_to_project_itemAdd Marker To Project ItemB

Add a marker to a project item (source clip marker). EXPERIMENTAL QE: records an observed marker boundary for guarded Undo/Redo; crossing it is refused by default, and unreadable history records unknown protection. This boundary does not verify native marker reversal. Marker start and end storage are compared at exact integer ticks; unsupported time writes remain unverified with the created marker identity when available.

Inputs: item_id (required), time_seconds (required), name, type, +6 more. Returns: ok, data, tool, error, +2 more

add_text_overlayAdd Text OverlayA

Unavailable: Premiere does not expose a supported scripting API to create caption clips directly from raw text. For on-screen titles from plain text use add_title; for captions import an .srt/.vtt and use create_caption_track.

Inputs: text (required), start_seconds, caption_format, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

add_titleAdd TitleA

Add an on-screen title from plain text using a stock Essential Graphics template that ships with Premiere (default: Basic Title). Pass text for one line, or lines to fill the template's text fields in order (for example a lower third's name and role). Premiere-built templates (kind 'premiere') get the text baked into a verified copy before import, because Premiere exposes no writable text for them (textVerification 'template_verified'; confirm the render with export_frame). The baked copy path is returned as templateFile and saved under the application support premiere-pro-mcp/titles folder (macOS: ~/Library/Application Support/premiere-pro-mcp/titles). The cache keeps the newest 50 baked copies by modification time; export or copy templates elsewhere if a project needs older copies retained. After Effects-built templates (kind 'after_effects') are imported and their text fields written by position and read back from Premiere (textVerification 'verified', 'mismatch', 'missing_property', or 'committed_unverified'). The graphic is trimmed to duration_seconds and its length read back. Optional styling: font_family (PostScript name) and font_size write every text run of each AE text control when the template allows font editing (Premiere 26 fontEditValue/fontSizeEditValue runs, or legacy fontName/fontSize keys); fill_color requires one exposed Fill Color control; position moves the whole graphic through intrinsic normalized Motion Position. Each requested field has styleChecks readback. Premiere-authored font/fill styling and align are refused before import: no reliable writable/readable CEP 26.5.2 contract is established. Tracking is unsupported. Font readback confirms the stored name, not installation or rendered glyphs. Use list_stock_titles to see templates, their kind, and how many lines each takes.

Inputs: text, align, lines, position, +10 more. Returns: ok, data, tool, error, +2 more

add_to_render_queueAdd To Render QueueA

Request an Adobe Media Encoder render-queue handoff for the active sequence. Requires a saved project and an .epr preset_path. Same as Project presets are refused before Premiere is contacted because AME encodes from a scratch project copy. Optional start_batch requests processing of every ready AME queue job, including unrelated jobs.

Inputs: output_path (required), preset_path (required), start_batch, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

add_to_timelineAdd To TimelineA

Insert a project item at a timeline position. Experimental: if a target clip spans that point, QE razors it before insertion to attempt to preserve its tail; both target and sync-locked track changes are read back. A host may still displace a tail, in which case the edit is reported as committed_unverified. Pass scope 'target_tracks' to ripple only the named pair (this will desync other tracks).

Inputs: item_id (required), scope, track_index, start_seconds, +4 more. Returns: ok, data, tool, error, +2 more

add_to_timeline_batchAdd To Timeline BatchA

Insert up to 32 project items with insert-edit semantics in one validated CEP request. Experimental QE sync-lock handling may ripple or split earlier placements. The tool preflights items and tracks, then verifies every placement again in the final sequence; changed placements return committed_unverified with their observed final positions.

Inputs: clips (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

add_trackAdd TrackB

Add verified video or audio tracks to the active sequence. Returns an error if Premiere cannot add the exact requested count.

Inputs: track_type (required), count, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

add_tracksAdd TracksA

Add video and/or audio tracks through QE, verify the active sequence gained the exact requested counts, and report explicitly when QE inserted the new tracks at index 0 and shifted every existing track up.

Inputs: audio_tracks, video_tracks, audio_51_tracks, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

add_transitionAdd TransitionA

EXPERIMENTAL (undocumented QE DOM): Add a video transition between two clips at a cut point. Reads the transition back from the sequence track.

Inputs: track_index (required), transition_name (required), cut_point_seconds (required), idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

add_transition_to_clipAdd Transition To ClipA

EXPERIMENTAL (undocumented QE DOM): Add a transition to a specific video clip's start, end, or both edges, then read back the requested placement.

Inputs: node_id (required), transition_name (required), position, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

adjust_audio_levelsAdjust Audio LevelsA

Adjust a clip's Volume > Level in dB. Does not read or change Essential Sound Amplify automation.

Inputs: node_id (required), level_db (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

analyze_dialogue_edit_candidatesAnalyze Dialogue Edit CandidatesA
Read-onlyIdempotent

Analyze caller-supplied, revision-bound transcript segments and optional local silence ranges for deterministic dialogue-edit candidates. It never calls a model, persists transcript text, or changes Premiere.

Inputs: segments (required), filler_words, silence_ranges, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

analyze_loudnessAnalyze LoudnessA

Measure integrated loudness (LUFS), loudness range (LU), and true peak (dBFS) from a local media file using FFmpeg's EBU R128 filter. Analysis only: it does not normalize audio or change Premiere.

Inputs: media_path, target_lufs, tolerance_lu, idempotency_key, +4 more. Returns: ok, data, tool, error, +2 more

analyze_video_interlacingAnalyze Video InterlacingA

Classify decoded video frames as progressive, top-field-first, bottom-field-first, mixed, or undetermined using FFmpeg idet. Read-only delivery preflight.

Inputs: media_path (required), use_cache, sample_seconds, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

analyze_video_qcAnalyze Video QcB

Analyze a local video delivery for sustained black and frozen sections with FFmpeg. Read-only: it does not contact Premiere or modify the file.

Inputs: media_path (required), idempotency_key, expected_cep_target, expected_project_path, +2 more. Returns: ok, data, tool, error, +2 more

apply_after_effects_render_handoffApply After Effects Render HandoffA

Import exactly one previewed completed AE render into its approved Premiere bin after rechecking both hosts and file metadata. Requires confirmation and consumes the token before dispatch. Does not save, render, or change a timeline; the receipt returns the new projectItemId, and replace_clip swaps it in for an existing timeline clip at the same span.

Inputs: preview_token (required), confirm_import (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_audio_effectApply Audio EffectB

Apply an audio effect to a clip. Experimental QE catalog lookup includes an exact-name probe when enumeration is empty. A component-list readback does not verify rendered audio.

Inputs: node_id (required), effect_name (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_edit_planApply Edit PlanA

Apply a previously previewed compound edit after revalidating stable project, sequence and target identities before activation or mutation. Requires the edit capability and exact preview confirmation token; changed targets require a fresh preview. Ripple plans require the reviewed sequence to be active for the read-only QE sync-lock preflight.

Inputs: plan (required), confirmation_token (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_effectApply EffectB

Apply a video effect to a clip. Experimental QE DOM catalog lookup includes an exact-name probe when enumeration is empty. A component-list readback does not verify rendered pixels.

Inputs: node_id (required), effect_name (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_extended_edit_planApply Extended Edit PlanA
Destructive

Consume a reviewed compound CEP token once and invoke only its existing typed tools with same-command project/sequence/clip/effect guards. Stops at first failed or unverified receipt, reports completed and unknown steps, and never retries or rolls back partial work. Rendering and audible synchronization remain separate evidence.

Inputs: confirmation_token (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

apply_lutApply LutA

Unavailable on the CEP backend: Premiere's scripting API cannot load a LUT file into Lumetri Color. Its Input LUT and Look parameters are menu indexes over a curated set of bundled looks, and writing a file path to the LUT asset parameters is accepted but not rendered (seen on Premiere Pro 25.2.3, macOS, by comparing exported frames with the same LUT applied by ffmpeg; other builds were not tested). Fails before changing the clip. Apply the LUT in Lumetri Color > Creative > Look (Browse...) instead.

Inputs: node_id (required), lut_path (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_mogrt_premiere_handoffApply Mogrt Premiere HandoffA

Import exactly one previewed MOGRT into the empty track of the explicit disposable Premiere verification sequence, then read back insertion and control descriptors. Requires explicit confirmation; no rendered-frame claim is made.

Inputs: preview_token (required), confirm_import (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_scene_review_workflowApply Scene Review WorkflowA
Destructive

Consume approved source-scene preview once, create reviewed source markers and/or subclips requesting audio in a new verified bin using existing typed CEP tools. Same-command source/project guards refuse relinks or project changes. Stops on failed/unverified receipt and retains bounded partial results; no rollback or false-positive correctness claim.

Inputs: confirmation_token (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

apply_send_clip_to_after_effectsApply Send Clip To After EffectsA

Send the previewed clip to After Effects: recheck the clip, add a comp with its exact source range (footage layer audio off) to the open AE project and save it, import the comp into Premiere over Dynamic Link, then replace the clip with it at the same timeline span. The original's linked audio stays. Requires confirmation; the token is single-use. A failure after the AE save leaves the comp in AE and reports where it stopped.

Inputs: confirm_send (required), preview_token (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_spot_workflow_planApply Spot Workflow PlanA

Apply one exact previewed motion-demo, product-spot, or brand-spot plan. Requires edit authority, requires filesystem authority for a MOGRT, and only targets empty explicitly named tracks. Host readback is not playback or render verification.

Inputs: plan (required), confirmation_token (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

apply_stacked_camera_editApply Stacked Camera EditA
Destructive

Apply one single-use reviewed ordinary stacked-camera plan to a newly cloned sequence. Reads actual track locks, linked partners, source identity, forward1x speed and nest/reverse state before clone and before writes; unavailable getters refuse. Verifies exact enabled states and master-audio ranges. Sequential partial completion is reported; no rollback or audible sync claim.

Inputs: confirmation_token (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

attach_custom_propertyAttach Custom PropertyA

Attach a custom property (key/value pair) to the active sequence and confirm it against the sequence project item's XMP packet. Reports failure when the property never lands in XMP.

Inputs: property_id (required), property_value (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

audit_project_structureAudit Project StructureA

Audit the Project panel against explicit layout rules (allowed root names, extension-to-bin placement, a sequences bin, maximum bin depth, empty bins, an explicit target_tree of bins with item node IDs, renames, remove_empty) and report violations by node ID. Read-only by default (inspect authority): walks up to 5000 items, reports truncation, and returns at most 200 proposed moves, 200 renames and 200 empty-bin removals plus a plan_token bound to the project, rules, and those exact operations. With apply: true (edit authority) it requires that plan_token, re-reads the project and refuses if the plan changed, the walk was truncated, or any target path is ambiguous (two bins with one name at a level). It then creates missing target bins, moves only the planned items (reading back each parent), deletes only remove_empty bins that are still empty (reading back the parent's children), then renames (reading back each name); target paths are resolved against the audited names, so renames run last. Outcome is verified only when every planned operation is verified, otherwise partial or failed with per-item details. Without target_tree, rename, or remove_empty it never deletes, renames, or moves bins; root-name, depth, and forbid_empty_bins findings are report-only.

Inputs: rules (required), apply, plan_token, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

audit_timeline_healthAudit Timeline HealthA
Read-onlyIdempotent

Audit one sequence snapshot for flash frames, gaps, overlaps, disabled clips, repeated shots, video without audio, extreme speed, invalid times, empty tracks, leading black, and trailing gaps; returns a 0..100 score, findings with timecodes, and fix routes. Local-only; never changes Premiere.

Inputs: snapshot (required), frame_rate, gap_min_frames, max_speed_percent, +5 more. Returns: ok, data, tool, error, +2 more

auto_reframe_sequenceAuto Reframe SequenceA

Auto-reframe a sequence into a new sequence of target_width x target_height. Premiere derives the new sequence from the source height (a 1080p source at 9:16 comes out 607x1080), so the tool then sets the requested frame size and verifies it; the Auto Reframe effect refits to the new size.

Inputs: target_width (required), target_height (required), new_name, sequence_id, +5 more. Returns: ok, data, tool, error, +2 more

batch_add_transitionsBatch Add TransitionsB
Destructive

EXPERIMENTAL (undocumented QE DOM): Add the same video transition at each eligible cut point on a track and report per-cut readback.

Inputs: transition_name (required), track_index, idempotency_key, duration_seconds, +2 more. Returns: ok, data, tool, error, +2 more

batch_apply_effectBatch Apply EffectA
Destructive

Apply one audio or video effect to compatible selected clips, a compatible track, or all compatible clips. Every target is preflighted and then checked by component-count readback.

Inputs: target (required), effect_name (required), track_type, track_index, +3 more. Returns: ok, data, tool, error, +2 more

batch_enable_disableBatch Enable DisableB
Destructive

Enable or disable multiple clips at once (selected, track, or all).

Inputs: target (required), enabled (required), track_type, track_index, +3 more. Returns: ok, data, tool, error, +2 more

batch_rename_clipsBatch Rename ClipsB
Destructive

Rename multiple clips on the timeline using a pattern. Supports sequential numbering.

Inputs: pattern (required), track_type (required), track_index (required), start_number, +4 more. Returns: ok, data, tool, error, +2 more

bind_media_provenanceBind Media ProvenanceC
Read-onlyIdempotent

Bind approved source/proxy content hashes and original availability to an analysis provider and timeline revision. Proxy flags do not prove delivery provider; caller-evidenced full-resolution export remains distinct from artifact validation.

Inputs: provenance (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

build_caption_artifactBuild Caption ArtifactA

Build a CapCut/Submagic-style SRT or VTT caption artifact from a caller-supplied word timeline: balanced word groups, sentence-aware breaks, min/max cue durations, optional karaoke word timestamps (VTT), emphasis and speaker markup. Local-only; returns the artifact inline or writes it inside an approved workspace and never changes Premiere.

Inputs: format (required), word_timeline (required), karaoke, max_lines, +15 more. Returns: ok, data, tool, error, +2 more

build_edit_review_evidenceBuild Edit Review EvidenceA

Create new before/after contact sheets, optional bounded MP4 excerpts, and checksum receipts from two reviewed rendered videos. Supports visual review of cuts, transitions, titles and masks; still grids do not verify temporal behavior or authenticate host lineage.

Inputs: after_sheet (required), after_video (required), before_sheet (required), before_video (required), +8 more. Returns: ok, data, tool, error, +2 more

build_project_handoff_manifestBuild Project Handoff ManifestA
Read-onlyIdempotent

Inspect explicitly listed dependencies inside an approved consolidated workspace. Reports observed bytes, missing files, expected source identity and unresolved nests/image sequences/AE/template dependencies. A copied project alone cannot pass completeness.

Inputs: dependencies (required), inventory_complete (required), approved_workspace_path (required), idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

cancel_workflow_jobCancel Workflow JobA

Request cancellation of an owned local process or undispatched local job. Native Premiere/AME cancellation is unsupported; no queue is cleared and no output file is deleted.

Inputs: job_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

can_executeCan ExecuteA
Read-onlyIdempotent

Validate an exact tool invocation, authority, live backend and bounded CEP targets without applying it. Returns named refusal/unknown reasons and evidence age; preflight is advisory and must be revalidated at dispatch.

Inputs: arguments (required), tool_name (required), expected_cep_target, expected_sequence_id, +1 more. Returns: ok, data, tool, error, +2 more

capture_frameCapture FrameA

Capture the current frame and return it as inline image data for the LLM to see. This supports still-image review only. The PNG keeps the sequence's transparency (hasAlpha); transparent areas may display as white or a checkerboard rather than the black a video render shows.

Inputs: time_seconds, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

check_caption_safe_zoneCheck Caption Safe ZoneA
Read-onlyIdempotent

Check caption, title, logo, and graphic rectangles against approximate platform UI overlay zones (TikTok, Reels, Shorts, feed, YouTube, LinkedIn, X) and suggest the nearest clear position. Local-only geometry on caller-supplied normalized rects; it never reads or changes Premiere.

Inputs: frame (required), elements (required), platform (required), expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

check_offline_mediaCheck Offline MediaB
Read-onlyIdempotent

Check for offline (missing) media in the project

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

clear_item_in_outClear Item In OutB

Clear in and/or out points on a project item (reset to full duration). Still-image Out is independently verified only when its own duration is readable; otherwise the result explains that limit.

Inputs: item_id (required), clear_in, clear_out, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

clear_sequence_in_outClear Sequence In OutB

Clear the in and/or out points on the active sequence so they read back as unset, and leave the other point unchanged.

Inputs: clear_in, clear_out, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

close_all_source_clipsClose All Source ClipsB
Destructive

Close all clips in the Source Monitor.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

close_projectClose ProjectA
Destructive

Close an open Premiere Pro project: the active one, or the open project at project_path. Captures the close reply without reading torn-down project objects, then verifies closure and the active project in a separate read-only call. An unreadable verification remains committed_unverified; a native close that never returns remains unknown.

Inputs: save_first, project_path, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

close_sequenceClose SequenceA
Destructive

Request closing a sequence timeline tab. Premiere exposes no open-tab enumeration, so dispatch is requested_unverified; the sequence stays in the project.

Inputs: sequence_id, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

close_source_monitorClose Source MonitorA
Destructive

Close the clip currently showing in the Source Monitor. Premiere then shows the previously opened clip, if any; the result names it.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

color_correctColor CorrectB

Apply basic color correction through experimental QE Lumetri insertion. Requires Lumetri component and requested property readback; rendered output is not verified.

Inputs: node_id (required), tint, blacks, whites, +9 more. Returns: ok, data, tool, error, +2 more

compare_cmx3600_edlsCompare Cmx3600 EdlsC

Compare two local CMX 3600 EDLs by event number and report bounded added, removed, and changed editorial events. Read-only; it does not alter either interchange file or Premiere.

Inputs: after_path (required), before_path (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

compute_mask_fit_motionCompute Mask Fit MotionA
Read-onlyIdempotent

Inspect only. Compute the Motion Scale (%) and Position that place a still image's subject inside an existing Rounded Crop, Crop, or similar mask effect. Reads the sequence frame size, the source frame size, current Motion values, and the mask effect's parameters, then solves the geometry deterministically from a caller-supplied subject box (fractions of the source image, for example head-top to chin). No image analysis and no changes to Premiere. Apply the result with set_clip_scale and set_clip_position (or set_effect_property), then verify with capture_frame. Assumes Rotation 0 and uniform scale; mask geometry is treated as fixed in the sequence frame (mask_space 'sequence').

Inputs: node_id (required), subject (required), fit_axis, placement, +9 more. Returns: ok, data, tool, error, +2 more

consolidate_and_transferConsolidate And TransferA

Collect (copy) or transcode project media into a new project with Premiere's Project Manager. Premiere writes a Copied_ folder inside destination_path (created if missing); success is reported only after that folder holds the copied .prproj, with the copied files listed.

Inputs: destination_path (required), transcode, rename_media, exclude_unused, +9 more. Returns: ok, data, tool, error, +2 more

consolidate_duplicatesConsolidate DuplicatesC

Consolidate duplicate project items and report success only when duplicate media groups decrease.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

convert_timeline_timeConvert Timeline TimeA
Read-onlyIdempotent

Convert exact Premiere tick strings, rational frames, samples, decimal seconds and signed/drop-frame timecode locally. Nearest ties round away from zero; intervals use inclusive start and exclusive end. No floating-point tick parsing or host dispatch.

Inputs: to (required), from (required), value (required), frame_rate (required), +5 more. Returns: ok, data, tool, error, +2 more

copy_effects_between_clipsCopy Effects Between ClipsA

Copy all effects (or a specific effect) from one clip to another, including parameter values and keyframes, and read every written value back. A missing effect is added through the experimental legacy QE DOM; when the target already has that effect, its values are updated instead of stacking a second default-valued instance. Intrinsic components such as Motion and Opacity are skipped unless named. Uses the same component matching and per-property receipts as paste_clip_attributes.

Inputs: source_node_id (required), target_node_id (required), effect_name, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

copy_effect_valuesCopy Effect ValuesA

Copy verified scalar, numeric-array and colour effect-property values from one effect to the matching effect on another clip. Both clips must already have the same effect applied. Properties are matched by position, then by unique display name, because effects such as Lumetri Color repeat names across sections. Legacy CEP deliberately refuses Blend Mode because Premiere can corrupt its enum value on cross-clip writes.

Inputs: effect_name (required), source_node_id (required), target_node_id (required), idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

create_bars_and_toneCreate Bars And ToneA

Create a Bars and Tone synthetic media item in the project (useful for leader/calibration). Returns the created item's name, nodeId, and treePath, found by reading the project back.

Inputs: name, width, bin_id, height, +7 more. Returns: ok, data, tool, error, +2 more

create_binCreate BinA

Create a new bin (folder) in the project panel, optionally nested inside an existing bin. Reads the project back: verified is true only when the new bin is a direct child of the requested parent; otherwise the result reports outcome committed_unverified.

Inputs: name (required), parent_bin, parent_bin_id, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

create_caption_trackCreate Caption TrackA

Import an already reviewed caption artifact into the active sequence, or create a local lecture-caption timing and review workflow plan. Import rejects unsupported formats before host dispatch and reports structural success only when valid count readback shows exactly one new caption track. Unreadable or unexpected results preserve committed_unverified diagnostics; inspect before retrying. Captions import with Premiere's default style; styling, per-word colour, and Upgrade Caption to Graphic stay manual (get_caption_style_guidance). The planning action never contacts Premiere or changes an artifact. Caption tracks render in export_sequence by default; CEP cannot remove or hide them. Import results include observed undoSteps (null when unavailable) and reversal guidance for guarded experimental QE multiple_undo or caption mute through a capable UXP panel.

Inputs: action, item_id, start_seconds, caption_format, +9 more. Returns: ok, data, tool, error, +2 more

create_context_edit_planCreate Context Edit PlanA
Read-onlyIdempotent

Create a non-mutating, evidence-backed edit-plan scaffold from indexed Premiere context. It returns ranked source/time candidates and stale-state guards; the model must review them and use preview_edit_plan before any mutation.

Inputs: intent (required), project_id (required), strategy, sequence_id, +4 more. Returns: ok, data, tool, error, +2 more

create_editorial_context_packCreate Editorial Context PackA
Read-onlyIdempotent

Create a compact Markdown reading view from already captured local transcript, shot, audio, note, source, or timeline context. It returns stable evidence IDs and context revisions for review, never calls an AI/provider or Premiere, and cannot change the project.

Inputs: intent (required), project_id (required), kinds, max_entries, +5 more. Returns: ok, data, tool, error, +2 more

create_editorial_planCreate Editorial PlanA
Read-onlyIdempotent

Create a local, evidence-backed editorial workflow plan from captured project context. It never calls an LLM, uploads media, or changes Premiere.

Inputs: intent (required), workflow (required), project_id (required), sequence_id, +6 more. Returns: ok, data, tool, error, +2 more

create_mogrt_batchCreate Mogrt BatchA

Create the exact MOGRT recipes from a one-time batch preview. Requires explicit export confirmation and stops on the first After Effects failure without claiming rollback.

Inputs: preview_token (required), confirm_export (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

create_mogrt_recipeCreate Mogrt RecipeA

Create exactly one previewed MOGRT recipe in a saved After Effects project inside the approved workspace. Requires explicit export confirmation; it never creates projects or output folders.

Inputs: preview_token (required), confirm_export (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

create_projectCreate ProjectC

Create a new Premiere Pro project at the specified path

Inputs: path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

create_project_backupCreate Project BackupA

Create a collision-safe, byte-verified backup beside an existing .prproj file without opening or modifying the source project.

Inputs: project_path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

create_sequenceCreate SequenceC

Create a new sequence in the project

Inputs: name (required), preset_path, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

create_sequence_checkpointCreate Sequence CheckpointA

Clone a sequence into a named '[checkpoint]' copy before a risky edit and return a diff_sequence_snapshots-compatible snapshot of the original. Verifies the clone exists with matching track and clip counts, re-activates the original, and never deletes or overwrites anything.

Inputs: label, sequence_id, idempotency_key, include_snapshot, +2 more. Returns: ok, data, tool, error, +2 more

create_sequence_from_clipsCreate Sequence From ClipsA

Create a new sequence from project items, then verify its registered identity, name and source-item placements. clipCount reports observed track items; requestedClipCount reports requested source items.

Inputs: name (required), item_ids (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

create_sequence_from_presetCreate Sequence From PresetA

EXPERIMENTAL (undocumented QE DOM): create a new sequence from a specific preset file (.sqpreset) using qe.project.newSequence. Reports success only after a new sequence ID appears in the project collection; a same-name sequence that was already active is not treated as created.

Inputs: name (required), preset_path (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

create_smart_binCreate Smart BinA

Create a smart bin (search bin) and inspect its new identity and name. The stored search query has no getter, so creation reports committed_unverified with identity verification separately.

Inputs: name (required), query (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

create_source_freeze_frameCreate Source Freeze FrameA

Create a freeze frame from a project item at a SOURCE-media time (not a sequence time; for a sequence time use freeze_frame). Decodes the frame with ffmpeg from the item's media file (requires ffmpeg/ffprobe on PATH; no Source Monitor or QE state is used), refuses to overwrite an existing output file, imports the still and sets its Out mark to duration_seconds. Optional place puts it on an empty range of one video track (refuses an occupied or locked range rather than overwriting); optional zoom (requires place) adds Motion Scale and optional Position keyframes at the clip's first and last frame for a punch-in. Every step is read back; partial success reports which steps were committed but not verified. Refuses before any change when the item has no readable local media, the time is past the media end, or the item's interpreted frame rate differs from the file's.

Inputs: output_path (required), source_item_id (required), source_time_seconds (required), zoom, +5 more. Returns: ok, data, tool, error, +2 more

create_subclipCreate SubclipA

Create a subclip from a project item with in/out points (seconds from the start of the file, even when the media carries a start timecode). Returns the new item's nodeId and reads its stored range back from Premiere project metadata: outcome verified when each observed in/out point is within half a media frame (or audio sample) of the request, so a whole-frame miss is committed_unverified. Points are snapped to the nearest media frame and sent a quarter frame past it so Premiere stores that frame. A media start timecode is reported as mediaStartSeconds.

Inputs: name (required), item_id (required), in_seconds (required), out_seconds (required), +3 more. Returns: ok, data, tool, error, +2 more

create_subsequenceCreate SubsequenceA

Create a separate subsequence from selected clips or a time range. This Premiere API does not replace the original timeline clips with a nested-sequence reference.

Inputs: idempotency_key, expected_cep_target, expected_project_path, ignore_track_targeting. Returns: ok, data, tool, error, +2 more

crop_clipCrop ClipA

Apply or update Premiere's Crop effect on one video clip and read back every requested value. Adding Crop uses the legacy QE catalog only when the clip does not already contain it.

Inputs: node_id (required), top, left, zoom, +6 more. Returns: ok, data, tool, error, +2 more

delete_binDelete BinA
Destructive

Delete a bin (folder) and everything inside it from the project panel, and read back that it is gone. Deleting a bin also removes its media's clips from every sequence and deletes sequences stored in the bin, so a bin whose contents are used on a timeline — including a Sequences bin whose media lives elsewhere — is refused unless confirm_remove_from_sequences is true; the refusal lists the sequences and tracks (see find_item_usages). Bins holding offline media are refused unless allow_offline is true.

Inputs: bin_id (required), allow_offline, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

delete_markerDelete MarkerB
Destructive

Delete a marker at a specific time position. EXPERIMENTAL (QE DOM): the receipt reports undoStackIndex movement, which does not prove QE can reverse the marker. Every marker attempt protects an engine undo boundary; undoTracked:false means the marker did not observably advance the QE index.

Inputs: time_seconds (required), node_id, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

delete_multiple_project_itemsDelete Multiple Project ItemsA
Destructive

Delete several project items (bins, sequences, clips or files) and read back that each is gone. Every item is checked before any is deleted, against one timeline-usage index built in a single pass over every sequence (the same scan get_unused_media uses), so 100 items cost one scan instead of 100. Deletions then run in chunks of 25 items per host command with per-chunk readback and a progress notification at least every 10 s; up to 500 items per call. A chunk that fails stops the batch and the reply counts what was deleted before it. organize_project_items_uxp with action 'remove' (authenticated UXP bridge) is the preferred, documented route; this CEP fallback deletes clips and files through a temporary bin, which cannot be undone here. Items (or bins whose contents are) used on a timeline are refused unless confirm_remove_from_sequences is true. Nested sequences count as in use on the parent timeline.

Inputs: item_ids (required), allow_offline, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

delete_preview_filesDelete Preview FilesA
Destructive

Request preview/render cache deletion through experimental QE DOM. A false return fails; other returns remain committed_unverified because no cache-file readback is available.

Inputs: media_type, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

delete_project_itemDelete Project ItemA
Destructive

Delete a project item (bin, sequence, clip or file) from the project panel and read back that it is gone. organize_project_items_uxp with action 'remove' (authenticated UXP bridge) is the preferred, documented route. This CEP fallback deletes a clip or file by moving it into a temporary bin and deleting that bin, which cannot be undone here. Deleting media also removes its clips from every sequence, so an item (or a bin whose contents are) used on a timeline is refused unless confirm_remove_from_sequences is true. A sequence nested on another timeline is refused the same way.

Inputs: item_id (required), allow_offline, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

delete_sequenceDelete SequenceA
Destructive

Delete a sequence from the project and read back that it is gone. A sequence nested on another timeline is refused unless confirm_remove_from_sequences is true, matching delete_project_item; deleting it would remove or orphan those nested clips.

Inputs: sequence_id (required), idempotency_key, expected_cep_target, expected_project_path, +1 more. Returns: ok, data, tool, error, +2 more

delete_trackDelete TrackA
Destructive

EXPERIMENTAL (undocumented QE DOM: removeVideoTrack/removeAudioTrack). Delete a video or audio track from the active sequence through QE and verify that exactly that track was removed (the remaining tracks keep their clips, custom names and lock/mute state in order). Refuses a track that still holds clips unless force is true. Caption tracks cannot be deleted (no host API); a caption track_type is refused with the manual route.

Inputs: track_type (required), track_index (required), force, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

deselect_all_clipsDeselect All ClipsC

Deselect all clips in the active sequence.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

detach_proxyDetach ProxyB

Detach/remove the proxy from a project item and read hasProxy back; unavailable readback reports committed_unverified.

Inputs: item_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

detect_active_picture_boundsDetect Active Picture BoundsA

Detect the most frequent active-picture crop rectangle in decoded video, exposing probable letterbox or pillarbox bars without modifying the source.

Inputs: media_path (required), limit, use_cache, sample_seconds, +4 more. Returns: ok, data, tool, error, +2 more

detect_audio_transientsDetect Audio TransientsA

Find probable beat or edit-point transients from decoded audio peaks. Returns candidates for editorial review; it does not claim musical beat-grid accuracy or change a timeline.

Inputs: media_path (required), use_cache, maximum_events, threshold_dbfs, +5 more. Returns: ok, data, tool, error, +2 more

detect_beatsDetect BeatsA

Estimate a steady beat grid from a local audio or video file without changing Premiere. FFmpeg decodes at most 30 minutes to a bounded mono analysis stream; local onset autocorrelation returns BPM, phase-aligned beat times, confidence, and half/double-time alternatives.

Inputs: media_path (required), max_beats, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

detect_motion_peaksDetect Motion PeaksA

Find probable high-motion moments in a bounded local video sample from decoded frame differences. Read-only editorial candidates; camera movement, flashes, cuts, and subject motion are not semantically distinguished.

Inputs: media_path (required), threshold, use_cache, maximum_events, +7 more. Returns: ok, data, tool, error, +2 more

detect_repeated_takesDetect Repeated TakesA
Read-onlyIdempotent

Detect repeated sentence takes (retakes) in a word timeline using token similarity within a time window, and plan removal of all but the kept take. Returns take groups, removal and keep ranges, and apply routes. Local-only; never changes Premiere.

Inputs: word_timeline (required), keep, min_words, frame_rate, +6 more. Returns: ok, data, tool, error, +2 more

detect_scene_editsDetect Scene EditsC

Safe scene-edit facade. It uses the authenticated Premiere UXP bridge when connected and explicitly confirmed; CEP fallback is intentionally withheld because synchronous scene detection can block the panel.

Inputs: mode (required), confirm_non_undoable (required), operation_id, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

detect_silenceDetect SilenceA

Find silent ranges in a media file and return both the silences and the complementary segments worth keeping. Analysis only — nothing in the project or on the timeline is modified. Requires ffmpeg on PATH: Premiere's scripting API exposes no audio-level or waveform data, so silence cannot be measured through the bridge.

Inputs: media_path, idempotency_key, project_item_id, noise_threshold_db, +3 more. Returns: ok, data, tool, error, +2 more

detect_source_scene_changesDetect Source Scene ChangesB

Detect probable visual cuts in a local source file using FFmpeg scene scores. Read-only and source-relative; it does not cut a Premiere timeline.

Inputs: media_path (required), threshold, maximum_events, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

diff_sequence_snapshotsDiff Sequence SnapshotsA
Read-onlyIdempotent

Diff two sequence snapshots (from get_sequence_structure or inspect_sequence_structure_uxp) into added, removed, moved, trimmed, retimed, enabled, and renamed clip changes with frame deltas, per-track counts, and EDL-like timecode lines. Local-only; never reads or changes Premiere.

Inputs: after (required), before (required), frame_rate, tolerance_frames, +2 more. Returns: ok, data, tool, error, +2 more

duplicate_clipDuplicate ClipA

EXPERIMENTAL: Duplicate a timeline clip, with its linked audio/video partner, onto the first tracks above it that are empty for the clip's time range. The copy keeps the clip's source in point and visible duration, is placed with an overwrite edit (nothing ripples), and is read back. A post-write mismatch is committed_unverified; inspect the timeline or use Undo. High-rate audio above 48 kHz refuses before writing temporary source marks unless its existing marks already match the copy range; native restore diagnostics are pending. Fails without changes when no free track is available; add one with add_tracks.

Inputs: node_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

duplicate_sequenceDuplicate SequenceA

Duplicate an existing sequence and report the new copy's sequence ID (id) and, when Premiere exposes it, its project item node ID (projectItemNodeId). Project-item tools accept either. Readback verifies identity only; audio track-to-master routing is not verified. When sound is expected, check an export with export_sequence audio_check=expect_signal.

Inputs: sequence_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

enable_disable_clipEnable Disable ClipC

Enable or disable a clip on the timeline

Inputs: enabled (required), node_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

encode_fileEncode FileA

Request an Adobe Media Encoder encode for an external file. Requires a saved project. The returned job ID is an unverified handoff; verify queue presence or the output file independently. Optional start_batch requests processing of every ready AME queue job, including unrelated jobs.

Inputs: input_path (required), output_path (required), preset_path (required), in_seconds, +6 more. Returns: ok, data, tool, error, +2 more

encode_project_itemEncode Project ItemA

Request an Adobe Media Encoder encode for a project item. Requires a saved project. The returned job ID is an unverified handoff; verify queue presence or the output file independently. Optional start_batch requests processing of every ready AME queue job, including unrelated jobs.

Inputs: item_id (required), output_path (required), preset_path (required), start_batch, +4 more. Returns: ok, data, tool, error, +2 more

enqueue_after_effects_renderEnqueue After Effects RenderA

Queue exactly one previewed After Effects render with named host templates. Requires explicit confirmation; it saves the open project but never starts rendering or overwrites output.

Inputs: preview_token (required), confirm_enqueue (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

export_aafExport AafB

Unavailable on the CEP backend. Use export_aaf_uxp with an authenticated Premiere 26.3+ UXP bridge.

Inputs: output_path (required), sample_rate, mix_down_video, bits_per_sample, +4 more. Returns: ok, data, tool, error, +2 more

export_and_verifyExport And VerifyA

Preflight and directly render a guarded CEP sequence, then independently hash and probe the exact output against a delivery contract and optional decoded QC. Refuses existing destinations; never treats queue acceptance as completion.

Inputs: contract (required), output_path (required), preset_path (required), range, +5 more. Returns: ok, data, tool, error, +2 more

export_as_fcp_xmlExport As Fcp XmlA

Export the active sequence as a Final Cut Pro XML file. Sequences with effects FCP XML cannot represent can make Premiere show a Translation Report modal after writing the XML; dismiss it in Premiere before any queued command can run. Detects the written XML and fresh report if the modal blocks the host. Default wait is 60 minutes for long sequences.

Inputs: output_path (required), idempotency_key, timeout_minutes, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

export_as_projectExport As ProjectB

Export a sequence as a standalone Premiere Pro project file. Fails when Premiere writes no file or leaves a pre-existing output unchanged.

Inputs: output_path (required), overwrite, sequence_id, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

export_facility_metadata_tableExport Facility Metadata TableA

Create a new bounded ALE facility metadata table from reviewed named field rows. Rejects duplicate columns, unknown row fields and tabs/newlines that ALE cannot safely represent. No project metadata is read or changed; verify downstream facility import separately.

Inputs: fps (required), rows (required), columns (required), output_path (required), +3 more. Returns: ok, data, tool, error, +2 more

export_frameExport FrameA

Export a file-verified still image. PNG stills keep the sequence's transparency (straight alpha, reported as hasAlpha); composite them over black before measuring brightness or comparing with a video render. A single still does not verify motion over time, playback or audio. After a linked After Effects composition changes, Premiere can return its cached frame for a time it already rendered; to check the change, export a time not exported since the change.

Inputs: output_path (required), time_seconds, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

export_omfExport OmfA

Export the active sequence as an OMF file (Open Media Framework, for audio post-production). Long sequences can use a longer wait (default 60 minutes); if Premiere writes the file but times out, the receipt includes its size as committed_unverified.

Inputs: output_path (required), include_pan, sample_rate, handle_frames, +8 more. Returns: ok, data, tool, error, +2 more

export_review_markersExport Review MarkersA

Create a new bounded review-marker CSV or JSON from caller-reviewed marker readback. Includes exact ticks, rational rate, source/sequence identity and display timecodes with explicit start offset/drop-frame policy. CSV text escapes spreadsheet formula prefixes, quotes and newlines. Existing files are never overwritten.

Inputs: rate (required), format (required), target (required), markers (required), +5 more. Returns: ok, data, tool, error, +2 more

export_sequenceExport SequenceA

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. Optional audio_check reports decoded signal, silence, absent audio or an unavailable check; expect_signal makes a silent or absent stream fail verification. Signal does not establish audibility, sync or sound quality. 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.

Inputs: output_path (required), range, overwrite, audio_check, +6 more. Returns: ok, data, tool, error, +2 more

export_sequence_clip_review_framesExport Sequence Clip Review FramesA

Export one file-verified still frame at the midpoint of each clip on a chosen video track in one bridge request. If Media Encoder still capture cannot restore sequence In/Out, remaining frames are not attempted and the call fails. Read-only in Premiere; it does not mute tracks or claim visual quality.

Inputs: output_dir (required), limit, track_index, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

export_sequence_edlExport Sequence EdlA

Generate a CMX 3600 EDL for one video or audio track of a sequence from Premiere timeline readback (cuts, reels, source/record timecode, M2 lines for retimed clips), self-validate it, and return it inline or write it inside an approved workspace. Premiere is only read; this is not a Premiere-native export. Long sequences can use a longer timeout (default 30 minutes).

Inputs: title, reel_mode, drop_frame, frame_rate, +13 more. Returns: ok, data, tool, error, +2 more

export_sequence_job_startExport Sequence Job StartA

Start an asynchronous Adobe Media Encoder export of the active sequence and return a job id at once, so long renders (such as full episodes) do not hold the MCP call open. Poll get_export_job_status until it reports completed or failed. Requires a saved project, an .epr preset_path (Same as Project presets are refused), an existing output folder, and an output_path with no file yet (existing files are always refused; AME may otherwise rename or overwrite). The output extension must match the preset; a missing extension is added. range follows export_sequence: in_to_out and work_area fail closed instead of encoding the whole timeline. start_batch (default true) asks AME to start every ready queue job, including unrelated ones. Success means AME accepted the job (committed_unverified); render completion and the file are verified later by get_export_job_status. Jobs are tracked only by this server process.

Inputs: output_path (required), preset_path (required), range, start_batch, +3 more. Returns: ok, data, tool, error, +2 more

export_sequence_marker_review_framesExport Sequence Marker Review FramesA

Export up to 24 file-verified still frames at active-sequence marker positions in one bridge request for marker-driven review. If Media Encoder still capture cannot restore sequence In/Out, remaining frames are not attempted and the call fails. It reads markers and writes image files only; it does not add, update, or remove Premiere markers.

Inputs: output_dir (required), limit, end_seconds, marker_type, +4 more. Returns: ok, data, tool, error, +2 more

export_sequence_review_framesExport Sequence Review FramesA

Export 2-24 evenly spaced, file-verified frames from an active-sequence range in one bridge round trip for visual review. If Media Encoder still capture cannot restore sequence In/Out, remaining frames are not attempted and the call fails. Still capture does not verify temporal animation, playback, audio, or editorial quality; PNG frames keep the sequence's transparency (straight alpha), so composite them over black before comparing with a video export.

Inputs: output_dir (required), end_seconds, frame_count, start_seconds, +3 more. Returns: ok, data, tool, error, +2 more

extract_selectionExtract SelectionB

EXPERIMENTAL (undocumented QE DOM: extract()). Extract (remove and close the gap) the content between the sequence in/out points on every targeted, unlocked track, then verify each targeted track lost exactly the range and its later clips moved up by the range. Marks that Premiere stored just off a frame are first re-written on that exact frame through QE (marksRewritten). Requires sequence in/out marks that do not span the whole sequence. Premiere can also change untargeted tracks (for example the linked audio of targeted video, or sync-locked tracks); those are not verified but are listed in otherTracksChanged.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

find_items_by_media_pathFind Items By Media PathA
Read-onlyIdempotent

Find project items whose media path contains the given search string

Inputs: path_search (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

find_item_usagesFind Item UsagesA
Read-onlyIdempotent

Read-only: list where project items are used on timelines, as sequence name/ID, track type/index and clip count. A bin counts everything inside it, including sequences stored there (every clip on those timelines), because deleting a bin deletes those sequences even when their media lives in another bin. Run this before deleting or reorganizing bins, especially after import_fcp_xml, which can reuse existing project items for its sequences. Also reports offline (missing-media) items inside each target.

Inputs: item_ids (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

find_project_item_by_nameFind Project Item By NameB
Read-onlyIdempotent

Find a project item by name (searches recursively through bins)

Inputs: name (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

freeze_frameFreeze FrameA

Create a freeze frame from a clip at a specific SEQUENCE time (for a source-media time, use create_source_freeze_frame). Existing outputs require overwrite true. Exports the frame, imports it back as a still image, and sets the still's Out mark to duration_seconds so add_to_timeline places it at that length (snapped to the still's frame grid, then to the sequence frame). It does not place the still on the timeline.

Inputs: output_path (required), overwrite, time_seconds, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

generate_media_contact_sheetGenerate Media Contact SheetA

Generate a new, disk-verified PNG contact sheet from evenly sampled source frames. Refuses to overwrite an existing output and does not modify Premiere or the source.

Inputs: media_path (required), output_path (required), rows, columns, +4 more. Returns: ok, data, tool, error, +2 more

get_active_sequenceGet Active SequenceA
Read-onlyIdempotent

Get bounded, paged information about the currently active sequence (50 clips by default). Audio and video clips include source In/Out seconds. Follow pagination.nextOffset for more. Bounded source-alignment diagnostics include separate picture/sound offsets and media-pair group inconsistencies, with limited group context outside this page; they do not verify playback sync.

Inputs: clip_limit, track_type, clip_offset, end_seconds, +4 more. Returns: ok, data, tool, error, +2 more

get_advanced_feature_supportGet Advanced Feature SupportB
Read-onlyIdempotent

Report public-API support, prerequisites, entitlements, and user-assisted boundaries for Premiere collaboration and AI features

Inputs: backend, frameio_entitled, premiere_version, network_available, +3 more. Returns: ok, data, tool, error, +2 more

get_all_project_pathsGet All Project PathsA
Read-onlyIdempotent

Get all unique media file paths used in the project. Useful for asset management and archiving.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_av_feature_supportGet Av Feature SupportC
Read-onlyIdempotent

Report the documented automation boundary for advanced audio and modern color management, including actionable reasons for UI-only features.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_bin_contentsGet Bin ContentsA
Read-onlyIdempotent

Get detailed contents of a specific bin (folder) including all nested items, media paths, offline status, color labels, and metadata. Searches by bin name or node ID.

Inputs: bin_id (required), limit, offset, max_depth, +3 more. Returns: ok, data, tool, error, +2 more

get_bridge_telemetryGet Bridge TelemetryA
Read-onlyIdempotent

Read-only, sends no command: inspect privacy-preserving aggregate bridge health (pending command/response counts, busy operations, queue age, CEP heartbeat state) and diagnose whether the CEP bridge is blocked. Use it after a timeout or before retrying: a modal dialog such as Missing Media blocks Premiere's scripting engine, so a probe script cannot run. blocking.state is idle, busy, likely_blocked_by_dialog, stuck, connector_not_running, or unknown, with reason, ages in ms, queued counts, the running tool name when known, and nextSteps. It reads only heartbeat and busy-marker timing; no OS window probe is performed (macOS needs Accessibility permission and window titles can name media), and no dialog is dismissed. Returns no paths, file names, or script contents.

Inputs: expected_cep_target, expected_command_ms, expected_project_path. Returns: ok, data, tool, error, +2 more

get_capabilitiesGet CapabilitiesA
Read-onlyIdempotent

Discover Premiere operations and report backend coverage, authority, and verification requirements. Use tool_query with task keywords (for example transcript, captions, or review frames) for ranked, bounded matches available in this session. Use tool_names for exact lookups or tool_offset/tool_limit for paging. Discovery never grants authority or proves a live host is ready.

Inputs: tool_limit, tool_names, tool_query, tool_offset, +3 more. Returns: ok, data, tool, error, +2 more

get_caption_style_guidanceGet Caption Style GuidanceA
Read-onlyIdempotent

Read-only caption style guidance: a preset and/or custom_style turned into Premiere 2024+ Properties-panel Track Style steps, plus keyword_highlight per-word steps, manual Upgrade Caption to Graphic steps, and render-verification routes. NEVER modifies captions: Premiere has no caption style, per-word, or upgrade API.

Inputs: preset, custom_style, keyword_highlight, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

get_clip_adjustment_layerGet Clip Adjustment LayerB
Read-onlyIdempotent

Check if a clip is an adjustment layer

Inputs: node_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_clip_at_playheadGet Clip At PlayheadB
Read-onlyIdempotent

Get all clips at the current playhead position across all tracks.

Inputs: track_type, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_clip_at_positionGet Clip At PositionB
Read-onlyIdempotent

Get the clip at a specific time position on a track

Inputs: track_type (required), track_index (required), time_seconds (required), expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

get_clip_markersGet Clip MarkersA
Read-onlyIdempotent

Get all markers on a specific project item (source clip markers, not sequence markers).

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_clip_propertiesGet Clip PropertiesC
Read-onlyIdempotent

Get detailed properties of a specific clip by its node ID

Inputs: node_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_clip_speedGet Clip SpeedA
Read-onlyIdempotent

Get the playback speed and reverse state of a clip

Inputs: node_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_clip_volumeGet Clip VolumeA
Read-onlyIdempotent

Read an audio clip's Volume > Level in dB. Use this to verify a level actually applied - setValue() clamps silently. Does not report Essential Sound Amplify automation.

Inputs: node_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_color_labelGet Color LabelB
Read-onlyIdempotent

Get the color label of a project item

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_color_spaceGet Color SpaceB
Read-onlyIdempotent

Get the color space information for a project item

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_duplicate_mediaGet Duplicate MediaA
Read-onlyIdempotent

Find project items that reference the same source media file. Useful for consolidation. After Effects compositions imported from the same .aep/.aepx are only grouped when their comp names also match. Groups are paged (default 100) and can be filtered by a case-insensitive item-name substring; follow nextOffset while truncated is true.

Inputs: limit, offset, contains, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

get_effect_propertiesGet Effect PropertiesA
Read-onlyIdempotent

List all properties of a specific effect on a clip, including current values. Values are what Premiere's scripting API returns, not necessarily the units shown in Effect Controls. Effects on audio clips (anything other than the built-in Volume, Channel Volume, Panner and Balance) usually use normalized 0-1 values. Each numeric property reports valueScale (normalized_0_1 or host_raw_unknown), parameterScale summarises the values seen (normalized_0_1, host_raw_unknown, mixed or unknown), and the result carries a warning, because Adobe does not document the mapping to Hz, dB or ms. Calibrate audio effect changes by rendering. Volume > Level also reports displayValue in dB.

Inputs: node_id (required), effect_name (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_encoder_presetsGet Encoder PresetsA
Read-onlyIdempotent

List available Adobe Media Encoder export presets, with the .epr path of each so it can be passed to export_sequence or encode_project_item. Presets are discovered by scanning the .epr files Adobe ships on disk (Premiere's ExtendScript API exposes no preset enumeration).

Inputs: limit, format, offset, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

get_export_file_extensionGet Export File ExtensionA
Read-onlyIdempotent

Get the export file extension from Premiere. If Premiere returns none, infer it only for an existing .epr whose real filesystem parent is a recognized Adobe Media Encoder format folder; report that resolved preset path. This fallback is unconfirmed and should be checked before delivery.

Inputs: preset_path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_export_job_statusGet Export Job StatusA
Read-onlyIdempotent

Read the status of an export job started by export_sequence_job_start: queued, encoding (with AME-reported progress when events arrive), finalizing, completed, failed, cancelled, or unknown. Evidence is reported separately: Adobe Media Encoder job events recorded inside Premiere's ExtendScript engine, and Node-side observation of the output file (exists, non-empty, size and modification time unchanged across stability_window_ms and since the previous poll). completed is verified only when AME reported completion, the file is stable and non-empty, and ffprobe confirms its duration within one frame; without an AME completion event a stable file is reported as completed but unverified. Jobs started by an earlier server process report unknown (server_restarted). Read-only: it never starts, cancels, or retries a render.

Inputs: job_id (required), idempotency_key, expected_cep_target, stability_window_ms, +1 more. Returns: ok, data, tool, error, +2 more

get_footage_interpretationGet Footage InterpretationC
Read-onlyIdempotent

Get footage interpretation settings for a project item

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_full_clip_infoGet Full Clip InfoA
Read-onlyIdempotent

Get exhaustive information about a specific clip: all effects with every property value, source media details, footage interpretation, metadata, markers, speed, enabled state, color label, linked clips, and proxy status.

Inputs: node_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_full_project_overviewGet Full Project OverviewA
Read-onlyIdempotent

Get a comprehensive overview of the project. Use include_bin_tree false or sequence_offset/sequence_limit for a bounded response on large projects.

Inputs: max_bin_depth, sequence_limit, sequence_offset, include_bin_tree, +2 more. Returns: ok, data, tool, error, +2 more

get_full_sequence_infoGet Full Sequence InfoA
Read-onlyIdempotent

Get bounded information about a sequence (50 clips by default; follow pagination.nextOffset; markers and transitions capped at 50 per collection): settings, all tracks with lock/mute/target state, paged clips with positions/effects/speed/enabled state, bounded markers, transitions, in/out points, and work area. Bounded source-alignment diagnostics include separate picture/sound offsets and media-pair group inconsistencies, with limited group context outside this page; they do not verify playback sync.

Inputs: clip_limit, track_type, clip_offset, end_seconds, +5 more. Returns: ok, data, tool, error, +2 more

get_graphics_white_luminanceGet Graphics White LuminanceC
Read-onlyIdempotent

Get the graphics white luminance value (HDR setting) for the project

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_insertion_binGet Insertion BinA
Read-onlyIdempotent

Get the current target bin for new imports (the bin that is currently focused in the Project panel)

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_item_infoGet Item InfoB
Read-onlyIdempotent

Get detailed type info about a project item (is it a sequence, multicam, merged clip, etc.)

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_keyframesGet KeyframesA
Read-onlyIdempotent

Get all keyframes for a specific effect property on a clip. Each key's time is in seconds from the clip's start; mediaSeconds is Premiere's stored media time. mediaTicks returns each native key time as a tick string.

Inputs: node_id (required), effect_name (required), property_name (required), property_index, +2 more. Returns: ok, data, tool, error, +2 more

get_last_operationsGet Last OperationsA
Read-onlyIdempotent

Read-only: list the most recent state-changing tool calls this MCP server process handled, newest first, with status (running, succeeded, failed), receipt outcome and timing. Use it after a client-side timeout before retrying an edit: a call still running, or one that already succeeded, must not be sent again. The running count includes all active calls, even outside the history window; runningOperations lists up to limit active calls and runningOperationsTruncated flags omitted entries. Entries made with idempotency_key carry idempotencyKeyHash, a 12-character SHA-256 prefix (never the raw key). Records only tool names, timing and outcomes; it does not prove Premiere state, and it starts empty when the server restarts.

Inputs: limit, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_linked_itemsGet Linked ItemsB
Read-onlyIdempotent

Get all clips in the sequence that are linked to the same source as a given clip

Inputs: node_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_metadataGet MetadataA
Read-onlyIdempotent

Get metadata for a project item. Returns bounded parsed fields by default; GPS, serials, and personal contact/author fields are omitted. Raw packets require explicit include_project_metadata/include_xmp_metadata and include_sensitive true. Media paths require include_media_path true. Project metadata XML and file/clip XMP are separate packets; disable either when identity/path is enough. Prefer inspect_project_panel_metadata_uxp item_columns or manage_metadata_uxp inspect_fields for visible columns. This is not the premiere://project/metadata resource. GPS and serials are omitted from parse_fields unless include_sensitive is true.

Inputs: item_id (required), parse_fields, include_sensitive, include_media_path, +4 more. Returns: ok, data, tool, error, +2 more

get_mogrt_componentGet Mogrt ComponentA
Read-onlyIdempotent

Get MOGRT (Motion Graphics Template) component parameters from a clip. Each parameter includes textValue (visible text extracted from textEditValue when present). Pass expected_values to audit text controls such as Headline; the result flags verified, mismatch, or missing_property per field. Reads the stored property, not the Essential Graphics panel display, which Premiere can show stale (host UI behavior this tool cannot refresh).

Inputs: node_id (required), expected_values, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_next_edit_pointGet Next Edit PointB
Read-onlyIdempotent

Find the next or previous edit point (clip boundary) from the playhead position.

Inputs: direction, track_type, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_offline_mediaGet Offline MediaA
Read-onlyIdempotent

Find all offline/missing media in the project with their expected file paths. Essential for diagnosing broken links.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_operation_performanceGet Operation PerformanceC
Read-onlyIdempotent

Read content-free local median/p95 stage timing, payload sizes, and bounded analysis cache occupancy. Missing measurements remain unknown.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_playhead_positionGet Playhead PositionA
Read-onlyIdempotent

Get the current playhead (CTI) position in the active sequence

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_premiere_stateGet Premiere StateA
Read-onlyIdempotent

Get a comprehensive snapshot of the current Premiere Pro state: project info, active sequence, playhead position, selected clips, and available sequences. The best first call to understand the current context.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_project_infoGet Project InfoC
Read-onlyIdempotent

Get information about the currently open Premiere Pro project

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_project_item_infoGet Project Item InfoB
Read-onlyIdempotent

Get detailed information about a project item (media file in the project panel): media path, resolution, duration, frame rate, codec info, metadata, color label, offline status, in/out points, and proxy status.

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_project_panel_metadataGet Project Panel MetadataA
Read-onlyIdempotent

Get the current Project-panel column layout as XML. This is schema/layout configuration, not per-item Scene/Shot/Take values; use inspect_project_panel_metadata_uxp item_columns or get_metadata for those. Output is capped by max_chars (default 20000); when truncated is true the XML is incomplete and must not be passed to set_project_panel_metadata.

Inputs: max_chars, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_project_scratch_disksGet Project Scratch DisksA
Read-onlyIdempotent

Get the project's scratch disk locations (captured media, previews, auto-save, Motion Graphics template media, and more). Premiere's scripting API has no scratch-disk getter, so the settings are read from the saved .prproj file; unsaved changes are not reflected. 'SameAsProject' resolves to the project's folder.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_qe_clip_infoGet Qe Clip InfoA
Read-onlyIdempotent

Get QE DOM information about a clip, including properties not available through the standard API.

Inputs: clip_index (required), track_type (required), track_index (required), expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

get_render_queue_statusGet Render Queue StatusA
Read-onlyIdempotent

Report the Adobe Media Encoder queue running state, or fail closed with a named capability error when this Premiere build exposes no queue-status method on app.encoder.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_selected_clipsGet Selected ClipsB
Read-onlyIdempotent

Get the currently selected clips in the active sequence

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_sequence_countGet Sequence CountB
Read-onlyIdempotent

Get the total number of sequences in the project.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_sequence_in_out_pointsGet Sequence In Out PointsC
Read-onlyIdempotent

Get the current sequence in and out points

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_sequence_markers_by_typeGet Sequence Markers By TypeB
Read-onlyIdempotent

Get all markers of a specific type (comment, chapter, web link, etc.) from a sequence.

Inputs: marker_type (required), sequence_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_sequence_settingsGet Sequence SettingsB
Read-onlyIdempotent

Get the settings (resolution, frame rate, etc.) of a sequence

Inputs: sequence_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_sequence_structureGet Sequence StructureA
Read-onlyIdempotent

Get a bounded structural page of the active sequence (50 clips by default; follow pagination.nextOffset): all track counts, paged clips with positions, gaps, and clip metadata. Essential for understanding timeline state before making edits. Bounded source-alignment diagnostics include separate picture/sound offsets and media-pair group inconsistencies, with limited group context outside this page; they do not verify playback sync.

Inputs: clip_limit, track_type, clip_offset, end_seconds, +5 more. Returns: ok, data, tool, error, +2 more

get_source_monitor_infoGet Source Monitor InfoA
Read-onlyIdempotent

Get information about the clip currently loaded in the Source Monitor.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_source_monitor_positionGet Source Monitor PositionA
Read-onlyIdempotent

Get the current time indicator position in the Source Monitor

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_target_tracksGet Target TracksA
Read-onlyIdempotent

Get which tracks are currently targeted for editing. Premiere allows several video or audio tracks to be targeted at the same time; every targeted track is listed. Tracks whose state cannot be read are listed under unreadable.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_timeline_gapsGet Timeline GapsA
Read-onlyIdempotent

Find a bounded page of gaps (50 by default; follow pagination.nextOffset) on the timeline between clips. Useful for identifying where content is missing or where clips can be tightened.

Inputs: clip_limit, track_type, clip_offset, end_seconds, +6 more. Returns: ok, data, tool, error, +2 more

get_timeline_summaryGet Timeline SummaryA
Read-onlyIdempotent

Get a human-readable summary of the timeline: total duration, clip count per track, total gaps, coverage percentage, used media files, effect usage, and marker overview. Great for a quick understanding of sequence state.

Inputs: sequence_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_total_clip_countGet Total Clip CountB
Read-onlyIdempotent

Get the total number of clips across all tracks in the active sequence.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_track_infoGet Track InfoB
Read-onlyIdempotent

Get detailed information about a specific track: name, clip count, muted, locked, targeted, and list of all clips.

Inputs: track_type (required), track_index (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_unused_mediaGet Unused MediaA
Read-onlyIdempotent

Find project items that are NOT used in any sequence. Useful for cleaning up projects. Results are paged (default 100 items) and can be filtered by a case-insensitive name substring; follow nextOffset while truncated is true.

Inputs: limit, offset, contains, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

get_used_media_reportGet Used Media ReportA
Read-onlyIdempotent

Get a report of all media files used in a sequence: which source files are used, how many times each appears, on which tracks, and whether any sources are offline.

Inputs: sequence_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_value_at_timeGet Value At TimeA
Read-onlyIdempotent

Get the interpolated value of an effect property at a time, in seconds from the clip's start

Inputs: node_id (required), effect_name (required), time_seconds (required), property_name (required), +3 more. Returns: ok, data, tool, error, +2 more

get_version_infoGet Version InfoB
Read-onlyIdempotent

Get Premiere Pro version and build information.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_work_areaGet Work AreaB
Read-onlyIdempotent

Get the current work area in and out points

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_workspacesGet WorkspacesA
Read-onlyIdempotent

List all available workspace layouts in Premiere Pro

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

get_xmp_metadataGet Xmp MetadataA
Read-onlyIdempotent

Inspect bounded file/clip XMP fields with GPS, serials, author and contact data omitted by default. Raw XMP requires include_raw and include_sensitive true; it can disclose personal data to the connected client. Distinct from Premiere-private project metadata.

Inputs: item_id (required), include_raw, include_sensitive, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

has_proxyHas ProxyC

Check if a project item has a proxy attached

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

import_ae_compsImport Ae CompsA

Import After Effects compositions from an .aep file as Dynamic Link clips, failing closed when the file does not exist or when the target bin gains no items. Returns each new item's nodeId and name for placement (add_to_timeline, replace_clip). With comp_names the result is verified only when every requested composition is read back by name and source .aep. Importing all comps verifies the target-bin item-count increase only, because the expected set is unknown; its items list is informational and is omitted when the bin's items cannot be read.

Inputs: ae_project_path (required), comp_names, target_bin, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

import_edlImport EdlA

Unavailable by design: CMX 3600 EDL import opens Premiere UI that can block the CEP bridge. No import is attempted; convert the EDL to FCP7 XML and use import_fcp_xml for unattended interchange.

Inputs: file_path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

import_fcp_xmlImport Fcp XmlA

Import a Final Cut Pro XML file. Default mode new_project opens it as a new Premiere project: app.openFCPXML(path, projPath) requires a destination project path, and verified is true only when that destination exists as a file and Premiere has that exact path open. Mode into_open_project instead imports the XML into the currently open project with project.importFiles and succeeds only when the sequence count grew; the XML also brings its own clips, which can duplicate existing items, or Premiere can link them to existing items that point at the same media. That mode reports reusedItems (pre-existing project items and their bins that the new sequences use), so a later bin cleanup does not silently empty the new timelines.

Inputs: path (required), mode, target_bin, project_path, +3 more. Returns: ok, data, tool, error, +2 more

import_folderImport FolderA

Import the media files directly inside a folder and read the destination tree back. Refuses an unreadable baseline before importing. Reports observed new media items; unreadable or unmatched imports are committed_unverified. Host errors retain partial-change diagnostics; inspect the destination before retrying.

Inputs: folder_path (required), target_bin, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

import_image_sequenceImport Image SequenceC

Import a numbered image sequence as a single video clip.

Inputs: first_file_path (required), target_bin, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

import_mediaImport MediaB

Import media files into the project and confirm a new project item for each file

Inputs: file_paths (required), target_bin, suppress_ui, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

import_mogrtImport MogrtA

Import a Motion Graphics Template (.mogrt) file and add it to the timeline. Pass text_values (for example { "Headline": "..." }) to write each text control explicitly after insertion and verify it by readback, so a template default or stale value is never left in place silently. Placement fields contain observed start/end/track values; requested values are separate, and unreadable geometry remains committed_unverified.

Inputs: mogrt_path (required), text_values, track_index, start_seconds, +4 more. Returns: ok, data, tool, error, +2 more

import_mogrt_from_libraryImport Mogrt From LibraryA

Request importing a MOGRT from a named Adobe Creative Cloud Library. Library contents cannot be enumerated through CEP; host acceptance is committed_unverified, and rendered appearance must be checked in Premiere.

Inputs: mogrt_name (required), library_name (required), track_index, start_seconds, +3 more. Returns: ok, data, tool, error, +2 more

import_sequencesImport SequencesC

Import sequences from another Premiere Pro project file

Inputs: project_path (required), sequence_ids (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

insert_from_sourceInsert From SourceA

Insert the clip from the Source Monitor at the playhead (insert edit). Experimental: a target clip spanning the playhead is QE-razored before insertion to attempt to preserve its split tail. By default the tool also razors and shifts every QE sync-locked track, then reads the placement and target tails back; a displaced tail is reported as committed_unverified. Pass scope 'target_tracks' to ripple only the named pair (this will desync other tracks).

Inputs: scope, idempotency_key, audio_track_index, video_track_index, +2 more. Returns: ok, data, tool, error, +2 more

inspect_after_effects_render_templatesInspect After Effects Render TemplatesA
Idempotent

Read available render and output-module template names from the first existing After Effects render-queue item. After Effects only exposes templates through a queue item, so on an empty queue pass allow_temporary_queue_item: true to add one composition to the queue, read the names and remove it again (requires edit; the queue length is read back unchanged). It never renders.

Inputs: idempotency_key, composition_name, expected_cep_target, expected_project_path, +1 more. Returns: ok, data, tool, error, +2 more

inspect_after_effects_template_sourceInspect After Effects Template SourceA
Read-onlyIdempotent

Inspect a saved After Effects source composition for MOGRT-relevant dimensions, duration, text fonts, layer-source kinds, and Essential Graphics controller names when the host exposes the AE 16.1+ readback API. It never creates a composition or returns asset paths.

Inputs: composition_name, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_cmx3600_edlInspect Cmx3600 EdlA
Read-onlyIdempotent

Parse a local CMX 3600 EDL into bounded event, reel, track, transition, and timecode facts without importing it into Premiere.

Inputs: path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_dom_objectInspect Dom ObjectA
Read-onlyIdempotent

Inspect a Premiere Pro DOM object and list its properties, methods, and values. Useful for exploring the API and debugging. object_path must be a property path starting with app or qe (identifiers and numeric indexes only). Function calls, operators, and statements are rejected; use evaluate_expression with unsafe-script for those.

Examples:

  • "app.project" → project properties

  • "app.project.activeSequence" → sequence properties

  • "app.project.activeSequence.videoTracks[0].clips[0]" → first clip on V1

  • "app.project.activeSequence.videoTracks[0].clips[0].components[0]" → first component of a clip

Inputs: object_path (required), max_depth, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_edit_readinessInspect Edit ReadinessA
Read-onlyIdempotent

Audit the active sequence in one read-only bridge request for empty timelines, primary-track gaps, disabled clips, muted tracks, and excessive Motion scale. Structural diagnostics only; it cannot judge story, framing, sound, or final delivery.

Inputs: expected_cep_target, primary_video_track, expected_project_path, gap_tolerance_seconds, +1 more. Returns: ok, data, tool, error, +2 more

inspect_fcpxml_interchangeInspect Fcpxml InterchangeA
Read-onlyIdempotent

Inspect a local FCPXML or FCP7 XML (xmeml, what Premiere's export_as_fcp_xml writes) document: format, version, sequence/clip counts, bounded media declarations, and text-only parser warnings, before deliberate Premiere import.

Inputs: path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_film_editorial_workflowInspect Film Editorial WorkflowA
Read-onlyIdempotent

Validate a revision-bound film editorial manifest against captured source and timeline identities. Build complete declared coverage review groups, independent picture/audio preferences, screening-note exceptions, story dependencies, VFX state, change impact and a department turnover manifest. Local inspection only: no host edits, exports, automatic creative decisions or verified host claims.

Inputs: vfx (required), notes (required), scenes (required), profile (required), +15 more. Returns: ok, data, tool, error, +2 more

inspect_interchange_artifactInspect Interchange ArtifactA
Read-onlyIdempotent

Read caller-selected artifact bytes, hash them and identify actual OTIO/FCP7 xmeml/FCPXML/EDL structure. AAF/OMF are bounded opaque-byte evidence only. File existence, parsed structure, round-trip and licensed-host/destination evidence remain distinct.

Inputs: path (required), format, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

inspect_interchange_loss_reportInspect Interchange Loss ReportA
Read-onlyIdempotent

Build per-feature inspected/approximated/dropped/unknown loss evidence for OTIO, FCP7 XML, FCPXML, CMX EDL, AAF or OMF. Optional artifact inspection identifies its actual root. Source inventory is caller evidence; this never infers destination acceptance from exporter success.

Inputs: format (required), path, idempotency_key, source_features, +2 more. Returns: ok, data, tool, error, +2 more

inspect_media_streamsInspect Media StreamsA
Read-onlyIdempotent

Inspect a local media file with ffprobe and return container, stream, codec, time-base, channel, and chapter metadata. Read-only and independent of Premiere.

Inputs: media_path (required), use_cache, idempotency_key, analysis_revision, +2 more. Returns: ok, data, tool, error, +2 more

inspect_mogrt_libraryInspect Mogrt LibraryA
Read-onlyIdempotent

List bounded top-level template names and version directories in an existing workspace-contained local MOGRT library. It never reads MOGRT contents or changes the library.

Inputs: library_directory (required), approved_workspace_path (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

inspect_operation_recoveryInspect Operation RecoveryA
Read-onlyIdempotent

Inspect unknown execution outcomes and a bounded current host-state revision. Inspection remains available while dependent mutations are blocked. No edit is replayed.

Inputs: backend (required), include_snapshot, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_otio_interchangeInspect Otio InterchangeA
Read-onlyIdempotent

Parse a bounded local OTIO Timeline.1 into exact-tick offline tracks/clips/gaps/transitions. Reports missing media, opaque nests/effects/metadata and unsupported timing. Synthetic IDs never authorize Premiere writes; this tool never imports a project.

Inputs: path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_project_item_av_metadataInspect Project Item Av MetadataB
Read-onlyIdempotent

Inspect a project item's documented effective/original color space, LUT IDs, available color-space overrides, and audio channel shape.

Inputs: item_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_project_recoveryInspect Project RecoveryA
Read-onlyIdempotent

Read-only recovery inspection: diagnose the active project path and list adjacent Premiere Auto-Save project candidates without opening, copying, or restoring anything.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_rendered_video_scopesInspect Rendered Video ScopesA
Read-onlyIdempotent

Sample a caller-owned exported video using existing decoded RGB scopes and declare range/transfer/primaries evidence. Refuses HDR legal-range claims from an 8-bit RGB proxy; does not prove Premiere render lineage.

Inputs: output_path (required), color_range, time_seconds, color_transfer, +4 more. Returns: ok, data, tool, error, +2 more

inspect_sequence_av_settingsInspect Sequence Av SettingsA
Read-onlyIdempotent

Inspect documented audio, tone-mapping, linear-compositing, bit-depth, render-quality, and display settings for the active sequence.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_sequence_review_reportInspect Sequence Review ReportA
Read-onlyIdempotent

Build one read-only sequence handoff report with timeline structure, primary-track gaps, disabled clips, muted tracks, marker timing, and offline-source evidence. Media paths are never returned; marker comments require an explicit opt-in. It does not prove rendered pixels, audio quality, caption correctness, rights, or editorial approval.

Inputs: max_markers, sequence_id, expected_cep_target, primary_video_track, +2 more. Returns: ok, data, tool, error, +2 more

inspect_stabilizer_statusInspect Stabilizer StatusA
Read-onlyIdempotent

Read Warp Stabilizer presence, exposed status properties, and conservative analysis state for one clip or every video clip in the active sequence. Read-only: unknown or localized host values remain unknown rather than being reported as solved.

Inputs: node_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_timeline_snapshotInspect Timeline SnapshotA

Inspect one exact CEP sequence into version1 canonical snapshot preserving raw tick strings, source/link identities, bounded clips and explicit unknown fields. Track targeted/muted come from the documented track DOM; sync_locked comes from the experimental QE DOM only when this is the active sequence and stays null otherwise. Host missing lock/effect/transition/marker state remains incomplete; this inspection never implies atomic host state. Re-query from zero after change or truncation. With output_path inside an approved private workspace the snapshot is written to a .json file (sha256 reported); its parent must satisfy bridge ownership/ancestor protections (0700 on POSIX), and failures can leave an empty reservation and return_content:false keeps the clips out of the reply.

Inputs: sequence_id (required), max_clips, output_path, return_content, +5 more. Returns: ok, data, tool, error, +2 more

inspect_workflow_checkpointInspect Workflow CheckpointA
Read-onlyIdempotent

Read one private saved workflow checkpoint after restart. Unsupported versions reject; pending and unknown operations require reconciliation. Loading never dispatches mutations or restores projects.

Inputs: checkpoint_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

inspect_workflow_jobInspect Workflow JobA
Read-onlyIdempotent

Inspect exact local or UXP job identity. Host terminal events do not verify an output artifact; an absent job is unknown, never completed.

Inputs: job_id (required), origin (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

invert_selectionInvert SelectionB

Invert the current clip selection in the active sequence (selected become deselected and vice versa).

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

is_work_area_enabledIs Work Area EnabledB

Check whether the work area bar is enabled on the active sequence

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

lift_selectionLift SelectionA

EXPERIMENTAL (undocumented QE DOM: the sequence lift command, exposed as left() on 25.2). Lift (remove without closing the gap) the content between the sequence in/out points on every targeted, unlocked track, then verify the range is empty on those tracks and nothing else on them moved. Marks that Premiere stored just off a frame are first re-written on that exact frame through QE (marksRewritten). Requires sequence in/out marks that do not span the whole sequence. Untargeted tracks are not verified; any that changed are listed in otherTracksChanged.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_available_audio_effectsList Available Audio EffectsB
Read-onlyIdempotent

List all available audio effects in Premiere Pro. Uses QE DOM.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_available_audio_transitionsList Available Audio TransitionsA
Read-onlyIdempotent

EXPERIMENTAL (undocumented QE DOM): List audio transitions. Reports an unavailable or empty legacy catalog as an error rather than an assumed usable list.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_available_effectsList Available EffectsA
Read-onlyIdempotent

List available video effects in Premiere Pro. Uses the full QE catalog when exposed; otherwise returns a verified, explicitly partial set of common effects resolved by exact name.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_available_transitionsList Available TransitionsA
Read-onlyIdempotent

EXPERIMENTAL (undocumented QE DOM): List video transitions. Returns a built-in hint set on PPro 2026 where the registry list is empty even though by-name lookup works; the hint set is not exhaustive.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_clip_effectsList Clip EffectsA
Read-onlyIdempotent

List effects/components exposed by the clip's standard DOM collection, with properties and current values. Some hosts omit QE-applied effects from this collection; absence here does not prove an effect is absent. get_effect_properties uses the same collection. Inspect Premiere's Effect Controls UI when complete QE effect presence must be confirmed.

Inputs: node_id (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_extensionsList ExtensionsA
Read-onlyIdempotent

List the CEP extension panels installed in Premiere Pro (id, name, window type, and the isActive flag CEP reports). isActive does not show whether a panel is open: in Premiere 26.3 it stayed false for open panels. Use an id with open_extension. CEP connector only.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_markersList MarkersA
Read-onlyIdempotent

List markers on the active sequence, or on a source project item that exposes a marker collection, including marker GUID and color when readable. A timeline-clip node_id returns a clean error instead of a raw TypeError.

Inputs: node_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_project_itemsList Project ItemsB
Read-onlyIdempotent

List all items in the project panel (clips, bins, sequences)

Inputs: bin_path, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_sequence_checkpointsList Sequence CheckpointsA
Read-onlyIdempotent

List '[checkpoint]' sequences created by create_sequence_checkpoint, optionally only those cloned from one sequence, with their labels, timestamps, track and clip counts. Read-only.

Inputs: sequence_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_sequencesList SequencesC
Read-onlyIdempotent

List all sequences in the project

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_sequence_tracksList Sequence TracksB
Read-onlyIdempotent

List all tracks (video and audio) in a sequence

Inputs: sequence_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

list_stock_titlesList Stock TitlesA
Read-onlyIdempotent

List the Essential Graphics title templates that ship with the installed Premiere Pro (Basic Title, Lower Thirds, Credits, Social Media, and more), with each template's text fields in order and their default text. Reads the local .mogrt files only; does not contact Premiere. Use the names with add_title.

Inputs: category, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

lock_trackLock TrackB

Set a video track's lock state and read it back to verify the change.

Inputs: locked (required), track_index (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

manage_media_watchManage Media WatchA
Destructive

Start, inspect, rescan, or stop one session-scoped local media-folder monitor. It records bounded file-change signals and never imports media automatically.

Inputs: action (required), recursive, watch_path, target_bin_id, +5 more. Returns: ok, data, tool, error, +2 more

manage_project_contextManage Project ContextA
Destructive

Capture, enrich, import revision-bound editorial evidence, inspect, or clear a durable local Premiere project-context index. Capture stores bounded active-sequence/source metadata; local enrichment and evidence import add caller-approved transcripts, speaker labels, shots, audio observations, notes, or opaque frame references without re-analyzing media. Never include secrets or unrelated customer data.

Inputs: action (required), records, replace, evidence, +4 more. Returns: ok, data, tool, error, +2 more

manage_proxiesManage ProxiesA
Destructive

Create or attach proxies for a project item, or set Premiere's proxy display. 'toggle' is application-wide, not per item: it changes app.getEnableProxies()/setEnableProxies() for every sequence and monitor, and item_id is only checked to exist. Pass enabled: true or false to set a known state; omitting enabled flips the current state, so two calls undo each other. The result reports previousEnabled and proxiesEnabled read back from Premiere. Note: 'create' only requests a proxy encode from Adobe Media Encoder and returns an unverified handoff. Independently verify the AME queue or output file before calling this tool again with action 'attach' and proxy_path set to the output_path you passed here. Optional start_batch requests processing of every ready AME queue job, including unrelated jobs. There is no single-call create-and-attach in Premiere's ExtendScript API.

Inputs: action (required), item_id (required), enabled, proxy_path, +6 more. Returns: ok, data, tool, error, +2 more

map_keyframe_time_domainMap Keyframe Time DomainA
Read-onlyIdempotent

Translate source, clip-relative and sequence ticks from an inspected snapshot. Warns outside visible range; refuses nested, reverse or retimed clips until a measured mapping exists. No keyframe write or rendering claim.

Inputs: domain (required), clip_id (required), snapshot (required), time_ticks (required), +2 more. Returns: ok, data, tool, error, +2 more

map_source_ranges_to_timelineMap Source Ranges To TimelineB

Read-only mapping from source-media time ranges to placements on one sequence track. Reads the selected track once, maps only normal-speed forward clips, reports source portions not present on the track as unplaced, and returns bounded pages. This inspects timeline placement; it does not prove rendered or audible content.

Inputs: ranges (required), track_type (required), track_index (required), media_path, +6 more. Returns: ok, data, tool, error, +2 more

map_word_timeline_occurrencesMap Word Timeline OccurrencesA
Read-onlyIdempotent

Map revision-bound transcript words to every forward1x source placement, with occurrence IDs and exact snapshot placement ticks. Refuses missing pages, nonlinear retiming, reverse and ambiguous nests.

Inputs: snapshot (required), word_timeline (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

match_frameMatch FrameC

Get source media info for the frame at the current playhead on a specific track. Useful for match frame operations.

Inputs: track_type, track_index, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

move_clipMove ClipA

Refuses attached transitions or unreadable transition collections before structural edits; inspect transitionsAffected and use remove_transition first. EXPERIMENTAL (undocumented QE DOM for track changes): Move a clip to a new position on the timeline; optional track moves use Premiere's QE API and may not work on every version.

Inputs: node_id (required), new_start_seconds (required), idempotency_key, new_track_index, +2 more. Returns: ok, data, tool, error, +2 more

move_clip_to_trackMove Clip To TrackA

Move a clip to a different track of the same type, keeping its start, duration, and source in/out. EXPERIMENTAL: uses the undocumented QE DOM moveToTrack. Refuses without changing anything when the origin or destination track is locked or the destination range is occupied. Reads the timeline back: verified only when the clip is on the destination track with the same span and source range and is gone from the origin track; committed_unverified when the source range cannot be read; otherwise failure with Undo guidance.

Inputs: node_id (required), target_track_index (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

move_items_to_binMove Items To BinB

Move multiple project items to a target bin at once.

Inputs: item_ids (required), target_bin (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

move_item_to_binMove Item To BinC

Move a project item to a different bin and confirm where it landed

Inputs: item_id (required), target_bin (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

move_playhead_to_editMove Playhead To EditC

Move the playhead to the next or previous edit point.

Inputs: direction, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

multiple_undoMultiple UndoA

EXPERIMENTAL (undocumented QE DOM: qe.project.undo / undoStackIndex). Undo several Premiere project actions through QE, checking each step against Premiere's undo-stack position (stackVerified; the timeline itself is not read back) and reporting how many were undone. Only actions Premiere records are undoable: QE edits such as razor, insert, lift and extract report undoSteps (and undoStackIndex) in their results; pass that undoSteps as count to reverse exactly that call. A marker receipt with undoTracked:false recorded no undo step: calling Undo for it would reverse an earlier action. Only CEP tool results carry undoSteps; UXP tools and workflows that send several commands are not counted. Always pass expected_undo_stack_index to check the stack position, but matching position alone does not prove which action is on top. Observed marker boundaries refuse the entire request before any step unless acknowledge_untracked_markers:true explicitly permits prior non-marker actions. The barrier persists through server/helper reloads while the CEP engine remains alive; it cannot account for marker writes before observation, after an engine reset, or through UXP, the manual UI, or other clients. Matching the QE index verifies stack position only.

Inputs: expected_undo_stack_index (required), count, batch_size, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

mute_trackMute TrackC

Mute or unmute an audio track

Inputs: muted (required), track_index (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

nest_clipsNest ClipsC

Unavailable on the legacy CEP backend: Premiere's documented createSubsequence API only creates a separate sequence and cannot safely replace the selected timeline clips with a nested-sequence reference.

Inputs: name (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

normalize_loudness_fileNormalize Loudness FileA

Create a new loudness-normalized media derivative with FFmpeg, then remeasure that exact output using EBU R128. When the remeasured file misses the target or true-peak ceiling (AAC encoding can raise the true peak), it renders again with a lowered ceiling or offset target, up to max_attempts, keeps the best attempt and reports every attempt's measured I and TP. Never overwrites the input or an existing output file.

Inputs: input_path (required), output_path (required), target_lufs, max_attempts, +5 more. Returns: ok, data, tool, error, +2 more

open_extensionOpen ExtensionA

Open an installed CEP extension panel in Premiere Pro by its extension id (see list_extensions). CEP has no panel-visibility getter, so success is committed_unverified: check the panel in Premiere. Another extension cannot be closed from here. CEP connector only.

Inputs: extension_id (required), params, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

open_in_sourceOpen In SourceA

Open a project item in the Source Monitor for preview and trimming, and confirm it is the clip now showing.

Inputs: item_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

open_projectOpen ProjectA

Open a Premiere Pro project file and make it the active project, verifying it is open. Other open projects stay open.

Inputs: path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

overwrite_clipOverwrite ClipA

Overwrite a project item onto validated timeline tracks and verify a new source placement at the requested time. Every video/audio stream the item actually has must land on the requested tracks; a picture-only or sound-only placement (for example 5.1 audio that does not fit a stereo track) is committed_unverified, not verified. Video-only and audio-only items overwrite only the receiving track, so Sequence.overwriteClip cannot smash V0 or A0 for the unused kind. When Premiere moves the source In to a sequence frame (an audio subclip cut between frames), the receipt reports sourceInShift and a note. slip_edit snaps to whole sequence frames, so it cannot correct a shift smaller than one frame.

Inputs: item_id (required), track_index, start_seconds, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

overwrite_from_sourceOverwrite From SourceA

Overwrite the clip from the Source Monitor at the playhead position (overwrite edit — replaces existing clips) and verify a new placement on the requested tracks. Every video/audio stream the Source Monitor item actually has must land on those tracks; a picture-only or sound-only placement is committed_unverified, not verified. Video-only and audio-only items overwrite only the receiving track, so Sequence.overwriteClip cannot smash V0 or A0 for the unused kind.

Inputs: idempotency_key, audio_track_index, video_track_index, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

paste_clip_attributesPaste Clip AttributesA

Paste Attributes for one timeline clip: copy the source clip's effect stack (Motion, Opacity, other intrinsic components, and every applied effect) onto a target clip of the same track type, including keyframes. Components are matched by match name and occurrence; a missing non-intrinsic effect is applied through the experimental legacy QE DOM (disable with apply_missing_effects=false). Every written parameter and keyframe value is read back and reported per property as verified, committed_unverified, or failed, with an overall status. Not copied, and listed in notCopied with a reason: parameters whose values ExtendScript cannot read as numbers, booleans, strings, or numeric arrays; Opacity > Blend Mode when it differs (legacy cross-clip enum writes can corrupt it; use set_blend_mode and verify); and keyframe interpolation (no getter exists, so pasted keys use Premiere's default interpolation). MASKS ARE NOT COPIED: neither ExtendScript, QE, nor documented Premiere UXP exposes mask shapes, paths, feather, expansion, or mask keyframes, and masks are invisible to this bridge, so recreate or paste masks manually in Effect Controls. Time Remapping is excluded unless named in components.

Inputs: source_node_id (required), target_node_id (required), components, copy_keyframes, +4 more. Returns: ok, data, tool, error, +2 more

pingPingA

Health check — verify the CEP plugin is running and connected to Premiere Pro. Call this before other tools to confirm connectivity.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

plan_active_speaker_reframePlan Active Speaker ReframeA
Read-onlyIdempotent

Plan an active-speaker vertical reframe (Motion Scale/Position keyframes that follow whoever is talking) or a static stacked/split layout from a word timeline and static speaker regions. Returns framings, switches, keyframes, and apply routes. Local-only; never changes Premiere.

Inputs: source_frame (required), word_timeline (required), speaker_regions (required), layout, +9 more. Returns: ok, data, tool, error, +2 more

plan_audio_post_turnoverPlan Audio Post TurnoverA
Read-onlyIdempotent

Preview a bounded AAF/OMF audio-post turnover contract: exact exclusive range, handles, rational rate, channels, requested gain automation, media hashes and reference picture. Routes to existing native exporters. Caller manifests and exporter settings are not DAW acceptance or audible-alignment proof.

Inputs: rate (required), media (required), range (required), format (required), +8 more. Returns: ok, data, tool, error, +2 more

plan_beat_montagePlan Beat MontageA
Read-onlyIdempotent

Plan a beat-synced montage: carve a detect_beats grid into shots every N beats (merging short and splitting long spans), assign clips in order, and emit add_to_timeline_batch chunks, trim ranges, and cut markers. Local-only and deterministic; never changes Premiere.

Inputs: clips (required), beat_seconds (required), order, frame_rate, +10 more. Returns: ok, data, tool, error, +2 more

plan_chapter_markersPlan Chapter MarkersA
Read-onlyIdempotent

Plan YouTube-style chapters from a word-timed transcript using local TextTiling-lite topic-shift detection, titling each chapter from its distinctive tokens. Returns chapters, a youtube_timestamps block and add_marker-ready Chapter markers. Local-only plan; never changes Premiere.

Inputs: word_timeline (required), frame_rate, stop_words, block_words, +5 more. Returns: ok, data, tool, error, +2 more

plan_client_notes_checklistPlan Client Notes ChecklistA
Read-onlyIdempotent

Turn pasted client or reviewer feedback into a prioritized checklist: finds timecodes and ranges, classifies each note (audio, color, graphics, text, timing, cut, legal, delivery), infers must/should/nice priority, separates approvals and questions, and emits an add_markers_batch payload. Local-only and deterministic; never changes Premiere.

Inputs: notes (required), max_items, frame_rate, timecode_style, +7 more. Returns: ok, data, tool, error, +2 more

plan_cross_app_workflowPlan Cross App WorkflowA
Read-onlyIdempotent

Plan an After Effects MOGRT or rendered-file handoff to Premiere using existing tools. Returns ordered dependencies, separate approvals, required evidence, and manual render stops. Local-only planning; never executes steps, issues approval tokens, or claims host readiness.

Inputs: workflow (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

plan_emphasis_zoom_keyframesPlan Emphasis Zoom KeyframesA
Read-onlyIdempotent

Plan CapCut-style punch-in zoom keyframes (Motion Scale + subject-anchored Position) from a word timeline or supplied trigger times, with cooldown, easing, and hold controls. Local-only and deterministic; returns a keyframe plan for automate_effect_parameters_uxp or add_keyframe and never changes Premiere.

Inputs: frame, trigger, alternate, max_zooms, +15 more. Returns: ok, data, tool, error, +2 more

plan_filler_word_removalPlan Filler Word RemovalA
Read-onlyIdempotent

Plan word-level filler removal (um, uh, you know...) from a revision-bound word timeline. Hesitation-sound removal requires a transcript that preserves disfluencies, such as Premiere transcription or verbatim ASR; Whisper's default output omits them. Returns frame-snapped removal and keep ranges plus apply routes. Local-only; never changes Premiere.

Inputs: word_timeline (required), frame_rate, filler_words, max_removals, +5 more. Returns: ok, data, tool, error, +2 more

plan_media_synchronizationPlan Media SynchronizationA
Read-onlyIdempotent

Plan synchronization locally from bounded normalized mono PCM correlation or caller-matched marker/timecode tick anchors. Returns confidence, ambiguous alternatives or silent/noise refusal. Placement offset application is separately reviewed.

Inputs: method (required), sample_rate, candidate_ticks, max_lag_samples, +5 more. Returns: ok, data, tool, error, +2 more

plan_multicam_angle_switchesPlan Multicam Angle SwitchesA
Read-onlyIdempotent

Plan active-speaker camera switching for stacked, synced camera tracks: from speaker segments and a camera-to-speaker map it produces an angle cut list with minimum holds, crosstalk cover shots, optional lead-in cuts and periodic cutaways, plus razor times, per-camera enable/disable ranges, and markers. Local-only and deterministic; never changes Premiere.

Inputs: cameras (required), speaker_segments (required), frame_rate, marker_color, +10 more. Returns: ok, data, tool, error, +2 more

plan_music_remixPlan Music RemixA
Read-onlyIdempotent

Plan deterministic music shortening from an approved measured beat grid, protected intro/outro and crossfade handles. Returns exact segments and nearest-beat error for audible review. No DSP render or native Premiere Remix control.

Inputs: plan (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

plan_pause_tighteningPlan Pause TighteningA
Read-onlyIdempotent

Plan shortening (not deleting) of inter-word pauses longer than max_pause_seconds down to a target, respecting sentence boundaries. Returns centered removal ranges, keep ranges, savings and apply routes. Local-only; never changes Premiere.

Inputs: word_timeline (required), max_edits, frame_rate, max_pause_seconds, +4 more. Returns: ok, data, tool, error, +2 more

plan_platform_delivery_matrixPlan Platform Delivery MatrixA
Read-onlyIdempotent

Plan multi-ratio delivery of one source sequence to TikTok, Reels, Shorts, YouTube, LinkedIn, X, and Facebook from a local spec table: sequence settings, reframe scale math, duration and file-size fit, caption safe zones, and ordered apply routes. Local-only; never changes Premiere.

Inputs: source (required), targets (required), strategy, export_preset_hint, +2 more. Returns: ok, data, tool, error, +2 more

plan_reaction_captionsPlan Reaction CaptionsA
Read-onlyIdempotent

Plan stacked, speaker-colored reaction captions from a word timeline and an explicit speaker palette. Flash-length words merge, overlaps stack, and unknown speakers stay uncolored. Local-only; never changes Premiere.

Inputs: word_timeline (required), speaker_palette (required), frame_rate, shot_changes, +8 more. Returns: ok, data, tool, error, +2 more

plan_scene_segmentsPlan Scene SegmentsA
Read-onlyIdempotent

Turn reviewed source scene candidates into exact nonoverlapping segments with bounded source handles, rejected-candidate report and existing marker/subclip/bin routes. Detection never edits source; linked audio is preserved in the plan.

Inputs: plan (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

plan_short_export_folderPlan Short Export FolderA
Read-onlyIdempotent

Plan a series-named export folder inside an approved Shorts root and remind the caller to create it when missing. Local-only; never writes files or changes Premiere.

Inputs: title (required), export_root (required), series_name (required), brand, +3 more. Returns: ok, data, tool, error, +2 more

plan_short_subscribe_ctaPlan Short Subscribe CtaA
Read-onlyIdempotent

Plan a brief subscribe overlay about two-thirds through a Short, after an optional hook, in a platform-safe lower-third. Local-only; never changes Premiere.

Inputs: duration_seconds (required), copy, brand, at_ratio, +6 more. Returns: ok, data, tool, error, +2 more

plan_shot_matchPlan Shot MatchB

Compare two bounded local-media frame samples and return measured waveform/parade/saturation deltas plus coarse correction directions. Read-only planning only; it does not grade Premiere or claim that primaries alone can match the shots.

Inputs: target_media_path (required), reference_media_path (required), idempotency_key, expected_cep_target, +3 more. Returns: ok, data, tool, error, +2 more

plan_silence_review_markersPlan Silence Review MarkersA
Read-onlyIdempotent

Create a bounded, non-mutating review plan that maps FFmpeg-detected source-media silences onto one known 1x timeline placement. It clips candidates to the supplied source in/out span, redacts the source path, and never adds markers, cuts clips, or changes Premiere.

Inputs: media_path (required), timeline_start_seconds (required), max_candidates, idempotency_key, +6 more. Returns: ok, data, tool, error, +2 more

plan_speaker_checkerboardPlan Speaker CheckerboardA
Read-onlyIdempotent

Plan a speaker checkerboard (each speaker's turns on their own video/audio track) from a caller-supplied word timeline. Returns frame-snapped segments, split points, track assignments, and the add_track/razor_all_tracks/move_clip_to_track routes. Local-only; never changes Premiere.

Inputs: word_timeline (required), frame_rate, handle_frames, speaker_order, +7 more. Returns: ok, data, tool, error, +2 more

plan_word_mute_rangesPlan Word Mute RangesA
Read-onlyIdempotent

Plan mute or bleep ranges for listed words/phrases in a word timeline. Returns redacted, frame-snapped mute ranges, ready-to-apply audio keyframes and (for bleep) tone placements. Local-only; never changes Premiere.

Inputs: words (required), word_timeline (required), mode, frame_rate, +4 more. Returns: ok, data, tool, error, +2 more

play_source_monitorPlay Source MonitorA

Request playback of the clip in the Source Monitor. Fails when no clip is loaded. The legacy API does not provide a same-call position readback, so movement is not reported as verified.

Inputs: speed, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

play_timelinePlay TimelineA

Request playback of the active sequence timeline through QE. The legacy API does not provide a same-call playhead readback, so movement is not reported as verified.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

predict_timeline_editPredict Timeline EditA
Read-onlyIdempotent

Predict exact affected clips for a conservative supported insert/overwrite/trim/split/move/remove/ripple/enable subset using complete canonical state. Refuses unknown locks, links, source handles and retiming. Local prediction does not execute Premiere or promise native edit semantics.

Inputs: snapshot (required), operations (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

prepare_transcript_workflowPrepare Transcript WorkflowA
Destructive

Inspect native UXP transcript readiness before optionally starting Speech-to-Text once per operation. Returns accepted/pending/ready/failed/unknown with revision, never transcript completion from start acceptance. No CEP fallback; Adobe privacy/service preferences apply to explicitly confirmed start.

Inputs: operation_id (required), project_item_id (required), language, wait_seconds, +6 more. Returns: ok, data, tool, error, +2 more

preview_after_effects_renderPreview After Effects RenderA
Read-onlyIdempotent

Preview a bounded queue-only After Effects render request for one named composition and existing workspace output directory. It does not contact Adobe, enqueue, or render.

Inputs: output_path (required), composition_name (required), output_module_template (required), approved_workspace_path (required… Returns: ok, data, tool, error, +2 more

preview_after_effects_render_handoffPreview After Effects Render HandoffA
Read-onlyIdempotent

Preview import of one completed After Effects single-file render into an existing Premiere bin. Reads both connected hosts and binds approval to file metadata and project/bin identity. Does not render, import, or edit a timeline.

Inputs: output_path (required), target_bin_id (required), ae_project_path (required), queue_item_index (required), +5 more. Returns: ok, data, tool, error, +2 more

preview_brand_spotPreview Brand SpotA
Read-onlyIdempotent

Preview a brand-spot assembly from existing project items with an optional workspace-contained MOGRT overlay. Preview is local-only; it does not read or import the MOGRT file.

Inputs: sequence_id (required), asset_item_ids (required), mogrt_path, motion_style, +10 more. Returns: ok, data, tool, error, +2 more

preview_editorial_planPreview Editorial PlanA
Read-onlyIdempotent

Revalidate an exact server-issued editorial plan against the saved project-context revisions and return an opaque confirmation token. This tool is read-only and cannot apply the plan.

Inputs: plan (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

preview_edit_planPreview Edit PlanA

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.

Inputs: plan (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

preview_extended_edit_planPreview Extended Edit PlanA
Read-onlyIdempotent

Refuses attached transitions or unreadable transition collections before structural edits; inspect transitionsAffected and use remove_transition first. Preview up to100 distinct bound CEP targets for supported trim, experimental QE split, same-track move, enable, scalar effect and keyframe steps. All targets and descriptor identities validate before token issuance; unsupported links/retiming/unknown source handles refuse. Requires exact saved project path and active sequence. No mutation or atomicity claim.

Inputs: plan (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

preview_facility_metadata_intakePreview Facility Metadata IntakeA
Read-onlyIdempotent

Read a bounded ALE table and preview explicit column-to-named-field mappings against reviewed source IDs/filenames. Reports duplicate table keys, ambiguous filenames, missing sources and unsupported fields. Never writes Premiere metadata or requires an XMP packet dump.

Inputs: path (required), sources (required), match_column (required), column_mapping (required), +3 more. Returns: ok, data, tool, error, +2 more

preview_mogrt_batchPreview Mogrt BatchA
Read-onlyIdempotent

Preview up to 20 bounded MOGRT recipe exports from a workspace-contained JSON or CSV data file. It does not contact Adobe or create any compositions or files.

Inputs: data_file_path (required), output_directory (required), approved_workspace_path (required), brand_kit, +3 more. Returns: ok, data, tool, error, +2 more

preview_mogrt_library_publishPreview Mogrt Library PublishA
Read-onlyIdempotent

Preview a no-overwrite publish of a validated MOGRT into a workspace-contained, versioned local library. The library root must already exist; no file or directory is created during preview.

Inputs: mogrt_path (required), template_name (required), library_directory (required), approved_workspace_path (required), +3 mor… Returns: ok, data, tool, error, +2 more

preview_mogrt_premiere_handoffPreview Mogrt Premiere HandoffA
Read-onlyIdempotent

Preview a contained MOGRT import into one explicitly named disposable Premiere verification sequence and empty video track. It does not contact Premiere or alter a sequence.

Inputs: mogrt_path (required), sequence_id (required), approved_workspace_path (required), disposable_sequence_name (required), +… Returns: ok, data, tool, error, +2 more

preview_mogrt_recipePreview Mogrt RecipeA
Read-onlyIdempotent

Preview a bounded After Effects MOGRT recipe from the supported title, callout, quote, social, and media-placeholder template library. It validates one existing workspace output directory but does not contact Adobe or write any files.

Inputs: headline (required), template_name (required), output_directory (required), approved_workspace_path (required), +14 more. Returns: ok, data, tool, error, +2 more

preview_motion_graphics_demoPreview Motion Graphics DemoA
Read-onlyIdempotent

Preview a contained motion-graphics demo assembly from existing project items. It never creates demo assets, imports files, creates a sequence, or changes Premiere; apply requires an exact confirmation token.

Inputs: sequence_id (required), asset_item_ids (required), transition_name, audio_track_index, +5 more. Returns: ok, data, tool, error, +2 more

preview_otio_snapshot_exportPreview Otio Snapshot ExportA
Read-onlyIdempotent

Serialize the declared bounded linear offline snapshot subset to OTIO, then parse it back and compare exact supported structure. Refuses unsupported nests/effect parameters/non-frame timing. Returns text for review; does not write files or establish Premiere/destination compatibility.

Inputs: snapshot (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

preview_product_spotPreview Product SpotA
Read-onlyIdempotent

Preview a product-spot assembly from existing project items. The eventual apply is limited to explicit empty tracks, revalidates item IDs, and reports host readback without claiming visual delivery verification.

Inputs: sequence_id (required), asset_item_ids (required), motion_style, transition_name, +6 more. Returns: ok, data, tool, error, +2 more

preview_project_intakePreview Project IntakeA
Read-onlyIdempotent

Inspect a bounded Premiere project against an explicit facility intake template and return a path-redacted report plus a non-mutating organization proposal. It never changes Premiere or persists the template.

Inputs: template (required), max_items, include_paths, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

preview_scene_review_workflowPreview Scene Review WorkflowA
Read-onlyIdempotent

Preview reviewed scene candidates against one exact CEP source and measured physical media duration. Binds project document/source path, explicit marker/subclip mode and destination bin name. No mutation; flashes/pans/fades remain in review evidence rather than automatic cuts.

Inputs: mode (required), bin_name (required), project_path (required), segmentation (required), +4 more. Returns: ok, data, tool, error, +2 more

preview_send_clip_to_after_effectsPreview Send Clip To After EffectsA
Read-onlyIdempotent

Preview sending one video timeline clip to After Effects, like Premiere's Replace with After Effects Composition. Reads the clip, its source media and the sequence, and the open saved AE project. Refuses speed-changed, reversed, offline or non-file clips. Lists effects and Motion/Opacity changes on the clip that the swap would not carry over. Changes nothing; returns a ten-minute token for apply_send_clip_to_after_effects.

Inputs: node_id (required), ae_project_path (required), approved_workspace_path (required), comp_name, +4 more. Returns: ok, data, tool, error, +2 more

preview_stacked_camera_editPreview Stacked Camera EditA
Read-onlyIdempotent

Preview exact enable states for pre-razored ordinary stacked camera clips and preserve master audio. Refuses unreviewed cuts, retiming/nests, missing lock/link state. Apply creates a duplicate sequence first; no native multicam switch API is claimed.

Inputs: cuts (required), snapshot (required), camera_track_ids (required), master_audio_track_ids (required), +2 more. Returns: ok, data, tool, error, +2 more

preview_watched_media_importPreview Watched Media ImportA
Read-onlyIdempotent

Compare the active watch baseline with a fresh contained scan and return a path-redacted import proposal. It never imports or changes Premiere.

Inputs: watch_id (required), include_paths, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

preview_workflow_recipePreview Workflow RecipeA
Read-onlyIdempotent

Validate and expand one declarative workflow recipe into guarded MCP routes. It does not invoke any route or change Premiere.

Inputs: recipe_id (required), recipe_file, idempotency_key, provided_inputs, +3 more. Returns: ok, data, tool, error, +2 more

publish_mogrt_to_libraryPublish Mogrt To LibraryA

Publish the exact previewed MOGRT as an immutable local-library version. Requires explicit confirmation and will fail instead of replacing an existing version.

Inputs: preview_token (required), confirm_publish (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

rank_short_form_candidatesRank Short Form CandidatesA
Read-onlyIdempotent

Rank long-video transcript windows as short-form clip candidates using explainable local heuristics (hook, completeness, density, supplied evidence peaks, keywords, duration fit, speaker consistency) with overlap suppression. Local-only plan; not a virality prediction and never changes Premiere.

Inputs: word_timeline (required), keywords, frame_rate, hook_words, +9 more. Returns: ok, data, tool, error, +2 more

razor_all_tracksRazor All TracksA

Razor (split) all clips at the playhead position across all tracks, or at a specific time. A read-only preflight counts eligible track cuts; the host wait scales by that count (400 ms per cut plus 30 seconds headroom, capped at 15 minutes).

Inputs: track_type, time_seconds, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

read_sequence_captionsRead Sequence CaptionsA
Read-onlyIdempotent

Diagnose whether the active Premiere scripting host can enumerate caption tracks. It never treats an empty result as proof that the sequence has no captions, because most CEP builds expose caption creation but not caption reads.

Inputs: sequence_id, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

read_video_scopesRead Video ScopesA

Read waveform percentiles, RGB parade percentiles, saturation, and near-black/near-white RGB occupancy from one bounded decoded local-media frame. Read-only; this is a sampled analytical proxy, not Premiere's rendered scopes.

Inputs: media_path (required), use_cache, time_seconds, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

redoRedoA

EXPERIMENTAL (undocumented QE DOM: qe.project.redo / undoStackIndex). Redo the most recently undone Premiere project action(s) through QE, checked step by step against Premiere's undo-stack position (stackVerified; the timeline itself is not read back). To restore a tool call undone with undo, pass the same count. Observed marker boundaries refuse before any step; acknowledge_untracked_markers:true permits prior non-marker actions, without proving marker reversal.

Inputs: expected_undo_stack_index (required), count, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

refresh_mediaRefresh MediaA

Refresh a project item to pick up changes to the source file. The interpreted frame rate is read before and after; if the refresh leaves an implausible rate (seen on stills, e.g. 29.97 becoming 2.75e-8), the previous rate is restored and read back. Reports frameRateBefore, frameRateAfter and repaired.

Inputs: item_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

remove_all_effectsRemove All EffectsA
Destructive

Remove every effect from a clip, keeping its built-in components (Opacity, Motion, Volume, Channel Volume, Panner), and verify the result. EXPERIMENTAL: when Premiere has no Component.remove() (25.2), it removes through the undocumented QE DOM's targeted qeClip.getComponentAt(i).remove(). Every matching component's removal path is checked before any is removed; it returns a capability error, with nothing changed, when neither path is available.

Inputs: node_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

remove_effectRemove EffectA
Destructive

Remove one effect from a clip by its index or name (the last instance when names repeat) and verify the clip's components afterwards. Built-in components (Opacity, Motion, Volume, Channel Volume, Panner) cannot be removed. EXPERIMENTAL: when Premiere has no Component.remove() (25.2), it removes through the undocumented QE DOM's targeted qeClip.getComponentAt(i).remove(). Every matching component's removal path is checked before any is removed; it returns a capability error, with nothing changed, when neither path is available.

Inputs: node_id (required), effect_name, effect_index, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

remove_effect_by_nameRemove Effect By NameA
Destructive

Remove all instances of a specific effect from a clip by display name and verify the clip's components afterwards. EXPERIMENTAL: when Premiere has no Component.remove() (25.2), it removes through the undocumented QE DOM's targeted qeClip.getComponentAt(i).remove(). Every matching component's removal path is checked before any is removed; it returns a capability error, with nothing changed, when neither path is available.

Inputs: node_id (required), effect_name (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

remove_from_timelineRemove From TimelineA
Destructive

Remove a clip from the timeline. By default its linked audio/video partners go with it, as with Premiere's Clear on a linked clip. With ripple: true the gap is closed through the same explicit, verified ripple delete as ripple_delete (Premiere's own ripple flag does nothing on current builds), shifting sync-locked tracks so audio stays in sync.

Inputs: node_id (required), ripple, include_linked, idempotency_key, +4 more. Returns: ok, data, tool, error, +2 more

remove_keyframeRemove KeyframeA
Destructive

Remove the keyframe at a time from an effect property and read the remaining keys back. Refuses, changing nothing, when no key is within 0.01s of that time.

Inputs: node_id (required), effect_name (required), time_seconds (required), property_name (required), +4 more. Returns: ok, data, tool, error, +2 more

remove_keyframe_rangeRemove Keyframe RangeA
Destructive

Remove every keyframe in a time range (inclusive) from an effect property and read the remaining keys back. Refuses, changing nothing, when the range holds no key.

Inputs: node_id (required), effect_name (required), end_seconds (required), property_name (required), +5 more. Returns: ok, data, tool, error, +2 more

remove_selected_clipsRemove Selected ClipsA
Destructive

Remove all currently selected clips and verify their absence. Ripple requests are refused because the CEP removal call cannot reliably close gaps; use a guarded ripple-range tool instead.

Inputs: ripple, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

remove_transitionRemove TransitionA
Destructive

Remove one CEP track transition by exact index or a cut contained in its stored span. Uses TrackTransition.remove(false, false), verifies the complete remaining span list, and refuses ambiguous cuts. No QE fallback. Stored geometry only; rendered appearance remains a separate check.

Inputs: track_index (required), track_type, idempotency_key, transition_index, +3 more. Returns: ok, data, tool, error, +2 more

rename_binRename BinC

Rename a bin (folder) in the project panel

Inputs: bin_id (required), new_name (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

rename_clipRename ClipB

Rename a clip on the timeline and verify the new name.

Inputs: node_id (required), new_name (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

rename_project_itemRename Project ItemB

Rename a project item in the project panel.

Inputs: item_id (required), new_name (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

rename_trackRename TrackC

Rename a video or audio track.

Inputs: name (required), track_type (required), track_index (required), idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

replace_clipReplace ClipA

Replace one timeline clip with a different project item on the same track, keeping the exact timeline start and end. The replacement plays from its own In mark for the original clip's duration; neighbouring clips do not ripple, and a linked partner clip on another track is left in place. The replacement must carry only the track's media type (for example a still or video-only item on a video track): Premiere's overwrite would also place an item's other media on another track. Checks the replacement accepts the source range before removing anything. Refuses without changing anything when the track is locked. Reads the track back: verified when the new clip covers the same span, committed_unverified when the span holds but the source In point cannot be confirmed, otherwise failure with Undo guidance.

Inputs: node_id (required), new_item_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

replace_clip_mediaReplace Clip MediaC

Unavailable by design: the legacy ExtendScript overwrite route cannot prove that replacing media preserves the original clip's trim, position, linked audio, or adjacent clips, so this tool performs no mutation.

Inputs: new_item_id (required), clip_node_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

retime_caption_fileRetime Caption FileA

Retime a local SRT/VTT file after ripple edits; Premiere captions do not follow ripple_remove_timeline_ranges or insert_from_source. Operations: shift, ripple_remove_ranges, ripple_insert, edit_cue. Keeps VTT header/NOTE/STYLE, cue settings, karaoke stamps; renumbers SRT. Local-only, never changes Premiere: re-import via create_caption_track, then reapply styling (get_caption_style_guidance).

Inputs: operation (required), fps, text, ranges, +20 more. Returns: ok, data, tool, error, +2 more

reverse_clipReverse ClipA

Unavailable: Premiere does not expose a supported scripting API for reversing a timeline clip's playback direction.

Inputs: node_id (required), reverse, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

review_broll_placementsReview Broll PlacementsA
Read-onlyIdempotent

Review caller-proposed owned-footage B-roll picks with matched quote, reason, alternatives, source/sequence revisions and explicit decisions. Reject overlapping approved placements. Does not infer visual content, search stock, inspect track occupancy or insert clips.

Inputs: placements (required), rejected_ids, selected_ids, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

review_dialogue_candidatesReview Dialogue CandidatesA
Read-onlyIdempotent

Review revision-bound dialogue candidates with surrounding words, silence padding, explicit keep/reject decisions and unioned source-time removal duration. Recomputed review revisions reject stale selections. Local-only; no timeline mapping, transcription or mutation.

Inputs: segments (required), filler_words, rejected_ids, selected_ids, +6 more. Returns: ok, data, tool, error, +2 more

review_quote_paper_editReview Quote Paper EditA
Read-onlyIdempotent

Review a transcript quote library, explicitly order approved quotes, and return running timings and a formula-neutralized CSV paper edit inline. Local-only; no files, provider calls or multi-source timeline assembly.

Inputs: segments (required), quote_order, expected_cep_target, expected_project_path, +1 more. Returns: ok, data, tool, error, +2 more

review_sync_evidenceReview Sync EvidenceA
Read-onlyIdempotent

Review caller-supplied camera/recorder offset estimates for independent-method agreement, confidence and conflicting alternatives. All matches require selection; conflicting matches cannot be approved. Does not analyze audio, calibrate confidence or synchronize Premiere.

Inputs: matches (required), rejected_ids, selected_ids, minimum_confidence, +4 more. Returns: ok, data, tool, error, +2 more

review_text_changesReview Text ChangesA
Read-onlyIdempotent

Preview literal replacements or supplied copy changes for inspected MOGRT text and supplied caption artifacts. Preserve original text and evidence revisions with explicit approve/reject decisions. Does not translate, access native graphics/caption text or apply changes.

Inputs: entries (required), find_text, rejected_ids, replace_text, +4 more. Returns: ok, data, tool, error, +2 more

ripple_deleteRipple DeleteA
Destructive

Refuses attached transitions or unreadable transition collections before structural edits; inspect transitionsAffected and use remove_transition first. 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.

Inputs: node_id (required), scope, dry_run, range_content, +5 more. Returns: ok, data, tool, error, +2 more

ripple_remove_timeline_rangesRipple Remove Timeline RangesA

Refuses attached transitions or unreadable transition collections before structural edits; inspect transitionsAffected and use remove_transition first. Preview or apply a single-pass ripple removal for up to 50 sorted, non-overlapping timeline ranges on all unlocked, sync-locked tracks. Requires a preview confirmation token to apply. Integer frame rates only. The preview returns per-track counts and at most 50 planned-clip samples; clips fully inside ranges are removed. Kept pieces cut from one linked audio/video clip are relinked and read back after the move. Large edits need allow_large_ripple: true.

Inputs: scope (required), ranges (required), range_content (required), dry_run, +7 more. Returns: ok, data, tool, error, +2 more

roll_editRoll EditA

Perform a verified roll edit at the outgoing cut of a clip using the public timeline DOM, moving both visible edges and their source in/out points and verifying all four. Linked audio/video partners get the same edit by default (include_linked); every clip is checked before any is changed. Requires readable finite media and ffprobe duration evidence for every edited source; refuses unknown duration, stills, and nonunit/reversed speed before mutation. Existing host Out padding below one sequence frame may be preserved or reduced, but never used to create additional padding.

Inputs: node_id (required), offset_seconds (required), include_linked, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

save_projectSave ProjectA

Save the current Premiere Pro project to its existing path. Fails when the project has never been saved (use save_project_as) or when Premiere writes no non-empty file. Fresh disk metadata verifies a save; unchanged or unreadable metadata reports committed_unverified.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

save_project_asSave Project AsA

Save the current project to a new .prproj path. Existing outputs require overwrite true. Premiere then has the NEW copy open and closes the original, so later edits go to the copy; the result reports both paths. Fails when Premiere writes no file or leaves a pre-existing path unchanged. Use open_project to return to the original.

Inputs: path (required), overwrite, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

save_workflow_checkpointSave Workflow CheckpointA

Persist version1 project/sequence checkpoint references and bounded operation receipt digests in the private bridge directory. Completed/pending/unknown/failed states survive server restart. No arguments or transcripts stored; no automatic replay or project restoration.

Inputs: checkpoint (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

scene_edit_detectionScene Edit DetectionA

Perform Premiere's scene edit detection on the selected clips in the active sequence (it analyses the footage and can take minutes on long clips). CreateMarkers (default) puts Segmentation markers on the selected clips' source project items (shared by every sequence that uses them), removes duplicates this run created (markers that were already there are never deleted), and reports each detected cut in source and timeline seconds; it is verified only when at least one new marker was added. ApplyCuts razors the selected clips and verifies the clip count grew. EXPERIMENTAL QE: CreateMarkers records an observed marker boundary for guarded Undo/Redo; crossing it is refused by default, and unreadable history records unknown protection. This boundary does not verify native marker reversal.

Inputs: action, sensitivity, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

search_project_contextSearch Project ContextA
Read-onlyIdempotent

Search a durable Premiere project-context index for relevant sources, timeline placements, transcript passages, shots, audio observations, and notes. Returns bounded evidence with stable IDs and revisions; it never changes Premiere.

Inputs: query (required), project_id (required), kinds, max_results, +4 more. Returns: ok, data, tool, error, +2 more

search_project_itemsSearch Project ItemsA
Read-onlyIdempotent

Search for project items by name, media file extension, offline status, or color label. Returns matching items with full details.

Inputs: query, extension, item_type, color_label, +4 more. Returns: ok, data, tool, error, +2 more

search_workflow_recipesSearch Workflow RecipesA
Read-onlyIdempotent

Search audited built-in and explicitly supplied workspace-local workflow recipes. Recipes are declarative previews and cannot execute arbitrary tools or scripts.

Inputs: query, recipe_file, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

select_all_clipsSelect All ClipsB

Select all clips in the active sequence, or all clips on a specific track.

Inputs: track_type, track_index, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

select_clips_by_colorSelect Clips By ColorA

Select clips by their source project item color label. CEP exposes no timeline track-item label getter, so timeline-specific labels cannot be matched.

Inputs: color_index (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

select_clips_by_nameSelect Clips By NameA

Select all clips in the active sequence that match a name (substring match). Optionally filter by track type and index.

Inputs: name (required), track_type, track_index, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

select_clips_by_patternSelect Clips By PatternA

Select every Nth clip (with an offset) among clips that match optional name, duration, time-range, track, and enabled filters, then read back the selection count. Covers 'select every other clip on V1' and similar repetitive selections without changing the timeline.

Inputs: offset, every_nth, name_regex, track_type, +12 more. Returns: ok, data, tool, error, +2 more

select_clips_in_rangeSelect Clips In RangeB

Select all clips that overlap a time range in the active sequence.

Inputs: end_seconds (required), start_seconds (required), track_type, track_index, +3 more. Returns: ok, data, tool, error, +2 more

select_disabled_clipsSelect Disabled ClipsA

Select all disabled clips in the active sequence.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

select_itemSelect ItemB

Select a project item and verify its node ID in the current Project-panel selection. Missing or unreadable selection readback remains committed_unverified.

Inputs: item_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_active_sequenceSet Active SequenceC

Set the active sequence by name or ID

Inputs: sequence_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_all_tracks_targetedSet All Tracks TargetedA

Set all tracks targeted or untargeted. Useful before insert/overwrite edits. Reads back every affected track and reports verified only when all match the requested state.

Inputs: targeted (required), track_type, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_anti_alias_qualitySet Anti Alias QualityC

Set the anti-alias quality on a clip's Motion effect (useful for scaled/rotated clips).

Inputs: enabled (required), node_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_blend_modeSet Blend ModeA

Set a video clip's blend mode through its Opacity effect and read the stored mode back. Premiere stores the mode as an index into its modes in alphabetical order, with Subtract and Divide last (mapped on Premiere 25.2.3 by rendering every index over a known background).

Inputs: node_id (required), blend_mode (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_clip_anchor_pointSet Clip Anchor PointB

Set and read back Motion Anchor Point in source-frame pixels by default, or explicit normalized 0–1 source-frame fractions. Omitted units with a 0–1 pair keeps pixels and adds a warning.

Inputs: x (required), y (required), node_id (required), units, +3 more. Returns: ok, data, tool, error, +2 more

set_clip_durationSet Clip DurationA

Refuses attached transitions or unreadable transition collections before structural edits; inspect transitionsAffected and use remove_transition first. Set one timeline clip's visible duration by moving only its timeline end (TrackItem.end) while keeping its start fixed. Pass exactly one of duration_seconds or end_seconds. Works for extending still images past their import length. Refuses to overlap the next clip on the same track, rejects shortening that would strand effect keyframes unless keyframe_policy is preserve, reads start/end back, and restores the original end if Premiere clamps or ignores the write (for example when video media has no handle left). Linked audio/video partners get the same change by default (include_linked), applied as the same end offset so partners with a J/L cut keep their offset; every clip is checked before any is changed. Use this instead of speed changes, which Premiere does not expose to scripting. Existing host Out padding below one sequence frame may be preserved or reduced, but never used to create additional padding. Non-still sources require readable ffprobe duration evidence and a readable sequence frame grid.

Inputs: node_id (required), end_seconds, include_linked, idempotency_key, +4 more. Returns: ok, data, tool, error, +2 more

set_clip_opacitySet Clip OpacityC

Set the opacity of a video clip (0-100) using English or measured Spanish built-in names, then read it back.

Inputs: node_id (required), opacity (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_clip_panSet Clip PanB

Set and read back the pan (left/right balance) on an audio clip, including Channel Volume layouts.

Inputs: pan (required), node_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_clip_positionSet Clip PositionA

Set the Position property on a video clip's Motion effect using English or measured Spanish built-in names, then read it back. Values default to pixels; explicit normalized values are fractions from 0 to 1. Omitted units with a 0–1 pair keeps pixels and adds a warning.

Inputs: x (required), y (required), node_id (required), units, +3 more. Returns: ok, data, tool, error, +2 more

set_clip_propertiesSet Clip PropertiesA

Set supported clip properties (opacity, scale, position, rotation) and read each requested value back. Position uses pixels by default or explicit normalized 0–1 fractions; an omitted-unit 0–1 pair retains pixels with a warning. Clip speed is unsupported and fails before mutation; use set_clip_duration to change a clip's timeline length.

Inputs: node_id (required), scale, speed, units, +7 more. Returns: ok, data, tool, error, +2 more

set_clip_properties_batchSet Clip Properties BatchA

Apply Motion/Opacity values to up to 16 clips after preflighting every target property. Position defaults to pixels or accepts explicit normalized 0–1 fractions; omitted-unit 0–1 pairs retain pixels and add per-item warnings. The handler reads each requested value back and never reports a partial batch as verified.

Inputs: items (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_clip_rotationSet Clip RotationB

Set the Rotation property on a video clip's Motion effect using English or measured Spanish built-in names, then read it back.

Inputs: degrees (required), node_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_clip_scaleSet Clip ScaleA

Scale a video clip evenly through its Motion effect using English or measured Spanish built-in names, and read the result back. With Uniform Scale off, both Scale (height) and Scale Width are set, so the picture is not stretched; use set_scale_width_height for different values.

Inputs: scale (required), node_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_clip_selectionSet Clip SelectionB

Select or deselect a clip in the active sequence and read its selection state back.

Inputs: node_id (required), selected (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_clip_speed_qeSet Clip Speed QeA

Unavailable: Premiere's documented ExtendScript and UXP APIs have no setter for a timeline clip's speed (only getters), and the undocumented QE setSpeed is deliberately not used. Always fails before mutation. To change how long a clip runs on the timeline, use set_clip_duration.

Inputs: node_id (required), speed_percent (required), reverse, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

set_clip_start_timeSet Clip Start TimeB

Alias of set_start_time: set and verify the source project item start timecode offset.

Inputs: item_id (required), start_seconds (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_clips_volumeSet Clips VolumeA

Set the volume (in dB) on every audio clip of a track, or on a list of clip indices. One round trip instead of one call per clip - essential for sequences with dozens of clips.

Inputs: volume_db (required), track_index (required), clip_indices, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

set_clip_volumeSet Clip VolumeA

Set an audio clip's Volume > Level in dB. Does not read or change Essential Sound Amplify automation.

Inputs: node_id (required), volume_db (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_color_labelSet Color LabelB

Set the color label on a project item or clip and read it back

Inputs: item_id (required), color_index (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_color_valueSet Color ValueC

Set a color value on an effect property (e.g., tint color, fill color)

Inputs: red (required), blue (required), alpha (required), green (required), +7 more. Returns: ok, data, tool, error, +2 more

set_effect_propertySet Effect PropertyA

Set one effect property. Duplicate names require property_index from get_effect_properties. Colour values use [alpha, red, green, blue] and the lossless colour API; keyframed writes are refused. Readback reports verified, failed or committed_unverified; unreadable values are never reported as applied. Audio effect parameters (effects on audio clips other than built-in Volume, Channel Volume, Panner and Balance) take Premiere's normalized 0-1 value, not Hz, dB or ms; a number outside 0-1 is refused before the write when the current value is inside 0-1, unless allow_out_of_range_audio_value is true. valueScale describes the returned value; requestedValueScale is added when the request was on a different scale. Calibrate audio changes by rendering.

Inputs: value (required), node_id (required), effect_name (required), property_name (required), +5 more. Returns: ok, data, tool, error, +2 more

set_footage_interpretationSet Footage InterpretationC

Set footage interpretation settings for a project item and read them back, including fields that were not meant to change

Inputs: item_id (required), field_type, frame_rate, idempotency_key, +3 more. Returns: ok, data, tool, error, +2 more

set_frame_blendSet Frame BlendA

Request frame blending on a clip through QE DOM. Premiere exposes no frame-blend readback, so the result is committed_unverified and must be checked in Effect Controls.

Inputs: enabled (required), node_id (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_graphics_white_luminanceSet Graphics White LuminanceC

Set the graphics white luminance value (HDR setting) for the project

Inputs: luminance (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_item_in_outSet Item In OutA

Set in and/or out points on a project item in the project panel (marks source range for editing). Premiere floors video marks to the media's own frame grid, so a mark is verified when it lands on the frame the request floors to (an exact frame boundary keeps its own frame); the result reports requested and applied seconds.

Inputs: item_id (required), in_seconds, media_type, out_seconds, +3 more. Returns: ok, data, tool, error, +2 more

set_keyframe_interpolationSet Keyframe InterpolationA

Set the interpolation type of an existing keyframe (Linear, Hold, or Bezier). Premiere exposes no interpolation readback, so a write is reported as committed_unverified. Stored curves do not establish rendering; verify with a short video export, or with PNG stills composited over black (they carry straight alpha).

Inputs: node_id (required), effect_name (required), time_seconds (required), interpolation (required), +5 more. Returns: ok, data, tool, error, +2 more

set_metadataSet MetadataA

Update project metadata on a project item. Supply complete metadata_xml plus updated_fields, or field_name and value to read-modify-write one XMP/project property through AdobeXMPScript with field readback. The project packet (default) stays in the project; packet 'xmp' is written by Premiere into the source media file on disk and requires the filesystem capability.

Inputs: item_id (required), value, packet, field_name, +7 more. Returns: ok, data, tool, error, +2 more

set_offlineSet OfflineB

Set a project item offline, or ask Premiere to refresh it back online when offline is false.

Inputs: item_id (required), offline, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_override_frame_rateSet Override Frame RateB

Override the frame rate of a project item (useful for image sequences or misinterpreted media) and read it back

Inputs: item_id (required), frame_rate (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_override_pixel_aspect_ratioSet Override Pixel Aspect RatioB

Override the pixel aspect ratio of a project item and read it back

Inputs: item_id (required), numerator (required), denominator (required), idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

set_playhead_positionSet Playhead PositionA

Set the playhead (CTI) position, clamp it to the active sequence's end, and read the stored position back.

Inputs: time_seconds (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_poster_frameSet Poster FrameA

Unavailable: Premiere's scripting API cannot set a project item's poster frame. Fails without changing the item; set it in the Project panel (Shift+P).

Inputs: item_id (required), time_seconds (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_project_item_audio_channel_mappingSet Project Item Audio Channel MappingB

Request one output-to-source audio channel mapping using the documented API. Per-channel mapping has no documented getter, so accepted writes remain committed_unverified.

Inputs: item_id (required), channel_index (required), source_channel_index (required), idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

set_project_panel_metadataSet Project Panel MetadataA

Set the project panel metadata/column configuration from XML and verify that Premiere reads back the exact XML

Inputs: metadata_xml (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_project_scratch_diskSet Project Scratch DiskA

Set the project's scratch disks for captured video, captured audio, video previews and audio previews in one call. Each path must be an existing folder or "SameAsProject"; any rejected path fails the call.

Inputs: audio_previews, captured_audio, captured_video, video_previews, +4 more. Returns: ok, data, tool, error, +2 more

set_scale_to_frame_sizeSet Scale To Frame SizeA

Enable 'Scale to Frame Size' so media fills the sequence frame. Accepts a timeline clip node ID (active sequence, same IDs as get_clip_properties) or a project item node ID or name. A timeline clip is resolved first and its source project item is updated through ProjectItem.setScaleToFrameSize(). ExtendScript exposes no getter for this flag, so the result is committed_unverified unless the timeline clip's Motion > Scale reads back changed (verified). Check with get_clip_properties.

Inputs: item_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_scale_width_heightSet Scale Width HeightA

Set independent width and height scale on a clip. Turns Uniform Scale off, writes Motion > Scale Width (width) and Motion > Scale (which Premiere uses as the height once Uniform Scale is off), then reads all three back. Fails when a value does not read back.

Inputs: node_id (required), scale_width (required), scale_height (required), idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

set_scratch_disk_pathSet Scratch Disk PathB

Set one project scratch disk (captured media, previews, auto-save, CC Libraries or Motion Graphics template media) to an existing folder or "SameAsProject", using Premiere's ScratchDiskType constants.

Inputs: path (required), scratch_disk_type (required), idempotency_key, save_and_verify, +2 more. Returns: ok, data, tool, error, +2 more

set_sequence_audio_settingsSet Sequence Audio SettingsB

Change audio settings of the active sequence (sample rate, channel type).

Inputs: sample_rate, channel_type, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_sequence_display_formatSet Sequence Display FormatA

Set the timecode display format for the active sequence and read it back. Uses Premiere's display codes (video 100-113, audio 200-201); the older 0-11 and 0-1 values are mapped onto them.

Inputs: idempotency_key, expected_cep_target, audio_display_format, video_display_format, +1 more. Returns: ok, data, tool, error, +2 more

set_sequence_field_typeSet Sequence Field TypeB

Set the field order of the active sequence.

Inputs: field_type (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_sequence_frame_rateSet Sequence Frame RateA

Change the frame rate of the active sequence and verify it. Premiere re-snaps every clip to the new frame grid, so clips off that grid move by up to a frame; the result lists them (clipsMoved, movedClips) and changing back does not restore them.

Inputs: frame_rate (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_sequence_in_out_pointsSet Sequence In Out PointsA

Set the sequence in and out points (for an export range, etc.) and read them back. out_seconds must be after in_seconds and not past the sequence end.

Inputs: in_seconds (required), out_seconds (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_sequence_pixel_aspect_ratioSet Sequence Pixel Aspect RatioB

Change the pixel aspect ratio of the active sequence, or return a capability error when the legacy host does not expose a writable setting.

Inputs: ratio (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_sequence_resolutionSet Sequence ResolutionC

Change the resolution (frame size) of the active sequence.

Inputs: width (required), height (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_sequence_settingsSet Sequence SettingsC

Modify and read back sequence frame-size settings.

Inputs: width, height, sequence_id, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

set_source_in_outSet Source In OutB

Set in and/or out points on the clip currently open in the Source Monitor.

Inputs: in_seconds, out_seconds, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_start_timeSet Start TimeC

Set the start time (timecode offset) for a project item

Inputs: item_id (required), start_seconds (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_target_trackSet Target TrackA

Target or untarget one video or audio track for source-patched insert/overwrite edits. Premiere allows several tracks of a type to be targeted at once, so by default (exclusive=true) targeting a track also untargets every other track of the same type. Reads back every track of that type and reports verified only when the readback matches the requested state; otherwise committed_unverified or an error.

Inputs: targeted (required), track_type (required), track_index (required), exclusive, +3 more. Returns: ok, data, tool, error, +2 more

set_time_interpolationSet Time InterpolationB

Request time interpolation for a clip (Frame Sampling, Frame Blending, Optical Flow) through QE DOM. Premiere exposes no interpolation readback, so the result is committed_unverified and must be checked in Effect Controls.

Inputs: node_id (required), interpolation_type (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_track_statesSet Track StatesA

Set mute, solo and lock on several video or audio tracks of the active sequence in one host command, with per-track readback. Every requested track is read first; if any target is out of range, unreadable or asks for a state this host cannot read and write (solo has no public ExtendScript API and is probed on the QE track), nothing is changed. snapshot: true returns the pre-write state of the same tracks as a restore payload this tool accepts unchanged; with no state fields at all it is a read-only capture.

Inputs: tracks (required), snapshot, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_transcode_on_ingestSet Transcode On IngestB

Request enabling or disabling project transcoding on ingest. Premiere exposes no getter for independent verification, so dispatch is reported as requested_unverified.

Inputs: enabled (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_uniform_scaleSet Uniform ScaleA

Toggle uniform scale on a clip's Motion effect. When enabled, Scale Width and Scale Height are linked.

Inputs: node_id (required), uniform (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

setup_duckingSetup DuckingA

Build a verified Volume > Level keyframe curve for one audio clip. Ducking-window times are relative to that clip's start; overlapping or out-of-range windows are rejected before any keyframe write.

Inputs: node_id (required), ducking_windows (required), base_db, fade_seconds, +3 more. Returns: ok, data, tool, error, +2 more

set_work_areaSet Work AreaA

Set and verify the work-area points, turning the bar on first through the public Sequence API when it is off. Fails when Premiere leaves the points unchanged (26.5.2 ignores these CEP writes; use the UXP set_work_area there) and turns the bar back off if this call turned it on. Unreadable or partial writes report committed_unverified.

Inputs: in_seconds (required), out_seconds (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_workspaceSet WorkspaceA

Request a workspace layout. The documented API has no current-workspace getter; acceptance is committed_unverified and the visible layout must be checked in Premiere.

Inputs: name (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

set_xmp_metadataSet Xmp MetadataA

Merge a raw XMP XML patch into a project item's existing XMP metadata without removing unrelated fields. WARNING: Premiere writes XMP into the source media file on disk (the file's metadata block and modification time change; picture and sound are untouched). Each supplied leaf field is compared with host readback (maximum 256); unreadable readback remains committed_unverified. Requires the filesystem capability.

Inputs: item_id (required), xmp_xml (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

set_zero_pointSet Zero PointA

Set the starting timecode (zero point) of a sequence and read it back. The value is snapped to the sequence frame grid; for drop-frame 29.97, 01;00;00;00 is 3599.9964 s, and for non-drop 29.97 it is 3603.6 s.

Inputs: start_seconds (required), sequence_id, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

slide_editSlide EditA

Perform a verified slide edit on a clip using adjacent clips from the public timeline DOM. Linked audio/video partners get the same edit by default (include_linked); every clip is checked before any is changed. Requires readable finite media and ffprobe duration evidence for every edited source; refuses unknown duration, stills, and nonunit/reversed speed before mutation. Existing host Out padding below one sequence frame may be preserved or reduced, but never used to create additional padding.

Inputs: node_id (required), offset_seconds (required), include_linked, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

slip_editSlip EditA

Perform a verified slip edit on a clip using public source in/out properties. Requires accessible physical media duration from ffprobe; unknown duration or linked partners using different source files refuse before mutation. Linked audio/video partners get the same edit by default (include_linked); every clip is checked before any is changed. Existing host Out padding below one sequence frame may be preserved or reduced, but never used to create additional padding.

Inputs: node_id (required), offset_seconds (required), include_linked, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

speed_changeSpeed ChangeA

Unavailable: Premiere's documented ExtendScript and UXP APIs have no setter for a timeline clip's speed (only getters), and the undocumented QE setSpeed is deliberately not used. Always fails before mutation. To change how long a clip runs on the timeline, use set_clip_duration.

Inputs: node_id (required), speed_percent (required), reverse, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

split_clipSplit ClipA

EXPERIMENTAL (undocumented QE DOM): Split every clip on one track that spans a timeline time, then verify both resulting boundaries. Effect-keyframe redistribution remains unverified.

Inputs: time_seconds (required), track_type, track_index, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

stabilize_clipStabilize ClipA

Apply Warp Stabilizer using the experimental QE DOM. Verifies component addition and readable parameter values, never analysis completion. Numeric or unreadable Method popup values remain unverified because no documented label mapping is available.

Inputs: node_id (required), method, smoothness, idempotency_key, +2 more. Returns: ok, data, tool, error, +2 more

start_batch_encodeStart Batch EncodeA

Request Adobe Media Encoder to start the render queue; reports only accepted handoff, not queue progress or output-file creation.

Inputs: idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

start_local_analysis_jobStart Local Analysis JobA

Start one allowlisted read-only local media analysis as a bounded cancellable process job. Native Premiere jobs are never cancelled by this tool.

Inputs: arguments (required), tool_name (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

stop_playbackStop PlaybackA

Request that active-sequence timeline playback stop through QE. The legacy API does not provide a same-call playhead readback, so stopped state is not reported as verified. Only the timeline can be stopped: Premiere's scripting APIs have no documented call that stops the Source Monitor alone, so target "source" returns an error instead of stopping the timeline.

Inputs: target, idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

toggle_track_visibilityToggle Track VisibilityB

Set video track visibility using Premiere's track mute state (eye icon) and read the mute state back. Premiere's scripting API exposes mute, not a separate video visibility setter.

Inputs: visible (required), track_index (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

trim_clipTrim ClipA

Refuses attached transitions or unreadable transition collections before structural edits; inspect transitionsAffected and use remove_transition first. Trim exactly one source in/out point and verify the corresponding visible timeline edge. Requires accessible physical media duration from ffprobe; unknown duration or linked partners using different source files refuse before mutation. Refuses retimed clips, extensions that would overlap the neighbouring clip on the same track, and, by default, trims that would leave effect keyframes outside the visible clip. Linked audio/video partners get the same trim by default (include_linked), applied as the same offset from each partner's own source point so a J/L cut or slipped audio stays in sync; every clip is checked before any is changed. To set a clip's timeline length or extend a still image, use set_clip_duration. Existing host Out padding below one sequence frame may be preserved or reduced, but never used to create additional padding.

Inputs: node_id (required), include_linked, new_in_seconds, idempotency_key, +4 more. Returns: ok, data, tool, error, +2 more

undoUndoA

EXPERIMENTAL (undocumented QE DOM: qe.project.undo / undoStackIndex). Undo the most recent Premiere project action(s) through QE, checked step by step against Premiere's undo-stack position (stackVerified; the timeline itself is not read back). Undo history is project-wide. Only actions Premiere records are undoable: QE edits such as razor, insert, lift and extract report undoSteps (and undoStackIndex) in their results; pass that undoSteps as count to reverse exactly that call. A marker receipt with undoTracked:false recorded no undo step: calling Undo for it would reverse an earlier action. Only CEP tool results carry undoSteps; UXP tools and workflows that send several commands are not counted. Always pass expected_undo_stack_index to check the stack position, but matching position alone does not prove which action is on top. Observed marker boundaries refuse the entire request before any step unless acknowledge_untracked_markers:true explicitly permits prior non-marker actions. The barrier persists through server/helper reloads while the CEP engine remains alive; it cannot account for marker writes before observation, after an engine reset, or through UXP, the manual UI, or other clients. Matching the QE index verifies stack position only.

Inputs: expected_undo_stack_index (required), count, idempotency_key, expected_cep_target, +2 more. Returns: ok, data, tool, error, +2 more

unnest_sequenceUnnest SequenceA

Unnest a nested sequence clip, replacing it with the nested sequence's clips at their exact source in/out and timeline positions. Refuses without changing anything when the nest is trimmed, retimed, linked to a partner clip, contains items that also carry the other media type (Premiere's Track.overwriteClip would place that media on the matching track and overwrite the clips there), or when the destination range is occupied or locked. Re-reads every placed clip and reports failure with Undo guidance if any start or source range differs. Nested clips are re-placed from their project items, so effects, keyframes, and transitions inside the nest are not carried over.

Inputs: node_id (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

update_markerUpdate MarkerA

Update the name, comments or color of the sequence marker at a time and read them back. EXPERIMENTAL (QE DOM): the receipt reports undoStackIndex movement, which does not prove QE can reverse the marker. Every marker attempt protects an engine undo boundary; undoTracked:false means the marker did not observably advance the QE index.

Inputs: time_seconds (required), name, color, comments, +3 more. Returns: ok, data, tool, error, +2 more

validate_cmx3600_edlValidate Cmx3600 EdlA

Validate a local CMX 3600 EDL's supported event grammar, timecodes, durations, duplicate event IDs, record overlaps, and record gaps before user-assisted Premiere interchange.

Inputs: path (required), frame_rate, idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

validate_export_presetValidate Export PresetB

Validate that an Adobe Media Encoder .epr preset exists and ask the active Premiere sequence which output extension it produces

Inputs: preset_path (required), idempotency_key, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

validate_mogrt_brand_kitValidate Mogrt Brand KitA
Read-onlyIdempotent

Validate an operator-approved local MOGRT brand kit before using it in a template or batch preview. It never reads font inventories, image pixels, or writes files.

Inputs: brand_kit (required), approved_workspace_path (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

validate_platform_publish_packageValidate Platform Publish PackageA
Read-onlyIdempotent

Validate a rendered file plus title, description, hashtags, and content flags against one platform's approximate 2026 publish limits. Returns hard violations, soft warnings, normalized hashtags, and character counts. Local-only; never uploads or changes Premiere.

Inputs: width (required), height (required), platform (required), frame_rate (required), +12 more. Returns: ok, data, tool, error, +2 more

validate_project_for_exportValidate Project For ExportA
Read-onlyIdempotent

Run a non-mutating export preflight for an active or named sequence. It reports blocking offline media, empty timelines, inaccessible preset/output paths, duration, and optional timeline gaps without queuing an export. readyForExport means these preflight checks passed; it does not test exporter initialization, encoder availability, or whether the host can render. Require an actual output file from export_sequence and verify_delivery_file before claiming delivery.

Inputs: gap_limit, check_gaps, gap_offset, output_path, +7 more. Returns: ok, data, tool, error, +2 more

verify_after_effects_connectionVerify After Effects ConnectionC

Read-only check that the dedicated After Effects CEP connector is running. It never reads project names, media, or paths.

Inputs: expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

verify_caption_render_evidenceVerify Caption Render EvidenceA
Read-onlyIdempotent

Check caller-measured caption/title bounds, missing glyphs, line-break and bidirectional-text review against a rendered-artifact SHA256 and target safe zone. Pixel measurement and manual review remain explicit; this tool does not perform OCR or certify unsampled frames.

Inputs: evidence (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

verify_delivery_conformanceVerify Delivery ConformanceA
Read-onlyIdempotent

Verify a local exported file against an explicit delivery contract using ffprobe and optional EBU R128 analysis. Returns pass, fail, or not_evaluated per check; it does not prove Premiere render lineage or visual approval.

Inputs: output_path (required), width, height, frame_rate, +16 more. Returns: ok, data, tool, error, +2 more

verify_delivery_fileVerify Delivery FileB

Verify that an exported delivery is a non-empty regular file and calculate a SHA-256 or SHA-512 checksum; optionally compare expected size and checksum

Inputs: output_path (required), idempotency_key, expected_checksum, checksum_algorithm, +4 more. Returns: ok, data, tool, error, +2 more

verify_fcpxml_media_referencesVerify Fcpxml Media ReferencesA

Verify the file:// media references of an FCPXML or FCP7 XML (xmeml) document, only inside caller-approved existing roots. References outside those roots are never statted or exposed as local paths.

Inputs: path (required), allowed_roots (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

verify_mogrt_artifactVerify Mogrt ArtifactA
Read-onlyIdempotent

Verify that a workspace-contained .mogrt artifact exists locally and has a ZIP header. This does not prove controls, import compatibility, playback, or visual correctness.

Inputs: mogrt_path (required), approved_workspace_path (required), idempotency_key, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

verify_premiere_connectionVerify Premiere ConnectionA
Read-onlyIdempotent

Run a safe, read-only first-run check. It proves that this MCP server, the selected Premiere bridge, an active project, and an active sequence are connected without returning project names, paths, or media details.

Inputs: backend, expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

verify_temporal_render_artifactVerify Temporal Render ArtifactA
Read-onlyIdempotent

Validate actual short exported video at 2–32 times with decoded RGB tolerances and optional decoded-audio RMS windows. Rejects stills and mismatched samples; records fixture/artifact hashes and explicit declared host provenance. This sampled harness does not prove all frames, Undo/reopen, playback, glyphs or destination compatibility.

Inputs: path (required), samples (required), fixture_id (required), fixture_sha256 (required), +7 more. Returns: ok, data, tool, error, +2 more

verify_timeline_postconditionsVerify Timeline PostconditionsA
Read-onlyIdempotent

Compare exact canonical snapshots for source continuity, linked identities, preserved neighbors and unexpected pieces. Reports bounded structural discrepancies. Does not certify audible A/V synchronization or rendering.

Inputs: actual (required), expected (required), expected_cep_target, expected_project_path. Returns: ok, data, tool, error, +2 more

wait_workflow_jobWait Workflow JobA
Read-onlyIdempotent

Wait up to 60 seconds for an exact native or local job. An uncorrelated native terminal event stops observation with requiresReconciliation, never verified completion. Optional MCP progress reports observed receipt progress. Stopping the wait never cancels accepted native work.

Inputs: job_id (required), origin (required), timeout_ms, expected_cep_target, +1 more. Returns: ok, data, tool, error, +2 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 445 tools

    Disambiguation2/5

    The surface has many near-duplicate reads (get_sequence_structure, get_active_sequence, get_full_sequence_info, inspect_timeline_snapshot, get_timeline_summary, get_premiere_state) and overlapping writes (add_track vs add_tracks, set_clip_volume vs set_clips_volume vs adjust_audio_levels, several selection tools, three export_*_review_frames variants) that an agent could easily misselect. Descriptions are unusually detailed and often disambiguate locally, but with hundreds of similarly named plan_/preview_/apply_/inspect_ tools, boundaries blur at the set level. A large fraction of tools are explicit no-ops (speed_change, apply_lut, nest_clips, add_text_overlay, reverse_clip), further muddying choice.

    Naming Consistency4/5

    Nearly all names are snake_case and mostly verb_noun (get_, set_, add_, remove_, export_, preview_, apply_, inspect_), which is predictable. There are minor deviations (color_correct, speed_change, scene_edit_detection, ping, undo/redo, can_execute) mixing noun_verb or bare verbs, but the convention remains readable throughout.

    Tool Count1/5

    445 tools is an extreme mismatch for any single agent-facing surface, far beyond practical selection limits. Even though Premiere automation is broad, the set includes dozens of planning helpers, parallel CEP/UXP twins, and unavailable stubs that dilute the core editing toolset.

    Completeness4/5

    Coverage is exceptionally broad: project, sequence, track, clip, effect, keyframe, marker, caption, audio, interchange, export, and verification workflows all have read and write routes, plus explicit undo/recovery and checkpoint tooling. Gaps exist where the host API blocks automation (caption reads, masks, speed change, LUT apply, EDL import, relink), but these are documented dead ends with alternate routes rather than silent holes.

    Maintenance

    ActivityActive
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers