@engine-room/after-effects-mcp 0.3.1 → 0.5.0

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.
package/README.md CHANGED
@@ -222,13 +222,13 @@ If you forget the second step, nothing breaks silently: the next thing you ask f
222
222
  ---
223
223
 
224
224
  <details>
225
- <summary><b>🧰 All 70 tools</b></summary>
225
+ <summary><b>🧰 All 76 tools</b></summary>
226
226
 
227
227
  <br>
228
228
 
229
229
  | Group | Tools |
230
230
  |---|---|
231
- | Comps (7) | `list_comps`, `get_comp`, `get_comp_tree`, `create_comp`, `set_comp`, `delete_comp`, `set_active_comp` |
231
+ | Comps (10) | `list_comps`, `get_comp`, `get_comp_tree`, `create_comp`, `set_comp`, `delete_comp`, `set_active_comp`, `duplicate_comp`, `snapshot_comp`, `diff_comp` |
232
232
  | Layers (15) | `list_layers`, `get_layer_full`, `create_{text,shape,solid,null,adjustment,precomp,camera,light}_layer`, `duplicate_layer`, `delete_layer`, `set_layer`, `parent_layer`, `reorder_layer` |
233
233
  | Transforms (1) | `set_transform` — position, scale, rotation, anchor, opacity; 2D and 3D; optionally keyframed |
234
234
  | Keyframes (6) | `add_keyframe`, `remove_keyframe`, `get_keyframes`, `set_interpolation`, `set_temporal_ease`, `set_spatial_tangents` |
@@ -240,7 +240,8 @@ If you forget the second step, nothing breaks silently: the next thing you ask f
240
240
  | Markers (2) | `add_marker`, `remove_marker` |
241
241
  | Vision (2) | `screenshot_frame`, `screenshot_layer` |
242
242
  | Batch (1) | `run_batch` |
243
- | Footage (2) | `import_footage`, `create_footage_layer` |
243
+ | Footage (3) | `import_footage`, `create_footage_layer`, `purge_unused_footage` — remove the solids (or any footage) no comp uses, with a dry run |
244
+ | Audio (1) | `place_audio_cues` — a whole cue list placed as one undo step |
244
245
  | Motion Graphics (1) | `export_mogrt` — export a comp as a `.mogrt` template for Premiere |
245
246
  | Explore (2) | `get_project_summary`, `find_layers` |
246
247
  | Raw (1) | `run_jsx` |
@@ -248,16 +249,17 @@ If you forget the second step, nothing breaks silently: the next thing you ask f
248
249
  | Jobs (3) | `await_job`, `get_job`, `cancel_job` |
249
250
  | Setup (3) | `check_setup`, `setup_panel`, `init_project` |
250
251
  | Guidance (1) | `ae_guide` |
251
- | Issues (3) | `list_known_issues`, `log_issue`, `mark_issue_reported` |
252
+ | Issues (4) | `list_known_issues`, `log_issue`, `mark_issue_reported`, `archive_issue` |
252
253
 
253
254
  A few behave differently from the rest:
254
255
 
255
256
  - **`get_layer_full`** returns a layer's transforms with their keyframes and expressions, every effect with every parameter, masks, markers and visible bounds — in one call.
256
- - **`run_batch`** runs many operations in a single pass and counts as one undo step. Long batches stream progress.
257
- - **`screenshot_frame`** and **`screenshot_layer`** are for occasional checks, not for reviewing motion frame by frame. On large comps, `downsample: 2` renders at half resolution.
257
+ - **`run_batch`** runs many operations in a single pass. Up to 500 of them that is one undo step; past that it runs in the background, streams progress, and lands as one undo step per chunk — After Effects will not keep a single undo group across a long job, so the result tells the assistant exactly how many steps the work took. Ask for a single undo step at any size with `singleUndo`, at the cost of freezing After Effects until it finishes.
258
+ - **`screenshot_frame`** and **`screenshot_layer`** are for occasional checks, not for reviewing motion frame by frame. To judge movement, `screenshot_frame` takes several times at once and returns them as one labelled contact sheet — one image instead of several. On large comps it renders at reduced resolution unless you ask otherwise.
258
259
  - **`import_footage`** checks what After Effects actually produced. An SVG whose `viewBox` asks for one shape and imports at another is a known After Effects bug that renders as nothing at all, with no error — so the import is refused and explained rather than left to fail silently later.
259
260
  - **`export_mogrt`** writes a Motion Graphics template for Premiere. It suppresses the modal dialogs that would otherwise sit there waiting for a click, and can set the thumbnail from any frame you choose, rather than the first one — which is usually black if the comp fades up.
260
- - **`run_jsx`** runs arbitrary ExtendScript for anything the other tools don't cover.
261
+ - **`snapshot_comp`** and **`diff_comp`** answer "what did that change actually do" without reading the whole comp back — the assistant fingerprints it before the change and asks afterwards what moved.
262
+ - **`run_jsx`** runs arbitrary ExtendScript for anything the other tools don't cover. Long scripts can be run from a file so they never fill up the conversation.
261
263
  - **`ae_guide`** is how the assistant reads its own working guidance — the same text this server publishes as MCP resources and ships to Claude Code as skills.
262
264
 
263
265
  </details>
@@ -295,7 +297,7 @@ Start here: **ask your assistant to check the After Effects setup.** It reports
295
297
  }
296
298
  ```
297
299
 
298
- **The issue notebook.** These tools have rough edges. When your assistant hits one and works out a way around it, it writes the problem and the fix into `.ae-mcp/issues/` in your project folder — plain text files you can read or delete. The next session reads that notebook before guessing. The folder keeps itself out of version control.
300
+ **The issue notebook.** These tools have rough edges. When your assistant hits one and works out a way around it, it writes the problem and the fix into `.ae-mcp/issues/` in your project folder — plain text files you can read, edit or delete. The next time the same thing fails, the error itself points at that note, so nothing has to be re-read up front. Notes that go quiet for a month, or that a newer version has fixed, drop out of the list on their own (they are kept, just hidden), and a note about something the maintainers already know can be retired outright. The folder keeps itself out of version control.
299
301
 
300
302
  **Reporting a bug.** If the problem looks like ours rather than yours, you'll be offered the chance to pass it on, or you can start it yourself with `/report-ae-issue`. It writes the report, shows it to you, and only sends it once you say yes. Nothing about your own work — comp names, file paths, clients — goes into it. Sending needs the [GitHub CLI](https://cli.github.com); without it you get a prefilled link to click.
301
303