Back to the catalog

MCP for Adobe Premiere Pro

Local-first MCP for supported Adobe Premiere Pro workflows; start with a read-only connection check.

Open source Open in the app JSON README (API)

About

Local-first MCP for supported Adobe Premiere Pro workflows; start with a read-only connection check.

Details

Kind
MCP servers
Topic
No topic detected
Publisher
leancoderkavy
Origin
official
Category
ferramentas
Transport
local
Version
1.15.0
Stars
249
Forks
41
Open pull requests
3
Last push
2026-09-11T21:57:20Z
Repository state
ativo
Language
TypeScript
License
MIT
Added
2026-09-08 09:01:10
Updated
2026-09-08 20:06:05
Origin id
io.github.leancoderkavy/premiere-pro

README

<div align="center">

# MCP for Adobe Premiere Pro

<!-- mcp-name: io.github.leancoderkavy/premiere-pro -->

[![MCP Toplist](https://mcptoplist.com/badge/glama%2Fleancoderkavy%2Fpremiere-pro-mcp.svg)](https://mcptoplist.com/server/glama%2Fleancoderkavy%2Fpremiere-pro-mcp)

**Give compatible AI assistants structured control over supported Adobe Premiere Pro workflows.**

Free, MIT licensed, local-first, and published to npm as [`premiere-pro-mcp`](https://www.npmjs.com/package/premiere-pro-mcp) — the only package name that installs this project.

Development source: 369 core tools across 53 modules, 4 resources, and 17 guided workflows. A connected UXP host adds 93 capability-gated tools.

The [completed AE render handoff](docs/after-effects-render-handoff.md) previews and confirms importing one finished render into an existing Premiere bin, with host and file rechecks and an import receipt.

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Node.js](https://img.shields.io/badge/Node.js-20.19%2B-green.svg)](https://nodejs.org)
[![MCP](https://img.shields.io/badge/MCP-2026--07--28-purple.svg)](https://modelcontextprotocol.io/specification/2026-07-28)
[![npm](https://img.shields.io/npm/v/premiere-pro-mcp.svg)](https://www.npmjs.com/package/premiere-pro-mcp)
[![Fly.io](https://img.shields.io/badge/Fly.io-deployed-7C3AED.svg)](https://premiere-pro-mcp.fly.dev)
[![Premiere Pro](https://img.shields.io/badge/Premiere%20Pro-2020--2026-9999FF.svg)](https://www.adobe.com/products/premiere.html)

[![npm downloads](https://img.shields.io/npm/dm/premiere-pro-mcp.svg?label=npm%20downloads)](https://www.npmjs.com/package/premiere-pro-mcp)
[![GitHub stars](https://img.shields.io/github/stars/leancoderkavy/premiere-pro-mcp?style=flat&logo=github)](https://github.com/leancoderkavy/premiere-pro-mcp/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/leancoderkavy/premiere-pro-mcp?style=flat&logo=github)](https://github.com/leancoderkavy/premiere-pro-mcp/network/members)
[![Open issues](https://img.shields.io/github/issues/leancoderkavy/premiere-pro-mcp.svg)](https://github.com/leancoderkavy/premiere-pro-mcp/issues)
[![Last commit](https://img.shields.io/github/last-commit/leancoderkavy/premiere-pro-mcp.svg)](https://github.com/leancoderkavy/premiere-pro-mcp/commits)
[![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support%20the%20project-FFDD00?logo=buymeacoffee&logoColor=000000)](https://buymeacoffee.com/leancoderkavy)

</div>

---

![MCP for Adobe Premiere Pro turns a structured AI request into an organized local editing workflow](landing/public/marketing/premiere-pro-mcp-campaign-hero-v1.png)

<details>
<summary><strong>Table of contents</strong></summary>

- [What is this?](#what-is-this)
  - [Latest release](#latest-release)
  - [Current MCP protocol support](#current-mcp-protocol-support)
- [For editors evaluating an AI workflow](#for-editors-evaluating-an-ai-workflow)
- [Quick Start](#quick-start)
  - [Easiest supported path: Claude Desktop](#easiest-supported-path-claude-desktop)
  - [First proof, before the first edit](#first-proof-before-the-first-edit)
  - [Other AI assistants](#other-ai-assistants)
  - [Configure your MCP client](#3-configure-your-mcp-client)
  - [Verify the bridge in Premiere Pro](#4-verify-the-bridge-in-premiere-pro)
- [Clients and capability coverage](#codex-plugin)
  - [Codex plugin](#codex-plugin) · [Claude](#claude) · [GPT-6 Astra tool discovery](#gpt-6-astra-and-agent-tool-discovery)
  - [Windows and macOS capability coverage](#windows-and-macos-capability-coverage)
  - [After Effects MOGRT studio](#after-effects-mogrt-studio)
  - [Collaboration and AI feature boundaries](#collaboration-and-ai-feature-boundaries)
  - [Authenticated UXP connection](#authenticated-uxp-connection)
- [Architecture](#architecture)
- [Tools](#tools)
- [MCP Resources](#mcp-resources)
- [Remote Deployment (Fly.io)](#remote-deployment-flyio)
- [Environment Variables](#environment-variables)
- [Project Structure](#project-structure)
- [Technical Details](#technical-details)
- [Frequently asked questions](#frequently-asked-questions)
- [Troubleshooting](#troubleshooting)
- [Star history](#star-history)
- [Support the project](#support-the-project)
- [Contributing](#contributing) · [License](#license)

</details>

## What is this?

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) 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.

```text
"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.

The current source exposes 369 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 93 documented, capability-gated tools without replacing the production CEP bridge.

<a id="latest-release"></a>

### Latest release: 1.15.0

The published v1.15.0 npm artifact contains **369 core tools**, 367 in its default profile,
and 460 with a compatible UXP connection. The development catalog above can include
unreleased work. See the [versioned facts and package provenance](https://premiere-pro-mcp.com/facts/).

### Try a bounded workflow

Choose a setup guide: [Claude Desktop](https://premiere-pro-mcp.com/blog/claude-desktop-premiere-pro-mcp-setup/),
[Codex](https://premiere-pro-mcp.com/blog/codex-premiere-pro-mcp-setup/),
[other local MCP clients](https://premiere-pro-mcp.com/blog/how-to-set-up-premiere-pro-mcp/),
or [ChatGPT connection options](https://premiere-pro-mcp.com/blog/chatgpt-premiere-pro-mcp/).

Download the [workflow starter kit](https://premiere-pro-mcp.com/workflows/) 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](https://premiere-pro-mcp.com/docs/troubleshooting/)
if the connection is unavailable.

### Release highlights

- **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.

- **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 landing now has 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](docs/supported-actions.md)
  for individual capability and verification contracts.

See the [v1.15.0 release notes](https://github.com/leancoderkavy/premiere-pro-mcp/releases/tag/v1.15.0)
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](docs/mcp-2026-07-28-capabilities.md).

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.

---

## For editors evaluating an AI workflow

Before an assistant changes an active project, use the
[Premiere Pro AI workflow checklist](https://premiere-pro-mcp.com/blog/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](https://premiere-pro-mcp.com/blog/adobe-premiere-ai-assistant-vs-mcp/)
and the [Claude Desktop setup guide](https://premiere-pro-mcp.com/blog/claude-desktop-premiere-pro-mcp-setup/).

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](https://premiere-pro-mcp.com/premiere-pro-collaboration-workflow/) 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](https://premiere-pro-mcp.com/project-intake/#starter-template).
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

### Easiest supported path: Claude Desktop

1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.15.0/premiere-pro-mcp-1.15.0.mcpb).
2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.15.0/MCPBridgeCEP.zxp). Open it with your trusted ZXP installer. If your computer has no ZXP installer, use the npm connector installer in **Advanced setup** below.
4. Restart Premiere, open a project, then open **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](landing/public/premiere-pro-mcp-demo-poster.png)

*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](docs/quickstart/README.md). 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](premiere-mcp-setup-guide.md).
Attaching the guide provides assistant context; the local server and Premiere
connector still need to be installed separately.

<details>
<summary><strong>Advanced setup: npm or source</strong></summary>

#### Before you begin

- Node.js **20.19 or newer** on Windows or macOS.
- Adobe Premiere Pro **2020–2026**. Keep Premiere, the CEP bridge, and your MCP client on the same computer for the recommended local setup.
- Optional: [ffmpeg](https://ffmpeg.org/download.html) on `PATH` for `detect_silence`
  (`brew install ffmpeg` on macOS or `winget install Gyan.FFmpeg` on Windows).
  The production Docker image already includes it.

#### 1. Install

**Option A — npm:**

```bash
npm install -g premiere-pro-mcp
```

**Option B — Clone from source:**

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

#### 2. Install the CEP plugin

**If installed via npm:**

```bash
premiere-pro-mcp --install-cep
```

**If cloned from source:**

```bash
npm run install-cep
```

This installs the plugin into Premiere Pro's per-user extensions folder and enables debug mode.

#### 3. Check the setup

```bash
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:**

```bash
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:**

```bash
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:

```bash
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](docs/distribution-readiness.md#connector-removal).

</details>

---

## 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:

```bash
npm run publish:npm
```

Useful local variants:

```bash
npm run publish:npm:dry-run
NPM_OTP=123456 npm run publish:npm
NPM_TOKEN=npm_xxx npm run publish:npm
```

<details>
<summary>Manual installation (macOS)</summary>

```bash
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
```

</details>

<details>
<summary>Manual installation (Windows)</summary>

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)

</details>

### 3. Configure your MCP client

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

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

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

<details>
<summary><strong>Claude Desktop</strong></summary>

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

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

</details>

<details>
<summary><strong>Windsurf / Cascade</strong></summary>

Add to your MCP server configuration:

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

</details>

<details>
<summary><strong>Cursor</strong></summary>

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

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

</details>

<details>
<summary><strong>GitHub Copilot (VS Code)</strong></summary>

Add to your VS Code MCP server configuration:

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

</details>

### 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 `ping`, with Premiere open.
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:

```bash
codex plugin marketplace add .
codex plugin add premiere-pro@premiere-pro-mcp
npx -y premiere-pro-mcp@1.15.0 --install-cep
```

Restart Premiere Pro and start a new Codex session after installation. The plugin
launches `premiere-pro-mcp@1.15.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`](plugins/premiere-pro), and the
repository marketplace manifest lives in
[`.agents/plugins/marketplace.json`](.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](docs/gpt-6-astra.md) for evidence retrieval, visual
review, execution ordering, and the division between MCP and client capabilities.

### Claude

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

```text
/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:

```bash
npx -y premiere-pro-mcp@1.15.0 --install-cep
```

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

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

```bash
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.

### Windows and macOS capability coverage

| Surface | Windows | macOS | Verification boundary |
| :------ | :------ | :---- | :-------------------- |
| CEP production bridge | Premiere Pro 2020–2026 | Premiere Pro 2020–2026 | Run `get_capabilities`, then `ping` with Premiere open |
| UXP preview bridge | Premiere Pro 25.6+ | Premiere Pro 25.6+ | Live loopback WebSocket and host API verification required |
| 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.

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**:

```bash
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](docs/project-context-engine.md) for storage
controls, privacy boundaries, and invalidation behavior; see
[local-first AI editorial workflows](docs/ai-editorial-workflows.md) for the
complete review-and-route workflow.

### Authenticated UXP connection

The MCP server can accept a local UXP panel connection and invoke the UXP commands that are currently implemented:

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

Enter the same token in the UXP panel. 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.

When enabled, MCP discovery includes 91 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](docs/third-wave-uxp-workflows.md). 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, 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](docs/uxp-hybrid-benchmark.md) keeps native acceleration disabled until reproducible cross-platform evidence exists. See also [the first stable workflow matrix](docs/uxp-stable-workflows.md), [the next-ten workflow matrix](docs/uxp-next-ten-workflows.md), [the guarded-slip workflow notes](docs/uxp-slip-workflows.md), [the guarded-slide workflow notes](docs/uxp-slide-workflows.md), [the guarded-duplicate workflow notes](docs/uxp-clone-workflows.md), and [the guarded-ripple-delete workflow notes](docs/uxp-ripple-delete-workflows.md). 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.

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. Lexical containment alone cannot exclude symlink, junction, or reparse-point escapes, and Adobe's request-scoped UXP filesystem API does not document canonical-path resolution. Builds without a host-supplied canonical resolver therefore advertise path-based UXP commands as unsupported and fail closed at invocation; use the existing CEP fallback for those operations.

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](docs/adobe-uxp-26.3-coverage.md) and [the UXP capability
foundation](docs/uxp-capability-foundation.md) for the command matrix and live-host
validation boundary.

The [Premiere surface registry](docs/premiere-surface-registry.md) 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](docs/uxp-js-api-inventory.md) is generated
from Adobe's pinned declarations, while the exhaustive
[Premiere documentation inventory](docs/premiere-doc-inventory.md) 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](docs/uxp-stable-workflows.md) 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](landing/public/marketing/premiere-pro-mcp-workflow-v1.png)

**Local (stdio):**

```text
┌───────────────┐   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):**

```text
┌───────────────┐  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.

---

<a id="tools"></a>

`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](docs/uxp-unique-identity-workflows.md) 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](docs/film-editorial-workflows.md).

## Tools (369 core total; 367 under the default profile; 460 with a connected UXP bridge)

The [complete supported-actions catalog](docs/supported-actions.md) lists every
registered core tool, the two tools restricted behind explicit `unsafe-script`
authority, and all 91 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 (26)

| 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 |
| `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 (10 + 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 has no supported scripting API for changing a timeline clip's speed or direction |
| `split_clip` / `trim_clip` / `move_clip` | Basic edits; trim verifies source points and visible timeline edges |
| `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](https://github.com/leancoderkavy/premiere-pro-mcp/issues/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. `reverse_clip`,
> `speed_change`, `set_clip_speed_qe`, and `set_clip_properties` with `speed` now stop before host mutation;
> use the Speed/Duration UI or pre-render retimed media. `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.

> **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. `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.

### 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 (16)

| Tool | Description |
| :--- | :---------- |
| `export_sequence` | Export via Adobe Media Encoder |
| `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 |
| `encode_project_item` / `encode_file` | Direct encoding |
| `start_batch_encode` | Start render queue |

Premiere's documented automation surfaces do not currently expose OTIO or EDL
interchange, Render and Replace, cloud publishing, or Content Credentials export
configuration. `get_capabilities` reports these 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 + 6)

| Tool | Description |
| :--- | :---------- |
| `select_clips_by_name` / `select_clips_in_range` | Smart selection |
| `copy_effects_between_clips` | Copy effects via QE |
| `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 |

### 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 |

### 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 |

### 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 c

More