premiere-pro-mcp 1.13.0 → 1.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +126 -34
  3. package/artifacts/MCPBridgeCEP.zxp +0 -0
  4. package/cep-plugin/CSXS/manifest.xml +3 -3
  5. package/cep-plugin/index.html +1 -1
  6. package/cep-plugin/main.js +52 -1
  7. package/cep-plugin/updater.cjs +1 -1
  8. package/dist/bridge/file-bridge.d.ts +22 -1
  9. package/dist/bridge/file-bridge.js +101 -26
  10. package/dist/bridge/script-builder.js +30 -4
  11. package/dist/http-server.js +10 -9
  12. package/dist/index.js +31 -13
  13. package/dist/platform-capabilities.d.ts +64 -8
  14. package/dist/platform-capabilities.js +49 -1
  15. package/dist/resources/live-context-resources.d.ts +22 -0
  16. package/dist/resources/live-context-resources.js +494 -0
  17. package/dist/security/capabilities.js +21 -0
  18. package/dist/server.d.ts +3 -1
  19. package/dist/server.js +79 -15
  20. package/dist/telemetry.d.ts +7 -8
  21. package/dist/telemetry.js +11 -4
  22. package/dist/tool-capability-report.js +5 -2
  23. package/dist/tools/advanced.d.ts +28 -3
  24. package/dist/tools/advanced.js +166 -71
  25. package/dist/tools/audio.d.ts +218 -0
  26. package/dist/tools/audio.js +413 -41
  27. package/dist/tools/clipboard.js +28 -4
  28. package/dist/tools/competitor-gaps.d.ts +370 -0
  29. package/dist/tools/competitor-gaps.js +829 -0
  30. package/dist/tools/discovery.js +3 -3
  31. package/dist/tools/export.d.ts +167 -0
  32. package/dist/tools/export.js +360 -22
  33. package/dist/tools/health.d.ts +64 -7
  34. package/dist/tools/health.js +21 -10
  35. package/dist/tools/inspection.d.ts +55 -0
  36. package/dist/tools/inspection.js +252 -0
  37. package/dist/tools/interchange-analysis.d.ts +248 -0
  38. package/dist/tools/interchange-analysis.js +264 -0
  39. package/dist/tools/media-analysis.d.ts +243 -0
  40. package/dist/tools/media-analysis.js +216 -0
  41. package/dist/tools/media.d.ts +5 -0
  42. package/dist/tools/media.js +16 -3
  43. package/dist/tools/metadata.d.ts +16 -2
  44. package/dist/tools/metadata.js +81 -13
  45. package/dist/tools/playhead.js +17 -9
  46. package/dist/tools/project.d.ts +16 -1
  47. package/dist/tools/project.js +169 -33
  48. package/dist/tools/recovery.d.ts +35 -0
  49. package/dist/tools/recovery.js +62 -3
  50. package/dist/tools/sequence.d.ts +16 -0
  51. package/dist/tools/sequence.js +150 -45
  52. package/dist/tools/spot-workflows.d.ts +379 -0
  53. package/dist/tools/spot-workflows.js +519 -0
  54. package/dist/tools/text.d.ts +5 -0
  55. package/dist/tools/text.js +21 -4
  56. package/dist/tools/track-targeting.js +81 -14
  57. package/dist/tools/utility.d.ts +6 -3
  58. package/dist/tools/utility.js +153 -44
  59. package/dist/tools/uxp.d.ts +153 -0
  60. package/dist/tools/uxp.js +69 -0
  61. package/dist/workflows/tool-metadata.d.ts +1 -1
  62. package/dist/workflows/tool-metadata.js +6 -0
  63. package/dist/workflows/tool-packs.d.ts +36 -0
  64. package/dist/workflows/tool-packs.js +152 -0
  65. package/docs/editorial-workflow-host-validation.md +81 -0
  66. package/docs/licensed-host-report.template.json +20 -0
  67. package/docs/licensed-host-sweep.matrix.json +35 -0
  68. package/docs/licensed-host-sweep.md +73 -0
  69. package/docs/licensed-host-sweep.schema.json +70 -0
  70. package/docs/licensed-host-sweep.template.json +47 -0
  71. package/docs/mcp-2026-07-28-capabilities.md +87 -0
  72. package/docs/quickstart/README.md +16 -0
  73. package/docs/quickstart/en.md +70 -0
  74. package/docs/quickstart/es.md +77 -0
  75. package/docs/quickstart/ja.md +70 -0
  76. package/docs/quickstart/locales.json +18 -0
  77. package/docs/supported-actions.md +57 -21
  78. package/package.json +27 -10
  79. package/scripts/build-connector-installer.sh +4 -0
  80. package/scripts/check-quickstart-locales.mjs +34 -0
  81. package/scripts/create-licensed-host-sweep.mjs +75 -0
  82. package/scripts/generate-supported-actions.mjs +1 -2
  83. package/scripts/install-cep.ps1 +35 -1
  84. package/scripts/uninstall-cep.ps1 +34 -0
  85. package/scripts/uninstall-cep.sh +64 -0
  86. package/scripts/validate-licensed-host-report.mjs +94 -6
  87. package/scripts/validate-mcp-registry-metadata.mjs +34 -0
  88. package/scripts/validate-project-intake-host-report.mjs +211 -0
  89. package/scripts/verify-npm-package.mjs +119 -0
  90. package/scripts/verify-release-tag.mjs +36 -0
  91. package/uxp-plugin/README.md +2 -1
  92. package/uxp-plugin/commands.cjs +49 -1
  93. package/uxp-plugin/index.cjs +3 -1
  94. package/uxp-plugin/manifest.json +1 -1
  95. package/uxp-plugin/protocol.cjs +5 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,68 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.14.2] - 2026-08-28
10
+
11
+ ### Added
12
+
13
+ - Added dual-era MCP serving with the stable TypeScript SDK v2: modern
14
+ `2026-07-28` discovery and stateless request handling over HTTP and stdio,
15
+ with legacy protocol compatibility through `2025-11-25`.
16
+ - Added validated modern routing headers, cache hints, subscription-listen
17
+ support, a formal Premiere extension capability, and a machine-readable MCP
18
+ protocol report in `get_capabilities`.
19
+ - Added an evidence-backed capability matrix covering implemented, SDK-ready,
20
+ external-boundary, deprecated, and intentionally unsupported MCP surfaces.
21
+
22
+ ### Changed
23
+
24
+ - Migrated tool, resource, prompt, client, stdio, and Node HTTP integrations
25
+ from `@modelcontextprotocol/sdk` v1 to the split v2 packages and Standard
26
+ Schema registration APIs.
27
+
28
+ ### Fixed
29
+
30
+ - Restored strict JSON Schema 2020-12 tool compatibility and corrected legacy
31
+ CEP argument contracts, Premiere Time units, Adobe Media Encoder output
32
+ paths, active-sequence verification, metadata readback, XMP patch merging,
33
+ and single-extension UXP frame exports.
34
+ - Replaced false-success responses for structural edits, duplicate
35
+ consolidation, effect copying, nesting, deletion, and other host mutations
36
+ with verified outcomes or explicit fail-closed errors.
37
+ - Added bounded UXP selection lift and native transition adapters while keeping
38
+ unavailable track-management and global-redo capabilities explicit.
39
+
40
+ ### Safety
41
+
42
+ - Live Premiere resources remain private and uncached, and tool discovery is
43
+ private-cache scoped. The tasks extension and OAuth discovery are not
44
+ advertised without the durable storage and authorization infrastructure they
45
+ require.
46
+
47
+ ## [1.14.1] - 2026-08-27
48
+
49
+ ### Fixed
50
+
51
+ - Made npm package verification isolate its temporary tarball and select the
52
+ package matching `package.json`, avoiding a current npm CLI packaging
53
+ regression before publication.
54
+
55
+ ## [1.14.0] - 2026-08-27
56
+
57
+ ### Added
58
+
59
+ - Added focused `essential`, `inspection`, `delivery`, and `captions` tool packs
60
+ so compatible MCP clients can begin with a smaller task-specific catalog.
61
+ - Added `inspect_sequence_review_report`, a read-only, handoff-oriented sequence
62
+ report, and explicit MCP output schemas for every registered tool.
63
+
64
+ ### Safety
65
+
66
+ - Tool packs change discoverability, not authority. Review reports redact media
67
+ paths by default and include marker comments only with explicit opt-in.
68
+ - Package and response-contract checks remain distinct from licensed Premiere
69
+ host verification.
70
+
9
71
  ## [1.13.0] - 2026-08-22
10
72
 
11
73
  ### Added
package/README.md CHANGED
@@ -2,15 +2,17 @@
2
2
 
3
3
  # MCP for Adobe Premiere Pro
4
4
 
5
+ <!-- mcp-name: io.github.leancoderkavy/premiere-pro -->
6
+
5
7
  [![MCP Toplist](https://mcptoplist.com/badge/glama%2Fleancoderkavy%2Fpremiere-pro-mcp.svg)](https://mcptoplist.com/server/glama%2Fleancoderkavy%2Fpremiere-pro-mcp)
6
8
 
7
9
  **Give compatible AI assistants structured control over supported Adobe Premiere Pro workflows.**
8
10
 
9
- 288 core tools across 34 modules, 4 resources, and 11 guided workflows. A connected UXP host adds 50 capability-gated tools.
11
+ 320 core tools across 37 modules, 14 resources, and 11 guided workflows. A connected UXP host adds 54 capability-gated tools.
10
12
 
11
13
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
12
14
  [![Node.js](https://img.shields.io/badge/Node.js-20.19%2B-green.svg)](https://nodejs.org)
13
- [![MCP](https://img.shields.io/badge/MCP-1.29-purple.svg)](https://modelcontextprotocol.io)
15
+ [![MCP](https://img.shields.io/badge/MCP-2026--07--28-purple.svg)](https://modelcontextprotocol.io/specification/2026-07-28)
14
16
  [![npm](https://img.shields.io/npm/v/premiere-pro-mcp.svg)](https://www.npmjs.com/package/premiere-pro-mcp)
15
17
  [![Fly.io](https://img.shields.io/badge/Fly.io-deployed-7C3AED.svg)](https://premiere-pro-mcp.fly.dev)
16
18
  [![Premiere Pro](https://img.shields.io/badge/Premiere%20Pro-2020--2026-9999FF.svg)](https://www.adobe.com/products/premiere.html)
@@ -29,21 +31,33 @@ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that l
29
31
  "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."
30
32
  ```
31
33
 
32
- The AI handles the entire workflow through 288 core tools spanning the supported ExtendScript, QE DOM, revisioned project-context retrieval, safe edit-planning, project-intake preview, and connection-verification surfaces. A compatible, authenticated UXP panel adds 50 documented, capability-gated tools without replacing the production CEP bridge.
34
+ The AI handles the entire workflow through 320 core tools spanning the supported ExtendScript, QE DOM, local media and interchange analysis, revisioned project-context retrieval, safe edit-planning, project-intake preview, review handoff, and connection-verification surfaces. A compatible, authenticated UXP panel adds 54 documented, capability-gated tools without replacing the production CEP bridge.
33
35
 
34
- ### Latest release: 1.13.0
36
+ ### Latest release: 1.14.2
35
37
 
36
- - **MOGRT text and graphics:** `set_effect_property` now accepts string-backed
37
- parameters with safe serialization and readback status.
38
- - **Effect discovery clarity:** an empty legacy QE effect catalog now returns a
39
- no-mutation capability response and directs connected hosts to the documented
40
- UXP catalog/add workflow.
41
- - **Verification clarity:** property readback remains distinct from playback or
42
- exported-frame verification in a licensed Premiere Pro host.
38
+ - **Focused discovery:** compatible MCP clients can select essential,
39
+ inspection, delivery, or captions tool packs instead of beginning with the
40
+ full catalog.
41
+ - **Review handoff:** `inspect_sequence_review_report` returns a read-only,
42
+ path-redacted sequence report, with marker comments only when requested.
43
+ - **Interoperability:** all registered MCP tools now declare explicit output
44
+ schemas; this release does not substitute automated checks for licensed-host
45
+ verification.
46
+ - **Reliable packaging:** npm package verification now isolates its temporary
47
+ tarball, keeping the validated distribution path compatible with the current
48
+ npm CLI.
43
49
 
44
- See the [v1.13.0 release notes](https://github.com/leancoderkavy/premiere-pro-mcp/releases/tag/v1.13.0)
50
+ See the [v1.14.2 release notes](https://github.com/leancoderkavy/premiere-pro-mcp/releases/tag/v1.14.2)
45
51
  for complete details. Live installation in Premiere Pro still requires host verification.
46
52
 
53
+ ### Current MCP protocol support
54
+
55
+ The server uses the stable TypeScript SDK v2 and serves the `2026-07-28`
56
+ stateless protocol over HTTP and stdio, while retaining legacy MCP compatibility
57
+ through `2025-11-25`. Modern clients receive discovery, validated routing headers,
58
+ cache hints, subscription-stream support, and the formal Premiere extension
59
+ capability. See the [complete MCP capability and boundary report](docs/mcp-2026-07-28-capabilities.md).
60
+
47
61
  ---
48
62
 
49
63
  ## For editors evaluating an AI workflow
@@ -58,20 +72,44 @@ or small test sequence.
58
72
  For product context, see the [Adobe Premiere AI Assistant and MCP comparison](https://premiere-pro-mcp.com/blog/adobe-premiere-ai-assistant-vs-mcp/)
59
73
  and the [Claude Desktop setup guide](https://premiere-pro-mcp.com/blog/claude-desktop-premiere-pro-mcp-setup/).
60
74
 
75
+ If you are deciding between a single local project, an Adobe Production on shared
76
+ storage, or a remote Team Project, use the [Premiere Pro collaboration workflow
77
+ guide](https://premiere-pro-mcp.com/premiere-pro-collaboration-workflow/) before
78
+ you evaluate an MCP path. It links the relevant Adobe guidance, makes no project
79
+ inspection request, and ends with the same read-only connection check.
80
+
81
+ For a concrete first Project Intake preview, choose one of the three
82
+ [schema-checked, no-sensitive-data starter templates](https://premiere-pro-mcp.com/project-intake/#starter-template).
83
+ They are evaluation samples only: a human policy owner must review and replace
84
+ their bins, media rules, and organization rules before a facility uses one.
85
+
61
86
  ---
62
87
 
63
88
  ## Quick Start
64
89
 
65
90
  ### Easiest supported path: Claude Desktop
66
91
 
67
- 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.13.0/premiere-pro-mcp-1.13.0.mcpb).
92
+ 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.14.2/premiere-pro-mcp-1.14.2.mcpb).
68
93
  2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
69
- 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.13.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.
94
+ 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.14.2/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.
70
95
  4. Restart Premiere, open a project, then open **Window > Extensions > MCP for Adobe Premiere Pro**.
71
96
  5. In Claude, enter: `Safely check my Premiere connection with verify_premiere_connection. Make no changes.`
72
97
 
73
98
  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.
74
99
 
100
+ ### First proof, before the first edit
101
+
102
+ ![Illustrated local Premiere MCP workflow](landing/public/premiere-pro-mcp-demo-poster.png)
103
+
104
+ *This is an illustrated workflow, not a Premiere panel screenshot or licensed-host proof.*
105
+
106
+ 1. Open a copied test project and an active sequence in Premiere.
107
+ 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.
108
+ 3. Run `premiere-pro-mcp --doctor` to check only local package/configuration readiness.
109
+ 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.
110
+
111
+ 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.
112
+
75
113
  ### Other AI assistants
76
114
 
77
115
  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.
@@ -128,6 +166,16 @@ premiere-pro-mcp --doctor
128
166
 
129
167
  Then ask your MCP client to run `verify_premiere_connection`. The check is read-only.
130
168
 
169
+ #### Remove the CEP connector
170
+
171
+ Fully quit Premiere, then remove only this connector:
172
+
173
+ ```bash
174
+ premiere-pro-mcp --uninstall-cep
175
+ ```
176
+
177
+ 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).
178
+
131
179
  </details>
132
180
 
133
181
  ---
@@ -290,11 +338,11 @@ From a clone of this repository:
290
338
  ```bash
291
339
  codex plugin marketplace add .
292
340
  codex plugin add premiere-pro@premiere-pro-mcp
293
- npx -y premiere-pro-mcp@1.13.0 --install-cep
341
+ npx -y premiere-pro-mcp@1.14.2 --install-cep
294
342
  ```
295
343
 
296
344
  Restart Premiere Pro and start a new Codex session after installation. The plugin
297
- launches `premiere-pro-mcp@1.13.0` through `npx`; the separate CEP installation is
345
+ launches `premiere-pro-mcp@1.14.2` through `npx`; the separate CEP installation is
298
346
  required because the MCP server communicates with the running Premiere host through
299
347
  the local bridge.
300
348
 
@@ -314,7 +362,7 @@ For Claude Code, add this repository as a marketplace and install the plugin:
314
362
  Then install the Premiere bridge and start a new Claude Code session:
315
363
 
316
364
  ```bash
317
- npx -y premiere-pro-mcp@1.13.0 --install-cep
365
+ npx -y premiere-pro-mcp@1.14.2 --install-cep
318
366
  ```
319
367
 
320
368
  The Claude Code package lives in
@@ -353,13 +401,36 @@ installed separately.
353
401
  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.
354
402
 
355
403
  MCP `tools/list` is filtered to the active authority profile. The default
356
- `inspect,edit,export,filesystem` profile advertises 286 of the 288 registered
404
+ `inspect,edit,export,filesystem` profile advertises 318 of the 320 registered
357
405
  tools and omits `execute_extendscript` and `evaluate_expression`, which require
358
406
  explicit `unsafe-script` authority. `ping` and `get_capabilities` remain visible
359
407
  under every profile so a restricted or misconfigured server can still explain
360
408
  its state. The call-time capability guard remains authoritative even if listing
361
409
  metadata is wrong.
362
410
 
411
+ ### Workflow-scoped discovery packs and structured outputs
412
+
413
+ By default, the full permitted catalog remains available. Set
414
+ `PREMIERE_MCP_TOOL_PACKS` to `essential`, `inspection`, `delivery`, `captions`,
415
+ or a comma-separated combination such as `inspection,captions` to reduce the
416
+ tool discovery and registered session surface for a focused client. `full` is the explicit
417
+ full-catalog mode and cannot be combined with another pack. `ping` and
418
+ `get_capabilities` remain listed for diagnosis, and every registered call still
419
+ passes through the same capability guard; a pack never grants authority.
420
+
421
+ Every listed tool now declares the same machine-readable result envelope through
422
+ MCP `outputSchema`: `ok`, `tool`, plus `data` on success or `error` on failure.
423
+ The tool-specific `data` shape remains versioned by the individual tool result,
424
+ so clients can reliably distinguish transport success from a Premiere or local
425
+ operation failure without parsing the text block.
426
+
427
+ `inspect_sequence_review_report` creates one read-only handoff report from
428
+ Premiere timeline readback: sequence structure, primary-track gaps, disabled
429
+ clips, muted tracks, marker timing, and offline-source evidence. It never
430
+ returns media paths; marker comments are omitted unless explicitly requested.
431
+ The report is not proof of rendered pixels, audio quality, caption accuracy,
432
+ rights, or editorial approval.
433
+
363
434
  The MCP handshake reads `serverInfo.version` from the installed `package.json`,
364
435
  so clients receive the package version that is actually running rather than a
365
436
  separately maintained literal.
@@ -433,7 +504,7 @@ PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp
433
504
 
434
505
  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.
435
506
 
436
- When enabled, MCP discovery includes the original 19 UXP tools, 21 consolidated stable workflows, and eight third-wave tools. The first expansion covers effects, deterministic timeline selection, selection batches, scene detection, proxy/ingest, relink, metadata, color conformance, Source Monitor audition, storage, and least-privilege workspace access. The second adds Project-panel selection, marker CRUD, bin organization, sequence settings, imports, typed effect parameters/keyframes, track-item transforms, 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, and transactional source trim/framing documented in [the third-wave workflow matrix](docs/third-wave-uxp-workflows.md). 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) and [the next-ten workflow matrix](docs/uxp-next-ten-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.
507
+ When enabled, MCP discovery includes 54 capability-gated UXP additions. The first expansion covers effects, deterministic timeline selection, selection batches, scene detection, proxy/ingest, relink, metadata, color conformance, Source Monitor audition, storage, and least-privilege workspace access. The second adds Project-panel selection, marker CRUD, bin organization, sequence settings, imports, typed effect parameters/keyframes, track-item transforms, 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, and transactional source trim/framing 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 plus native video-transition listing and transactions; it does not claim direct empty-track create/delete or global redo support. 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) and [the next-ten workflow matrix](docs/uxp-next-ten-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.
437
508
 
438
509
  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.
439
510
 
@@ -508,11 +579,11 @@ The file-based IPC bridge is simple, reliable, and works across macOS and Window
508
579
 
509
580
  ---
510
581
 
511
- ## Tools (288 core total; 286 under the default profile; 336 with a connected UXP bridge)
582
+ ## Tools (320 core total; 318 under the default profile; 372 with a connected UXP bridge)
512
583
 
513
584
  The [complete supported-actions catalog](docs/supported-actions.md) lists every
514
585
  registered core tool, the two tools restricted behind explicit `unsafe-script`
515
- authority, and all 50 authenticated UXP additions with their current action or mode
586
+ authority, and all 54 authenticated UXP additions with their current action or mode
516
587
  values. It is generated from the same MCP registration surface returned to clients;
517
588
  the tables below are a shorter workflow-oriented overview.
518
589
 
@@ -556,8 +627,7 @@ the tables below are a shorter workflow-oriented overview.
556
627
  | `ripple_delete` | Remove clip and close gap (QE) |
557
628
  | `roll_edit` / `slide_edit` / `slip_edit` | Professional trim modes (QE) |
558
629
  | `move_clip_to_track` | Move between tracks (QE) |
559
- | `reverse_clip` | Reverse direction (QE, host-dependent) |
560
- | `speed_change` / `set_clip_speed_qe` | Unavailable: Premiere has no supported scripting API for changing clip speed |
630
+ | `reverse_clip` / `speed_change` / `set_clip_speed_qe` | Unavailable: Premiere has no supported scripting API for changing a timeline clip's speed or direction |
561
631
  | `split_clip` / `trim_clip` / `move_clip` | Basic edits; trim verifies source points and visible timeline edges |
562
632
  | `set_clip_properties` | Opacity, scale, rotation, position (speed requests fail before mutation) |
563
633
  | `link_selection` / `unlink_selection` | Link/unlink A/V |
@@ -571,8 +641,8 @@ the tables below are a shorter workflow-oriented overview.
571
641
  > to blend adjacent source frames. See [issue #21](https://github.com/leancoderkavy/premiere-pro-mcp/issues/21).
572
642
 
573
643
  > **Speed, caption, and visual-keyframe boundaries:** Premiere Pro 26.3 exposes no supported
574
- > scripting setter or Time Remapping component for timeline-clip speed. `speed_change`,
575
- > `set_clip_speed_qe`, and `set_clip_properties` with `speed` now stop before host mutation;
644
+ > scripting setter or Time Remapping component for timeline-clip speed or direction. `reverse_clip`,
645
+ > `speed_change`, `set_clip_speed_qe`, and `set_clip_properties` with `speed` now stop before host mutation;
576
646
  > use the Speed/Duration UI or pre-render retimed media. `add_text_overlay` likewise stops
577
647
  > before mutation because a raw-text-to-caption API is not exposed; import an `.srt`/`.vtt`
578
648
  > and use `create_caption_track`, or use a MOGRT/PNG overlay. Keyframe and caption-track
@@ -673,7 +743,7 @@ than presenting UI-only operations as available tools.
673
743
  | `set_offline` / `has_proxy` / `detach_proxy` | Offline/proxy management |
674
744
  | `set_override_frame_rate` | Override FPS |
675
745
  | `set_scale_to_frame_size` | Auto-scale to sequence frame |
676
- | `get_xmp_metadata` / `set_xmp_metadata` | Raw XMP access |
746
+ | `get_xmp_metadata` / `set_xmp_metadata` | Raw XMP access; writes merge a well-formed patch without removing unrelated fields |
677
747
  | `get_color_space` | Color space info |
678
748
 
679
749
  ### Sequence Management (11)
@@ -708,15 +778,29 @@ Track targeting, batch operations, markers, audio levels, motion/transform, meta
708
778
 
709
779
  ## MCP Resources
710
780
 
711
- The server exposes four LLM context resources and eleven workflow prompts:
781
+ The server exposes fourteen LLM context resources and eleven workflow prompts:
712
782
 
713
783
  | Resource URI | Description |
714
784
  | :----------- | :---------- |
715
785
  | `config://premiere-instructions` | Best practices: workflow order, timeline rules, effect tips, error handling |
716
786
  | `config://extendscript-reference` | Complete ExtendScript API reference for writing custom scripts |
717
787
  | `config://premiere-workflows` | Machine-readable catalog for rough cuts, dialogue cleanup, captions, and delivery |
718
-
719
- These are automatically available to MCP clients that support resources, giving the AI deep context about how to drive Premiere Pro effectively.
788
+ | `config://premiere-project-context` | Revisioned local project-context indexing and retrieval workflow |
789
+ | `premiere://project/info` | Fresh, path-redacted current-project and active-sequence summary |
790
+ | `premiere://project/sequences` | Bounded sequence inventory with stable Premiere IDs |
791
+ | `premiere://project/media` | Bounded, path-redacted project-media inventory |
792
+ | `premiere://project/bins` | Bounded, path-redacted project-bin inventory |
793
+ | `premiere://timeline/active` | Bounded active-timeline tracks, clips, and markers snapshot |
794
+ | `premiere://effects/available` | Bounded video/audio effect catalog for planning |
795
+ | `premiere://effects/applied` | Bounded active-timeline component inventory |
796
+ | `premiere://transitions/available` | Bounded video/audio transition catalog for planning |
797
+ | `premiere://export/presets` | Bounded export-preset names and formats, without native paths |
798
+ | `premiere://project/metadata` | Read-only project and active-timeline summary, without paths or timestamps |
799
+
800
+ The ten `premiere://` snapshots are read-only CEP bridge requests. They include a
801
+ revision token for stale-state detection and omit native media, project-tree, preset,
802
+ and output paths. A successful snapshot proves bridge readback only—not licensed-host
803
+ feature coverage, playback, rendering, or editorial correctness.
720
804
 
721
805
  ---
722
806
 
@@ -801,10 +885,18 @@ Then connect with:
801
885
  | `POSTHOG_DISTINCT_ID` | Optional stable anonymous server identifier | Fly machine ID or random boot ID |
802
886
 
803
887
  When PostHog is enabled, the server records `mcp_connection_attempt`,
804
- `mcp_request`, `mcp_request_rejected`, and `mcp_tool_call`. Events contain operational fields such as
805
- method, tool name, outcome, status code, and duration. Authentication tokens,
806
- IP addresses, MCP arguments, project paths, media names, and tool results are
807
- never sent. Person profiles are disabled for these events.
888
+ `mcp_request`, `mcp_request_rejected`, and `mcp_tool_call`. It also records
889
+ `premiere_mcp_activation_completed` only after the read-only
890
+ `verify_premiere_connection` check confirms the selected bridge, an open
891
+ project, and an active sequence. Events contain bounded operational fields such
892
+ as method, tool name, outcome, status code, duration, and selected bridge.
893
+ Authentication tokens, IP addresses, MCP arguments, project paths, media names,
894
+ and tool results are never sent. Person profiles are disabled for these events.
895
+
896
+ This signal is an aggregate emission, not proof that an analytics provider
897
+ received it, a count of unique people or editors, or evidence that an editing
898
+ workflow succeeded. It does not carry a person or editor identifier, so it
899
+ cannot safely infer "first value."
808
900
 
809
901
  ---
810
902
 
@@ -815,7 +907,7 @@ premiere-pro-mcp/
815
907
  ├── src/
816
908
  │ ├── index.ts # Entry point — stdio transport setup
817
909
  │ ├── http-server.ts # Entry point — HTTP/SSE transport (Fly.io / remote)
818
- │ ├── server.ts # MCP server — registers 288 tools, filtered by authority profile
910
+ │ ├── server.ts # MCP server — registers 320 tools, filtered by authority profile
819
911
  │ ├── bridge/
820
912
  │ │ ├── file-bridge.ts # File-based IPC (write .jsx, poll .json)
821
913
  │ │ └── script-builder.ts # ExtendScript generator with ES3 helpers
Binary file
@@ -1,8 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.13.0" ExtensionBundleName="MCP for Adobe Premiere Pro">
2
+ <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.14.2" ExtensionBundleName="MCP for Adobe Premiere Pro">
3
3
  <ExtensionList>
4
- <Extension Id="com.mcp.premiere.bridge.panel" Version="1.13.0"/>
5
- <Extension Id="com.mcp.premiere.bridge.headless" Version="1.13.0"/>
4
+ <Extension Id="com.mcp.premiere.bridge.panel" Version="1.14.2"/>
5
+ <Extension Id="com.mcp.premiere.bridge.headless" Version="1.14.2"/>
6
6
  </ExtensionList>
7
7
  <ExecutionEnvironment>
8
8
  <HostList>
@@ -81,7 +81,7 @@
81
81
  <section class="update-section" aria-live="polite">
82
82
  <div class="update-copy">
83
83
  <span class="section-label">Connector updates</span>
84
- <strong id="updateTitle">Version 1.13.0</strong>
84
+ <strong id="updateTitle">Version 1.14.2</strong>
85
85
  <span id="updateDetail">Checking for updates…</span>
86
86
  </div>
87
87
  <button id="btnUpdate" class="button button-update" onclick="handleUpdateClick()" type="button" disabled>
@@ -8,6 +8,8 @@ var pollInterval = null;
8
8
  var commandCount = 0;
9
9
  var tempDir = "";
10
10
  var POLL_MS = 200;
11
+ var HEARTBEAT_MS = 1000;
12
+ var heartbeatInterval = null;
11
13
 
12
14
  // ---- Logging ----
13
15
  function log(msg, cls) {
@@ -136,12 +138,57 @@ function writeFile(filePath, content) {
136
138
  }
137
139
  }
138
140
 
141
+ // Publish responses atomically so the MCP process never sees a partially-written
142
+ // JSON file. The staging suffix is not a response filename the server will read.
143
+ function writeResponseFile(filePath, content) {
144
+ var stagedPath = filePath + ".staged";
145
+ try {
146
+ fs.writeFileSync(stagedPath, content, "utf-8");
147
+ fs.renameSync(stagedPath, filePath);
148
+ return true;
149
+ } catch (e) {
150
+ deleteFile(stagedPath);
151
+ log("Error publishing " + filePath + ": " + e.message, "err");
152
+ return false;
153
+ }
154
+ }
155
+
139
156
  function deleteFile(filePath) {
140
157
  try {
141
158
  if (fs.existsSync(filePath)) fs.unlinkSync(filePath);
142
159
  } catch (e) {}
143
160
  }
144
161
 
162
+ // The heartbeat carries only protocol state. It is published by rename so a
163
+ // server never observes partial JSON, and an older server can ignore it.
164
+ function writeBridgeHeartbeat() {
165
+ if (!tempDir) return;
166
+ var heartbeatPath = path.join(tempDir, "bridge-heartbeat.json");
167
+ var stagedPath = heartbeatPath + "." + ENGINE_ID + ".staged";
168
+ try {
169
+ fs.writeFileSync(stagedPath, JSON.stringify({
170
+ protocolVersion: 1,
171
+ state: bridgeRunning ? "running" : "waiting"
172
+ }), "utf-8");
173
+ fs.renameSync(stagedPath, heartbeatPath);
174
+ } catch (e) {
175
+ deleteFile(stagedPath);
176
+ }
177
+ }
178
+
179
+ function startBridgeHeartbeat() {
180
+ if (heartbeatInterval) clearInterval(heartbeatInterval);
181
+ writeBridgeHeartbeat();
182
+ heartbeatInterval = setInterval(writeBridgeHeartbeat, HEARTBEAT_MS);
183
+ }
184
+
185
+ function stopBridgeHeartbeat() {
186
+ if (heartbeatInterval) clearInterval(heartbeatInterval);
187
+ heartbeatInterval = null;
188
+ // Keep the last heartbeat in place. Its age lets newer servers diagnose a
189
+ // stopped connector, while concurrent visible/headless panels stay isolated.
190
+ }
191
+
145
192
  // ---- Script Execution ----
146
193
  function executeScript(script, callback) {
147
194
  // Script is already wrapped in an IIFE by the MCP server's buildScript(),
@@ -234,7 +281,7 @@ function processOneCommand(cmdFileName) {
234
281
  }
235
282
  }
236
283
 
237
- writeFile(resFilePath, response);
284
+ writeResponseFile(resFilePath, response);
238
285
  });
239
286
  }
240
287
 
@@ -249,6 +296,7 @@ function startBridge() {
249
296
 
250
297
  ensureDir(tempDir);
251
298
  bridgeRunning = true;
299
+ startBridgeHeartbeat();
252
300
  setStatus("waiting", "Connector running");
253
301
  log("Connector started and ready for safe checks.", "ok");
254
302
 
@@ -264,6 +312,8 @@ function startBridge() {
264
312
 
265
313
  function stopBridge() {
266
314
  bridgeRunning = false;
315
+ writeBridgeHeartbeat();
316
+ stopBridgeHeartbeat();
267
317
  if (pollInterval) clearInterval(pollInterval);
268
318
  pollInterval = null;
269
319
 
@@ -423,6 +473,7 @@ function handleUpdateClick() {
423
473
  // one to click Start, and macOS periodically purges the temp dir — so create it
424
474
  // rather than gating auto-start on its existence.
425
475
  ensureDir(tempDir);
476
+ startBridgeHeartbeat();
426
477
  log("Auto-starting bridge...");
427
478
  setTimeout(startBridge, 500);
428
479
  setTimeout(checkForUpdates, 1200);
@@ -7,7 +7,7 @@
7
7
  })(this, function () {
8
8
  "use strict";
9
9
 
10
- var CURRENT_VERSION = "1.13.0";
10
+ var CURRENT_VERSION = "1.14.2";
11
11
  var LATEST_RELEASE_API =
12
12
  "https://api.github.com/repos/leancoderkavy/premiere-pro-mcp/releases/latest";
13
13
  var RELEASES_URL =
@@ -1,18 +1,39 @@
1
+ export declare const BRIDGE_HEARTBEAT_FILE = "bridge-heartbeat.json";
2
+ export declare const BRIDGE_HEARTBEAT_STALE_MS = 3000;
1
3
  export interface BridgeOptions {
2
4
  tempDir?: string;
3
5
  timeoutMs?: number;
6
+ /**
7
+ * Reject a health-style command without publishing it when a current CEP
8
+ * connector explicitly reports that it is waiting or its heartbeat is stale.
9
+ * A missing heartbeat remains compatible with older installed connectors.
10
+ */
11
+ failFastOnUnreadyHeartbeat?: boolean;
4
12
  }
5
13
  export interface CommandResult {
6
14
  success: boolean;
7
15
  data?: unknown;
8
16
  error?: string;
9
17
  }
18
+ export type BridgeLivenessState = "running" | "waiting" | "stale" | "unknown";
19
+ export interface BridgeLiveness {
20
+ state: BridgeLivenessState;
21
+ ageMs: number | null;
22
+ }
10
23
  export declare function getTempDir(options?: BridgeOptions): string;
24
+ /**
25
+ * Inspect the CEP panel's small, content-free heartbeat. This never creates a
26
+ * directory or reads command, response, project, or media data. Unknown is
27
+ * intentionally non-fatal so a server upgrade stays compatible with older CEP
28
+ * panels that do not publish a heartbeat yet.
29
+ */
30
+ export declare function getBridgeLiveness(options?: BridgeOptions, nowMs?: number): BridgeLiveness;
11
31
  /**
12
32
  * Send a command (ExtendScript) to the CEP plugin and wait for a response.
13
33
  *
14
34
  * Protocol:
15
- * 1. Write script to <tempDir>/cmd_<id>.jsx
35
+ * 1. Write the script to a staging file, then atomically publish it as
36
+ * <tempDir>/cmd_<id>.jsx. The CEP panel only sees complete commands.
16
37
  * 2. CEP plugin picks it up, executes, writes result to <tempDir>/res_<id>.json
17
38
  * 3. We poll for the response file and parse it.
18
39
  */