An MCP server that lets Claude edit inside an open Premiere Pro project: MCP server -> WebSocket proxy -> UXP panel.
premiere-mcp has 22 well-intentioned tools with detailed descriptions (avg 180 chars, within baseline 194), but critical gaps in schema completeness and parameter documentation undermine production readiness. All tools are explicitly registered with Zod schemas and descriptions present. However, 8 tools lack parameter descriptions entirely (ppro_env, ppro_timeline_dump, ppro_selection, ppro_debug_arity, ppro_sequence_list, ppro_snapshot_list, ppro_close_gaps, ppro_sequence_duplicate), violating the 100% baseline for A+ tools. Input schemas are present but sparse, many parameters lack type constraints (e.g., ppro_remove_at.onlyTrack is z.string() with no enum or pattern). Output schemas are undocumented; LLMs cannot predict response structure. Error handling is uniform but generic ('${command} failed: ${e.message}'), no recovery guidance or error classification. Naming is strong (verb_noun pattern, clear intent), but composition issues exist: ppro_move_at and ppro_clone_at duplicate concerns; ppro_cleanup_apply and ppro_cleanup_plan could be unified with a dry_run flag. Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present in metadata but not exposed as tool annotations in the MCP schema.
Applies a list of cuts from a cutlist file. Each cut is a time range in source seconds; this tool maps them to sequence time and removes them. Snapshots the project first.
Applies the cleanup plan: removes disfluencies and long pauses from the active sequence based on the transcript. Snapshots the project first, so you can roll back with ppro_snapshot_restore if needed.
Dry-run the cleanup planner: reads the transcript from a clip, plans which words/pauses to remove, and returns the plan without touching the project. Use this to review cuts before ppro_cleanup_apply.
Clones every clip covering a sequence time by an offset into FREE space, across all tracks in one transaction so a linked A/V pair is cloned together. A clone is a new track item, so this never violates the track's chronological order invariant the way a move can. The clone references the same footage — no new project items are created. onlyTrack + videoTrackOffset clones a single video item onto a higher track (video-only, B-roll style).
Shifts later clips left until no gaps remain. Ripple delete leaves frame-snap residue and occasionally larger holes, so this measures the timeline and removes what is actually there.
8 tools (ppro_env, ppro_timeline_dump, ppro_selection, ppro_debug_arity, ppro_sequence_list, ppro_snapshot_list, ppro_close_gaps, ppro_sequence_duplicate) have empty inputSchema {} with no parameter descriptions. Violates 100% baseline for A+ tools.
Output schemas are completely undocumented. LLMs cannot predict response structure (fields, types, pagination). Violates 100% baseline for A+ tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Reports the arity of every SequenceEditor method, including createAddItemAction/createAddItemsAction which exist at runtime but are in no published declarations.
Calls a method on a resolved API object and reports what came back, for exploring undocumented bindings. Cannot commit a transaction, so create*Action calls build an Action without mutating the project.
Round-trip check: sends a message through the proxy to the UXP panel inside Premiere and returns it with the app version. Use this to confirm the connection before anything else.
Reports Premiere's version, the active project and sequence, and which API surfaces actually exist at runtime (transaction support, transcription trigger, frame export). Use this to tell the 26.3 stable channel from the 26.5 beta.
Shifts every clip covering a sequence time by an offset, across all tracks in one transaction so linked A/V travels together. DANGER (api-traps §5a): a move that changes the chronological ORDER of clips on a track commits cleanly but corrupts the project — UI, renderer and API model diverge, and the damage survives saving. Only use for shifts that keep every clip on the same side of its neighbours. To RELOCATE a segment use ppro_reorder, which clones instead of moving. MUTATES the active sequence.
Removes clips covering a sequence time. With ripple true the rest shifts left to close the gap. Combined with ppro_split_at this removes a span from the middle of a clip. MUTATES the active sequence.
Relocates a segment by cloning it to a new time and removing the original. Safer than ppro_move_at because cloning never violates the chronological order invariant. Snapshots the project first.
Adjusts a single clip addressed by track and index: timeline start/end (createSetStart/EndAction) and source in/out point (createSetInPoint/OutPointAction), all in one transaction. Reports before/after so the undocumented in/out semantics are verified rather than assumed. Does NOT touch the linked counterpart — pair it manually. MUTATES the active sequence.
Returns the clips currently selected in the timeline plus the playhead position — i.e. what the editor is actually looking at when they say 'remove this'.
Clones a sequence, inheriting frame size, frame rate and all settings from the original, then activates the copy. Prefer this over building a new sequence: createSequence uses the default preset and will silently give 16:9 for vertical footage.
Lists every sequence with its frame size and which one is active. Use it to confirm an agent-made sequence matches the original's format.
Snapshots the .prproj file before a risky operation. Snapshots are plain file copies in a snapshots/ directory, independent of Premiere's undo stack. Restore with ppro_snapshot_restore.
Lists all snapshots in snapshots/ with their size and creation time.
Restores a snapshot over the original project file. Premiere must have the project CLOSED, or it will overwrite the file again from memory on its next save. The previous state is saved to a backup in snapshots/.
Splits every clip crossing a sequence time, by cloning into free track space, trimming both halves and sliding the copy back. This is the only way to split without a UI — the API has no split/razor method.
Read-only structural dump of the active sequence: every track, every clip with in/out/start/end times, source, enabled state, and a synthesized stable key. This is the text representation of the timeline — prefer it over any screenshot.
Scans project items for transcripts and dumps the JSON schema of the first one found. Answers whether Premiere's transcript carries word-level timings or only segment-level.
Error handling is generic ('${command} failed: ${e.message}') with no recovery guidance, error classification, or actionable next steps. Violates recovery-guide pattern.
Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) exist in metadata but are not exposed as MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot infer safety properties.
ppro_move_at and ppro_clone_at duplicate concerns (both shift clips by offset). ppro_cleanup_plan and ppro_cleanup_apply could unify with a dry_run flag. Violates single-responsibility principle.