@synthetic-ai/ae-mcp 2.10.0-dev.1 → 2.10.3

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.
@@ -0,0 +1,1161 @@
1
+ {
2
+ "msg.bridge.nonJson": "Bridge returned non-JSON: {raw}",
3
+ "msg.bridge.parseFailed": "Failed to parse panel response: {error}. Raw (first 300 chars): {raw}",
4
+ "msg.bridge.scriptTooLarge": "Script exceeds 500KB size limit",
5
+ "msg.bridge.timeout": "Bridge timed out after {timeoutMs}ms. Either the Synthetic AE MCP panel isn't running (Window > Extensions > Synthetic AE MCP > Start Bridge), or the ExtendScript op exceeded the panel's per-call timeout. For ops on hundreds of comps, also re-install the latest signed .zxp from https://synthetic.com.ar/dashboard/downloads — older panels capped per-call execution at 25 s regardless of this setting.",
6
+ "msg.bridge.toolNotRegistered": "Tool '{tool}' not registered on the AE bridge. Is the panel started?",
7
+ "msg.cli.help.doctor": "Diagnose your setup before opening a support ticket",
8
+ "msg.cli.help.envAerender": "Override path to aerender.exe",
9
+ "msg.cli.help.envAfterFx": "Override path to AfterFX.exe",
10
+ "msg.cli.help.envLang": "Language for tool descriptions and messages: en, es, pt-BR, fr, de, ja (overrides the panel setting)",
11
+ "msg.cli.help.envLicense": "License key (required for tools that need it)",
12
+ "msg.cli.help.envTitle": "Environment variables:",
13
+ "msg.cli.help.footer": "By Synthetic — https://synthetic.com.ar/ae-mcp",
14
+ "msg.cli.help.help": "Show this help message",
15
+ "msg.cli.help.start": "Start the MCP server (stdio transport)",
16
+ "msg.cli.help.title": "Synthetic After Effects MCP — 220+ tools for After Effects via MCP (v{version})",
17
+ "msg.cli.help.usage": "Usage:",
18
+ "msg.cli.help.version": "Show version",
19
+ "msg.doctor.aeFound": "After Effects found: {path}",
20
+ "msg.doctor.aeNotFound": "After Effects not found in the default install locations. Set AE_AFTERFX_PATH if it's installed elsewhere.",
21
+ "msg.doctor.bridgeNotWritable": "Bridge temp directory is not writable: {error}",
22
+ "msg.doctor.bridgeWritable": "Bridge temp directory is writable.",
23
+ "msg.doctor.licenseActive": "active",
24
+ "msg.doctor.licenseBypass": "Using AE_MCP_LICENSE_BYPASS (dev mode) — license check skipped.",
25
+ "msg.doctor.licenseFailed": "License check failed: {message}",
26
+ "msg.doctor.licenseMissing": "AE_MCP_LICENSE is not set. Get a license at https://synthetic.com.ar",
27
+ "msg.doctor.licenseValid": "License valid ({plan})",
28
+ "msg.doctor.modePanel": "Mode: panel (CEP bridge) — tools run through the After Effects panel.",
29
+ "msg.doctor.modeStandalone": "Mode: standalone — each tool call launches AfterFX.exe in the background.",
30
+ "msg.doctor.nodeOk": "Node.js {version} (>=18 required)",
31
+ "msg.doctor.nodeTooOld": "Node.js {version} — needs to be 18 or newer",
32
+ "msg.doctor.stillStuck": "Still stuck? Paste this output into a ticket at https://synthetic.com.ar/dashboard/support",
33
+ "msg.doctor.title": "Synthetic After Effects MCP — doctor (v{version})",
34
+ "msg.fs.binaryNotFound": "{binary} not found: {path}",
35
+ "msg.fs.dialogHelperNotFound": "AE dialog helper not found: {path}",
36
+ "msg.fs.importDirNotFound": "Import directory not found: {path}",
37
+ "msg.fs.importFileNotFound": "Import file not found: {path}",
38
+ "msg.fs.mogrtOutputDirNotFound": "MOGRT output directory not found: {path}",
39
+ "msg.fs.projectNotFound": "Project not found: {path}",
40
+ "msg.fs.proxyFileNotFound": "Proxy file not found: {path}",
41
+ "msg.fs.replacementFileNotFound": "Replacement file not found: {path}",
42
+ "msg.fs.searchRootNotFound": "Search root directory not found: {path}",
43
+ "msg.fs.sequenceFileNotFound": "Sequence first file not found: {path}",
44
+ "msg.healthcheck.notePermission": "If After Effects shows 'Unable to execute script... Permission denied', enable the Scripts and Expressions file/network access preference, then rerun the tool.",
45
+ "msg.healthcheck.noteResultFile": "Most MCP tools return structured JSON by asking After Effects JSX to write a temporary result file.",
46
+ "msg.healthcheck.noteSingleton": "{binary} is a singleton desktop app; the MCP serializes scripts with a global lock to avoid overlapping script execution.",
47
+ "msg.healthcheck.scriptAccessPreference": "After Effects > Preferences > Scripting & Expressions > Allow Scripts to Write Files and Access Network",
48
+ "msg.license.getLicense": "Get a license at https://synthetic.com.ar",
49
+ "msg.license.invalid": "invalid",
50
+ "msg.license.invalidBypass": "Invalid bypass token.",
51
+ "msg.license.invalidOrMissing": "Invalid or missing license.",
52
+ "msg.license.missing": "No license key. Set AE_MCP_LICENSE in your MCP config. Get a license at https://synthetic.com.ar",
53
+ "msg.license.required": "License required",
54
+ "msg.license.status": "License: {message}",
55
+ "msg.license.unreachable": "License server unreachable.",
56
+ "msg.license.unreachableOffline": "License server unreachable. Check your internet connection.",
57
+ "msg.license.unreachableRetry": "License server unreachable. Will retry next call.",
58
+ "msg.panel.emptyResult": "ExtendScript engine returned an empty result. Common causes: (1) a modal dialog is blocking scripting inside AE (check for a hidden save/warning prompt behind the app window); (2) the AE ExtendScript engine is in a wedged state — try File > Close Project + reopen, or restart AE; (3) the script raised a syntax error before the panel's wrapper could catch it. Panel v{version}.",
59
+ "msg.panel.execTimeout": "ExtendScript execution timed out after {seconds} seconds. After Effects may be busy or unresponsive.",
60
+ "msg.panelRepair.backupFailed": "backup {file}: {error} (needs admin? Program Files requires elevated write)",
61
+ "msg.panelRepair.crashed": "Panel self-repair crashed: {error}",
62
+ "msg.panelRepair.failed": "Panel self-repair failed: {reason}. Fallback: reinstall the .zxp from https://synthetic.com.ar/dashboard/downloads",
63
+ "msg.panelRepair.stampFailed": "Panel file swap OK, but manifest stamp failed (harmless, next startup will re-check): {error}",
64
+ "msg.panelRepair.updated": "Panel updated: {from} → {to}. RESTART After Effects to load the new panel.",
65
+ "msg.panelRepair.updating": "Panel {installed} installed at {dir} — updating to {latest} (Synthetic AE MCP hotfix)…",
66
+ "msg.rpc.methodNotFound": "Method not found: {method}",
67
+ "msg.rpc.unknownTool": "Unknown tool: {name}",
68
+ "msg.script.launcherWarning": "After Effects may still have received the JSX if it was already open, but the launcher returned an error or hit the timeout.",
69
+ "msg.script.lockTimeout": "Timed out waiting for After Effects script lock: {path}",
70
+ "msg.script.panelEmptyResult": "Panel returned an empty result. Common causes:\n 1) Stale CEP panel (< v2.4.0). Re-install the latest .zxp from https://synthetic.com.ar/dashboard/downloads and restart After Effects.\n 2) After Effects has an invisible modal dialog blocking scripting (check for a hidden save/warning prompt behind the app window).\n 3) Multiple After Effects 2026 installs on the machine — the panel may be registered against a different AE binary than the one running.\nRun `ae_dialogs {mode:'list'}` and inspect %TEMP%\\ae-mcp-bridge\\res_*.json for the raw response.",
71
+ "msg.script.timedOut": "Timed out",
72
+ "msg.startup.language": "Language: {language} ({source})",
73
+ "msg.validation.confirmRequired": "{tool} requires confirm: true",
74
+ "msg.validation.invalidImportAs": "Invalid importAs \"{value}\". Expected one of: {allowed}",
75
+ "msg.wrapper.missingParam": "Missing required parameter '{name}'",
76
+ "msg.wrapper.promotedTag": "[promoted wrapper]",
77
+ "tool.add_adjustment_layer": "Add an adjustment layer.",
78
+ "tool.add_adjustment_layer.param.compName": "Composition name.",
79
+ "tool.add_adjustment_layer.param.layerName": "Optional layer name.",
80
+ "tool.add_adjustment_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
81
+ "tool.add_adjustment_layer.param.save": "Save the project after adding. Defaults to false.",
82
+ "tool.add_adjustment_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
83
+ "tool.add_camera_layer": "Add a camera layer with optional point of interest.",
84
+ "tool.add_camera_layer.param.centerPoint": "Optional [x,y] creation center.",
85
+ "tool.add_camera_layer.param.compName": "Composition name.",
86
+ "tool.add_camera_layer.param.layerName": "Optional layer name.",
87
+ "tool.add_camera_layer.param.pointOfInterest": "Optional [x,y,z] point of interest.",
88
+ "tool.add_camera_layer.param.position": "Optional [x,y,z] camera position.",
89
+ "tool.add_camera_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
90
+ "tool.add_camera_layer.param.save": "Save the project after adding. Defaults to false.",
91
+ "tool.add_camera_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
92
+ "tool.add_comp_marker": "Add a marker to a composition timeline.",
93
+ "tool.add_comp_marker.param.chapter": "Optional chapter label.",
94
+ "tool.add_comp_marker.param.comment": "Optional marker comment.",
95
+ "tool.add_comp_marker.param.duration": "Optional marker duration in seconds.",
96
+ "tool.add_comp_marker.param.time": "Marker time in seconds.",
97
+ "tool.add_comp_marker.param.url": "Optional URL.",
98
+ "tool.add_comps_to_render_queue": "Add multiple compositions to the render queue in a single call. Optionally apply render settings template, output module template, and output folder.",
99
+ "tool.add_comps_to_render_queue.param.compNames": "Composition names to add.",
100
+ "tool.add_comps_to_render_queue.param.outputFolder": "Absolute folder path for output files.",
101
+ "tool.add_comps_to_render_queue.param.outputModule": "Output module template name.",
102
+ "tool.add_comps_to_render_queue.param.renderSettings": "Render settings template name.",
103
+ "tool.add_effect": "Add an effect to a named layer by After Effects match name.",
104
+ "tool.add_effect.param.compName": "Composition name.",
105
+ "tool.add_effect.param.effectName": "Optional display name after adding.",
106
+ "tool.add_effect.param.layerName": "Layer name.",
107
+ "tool.add_effect.param.matchName": "Effect match name, e.g. ADBE Fill.",
108
+ "tool.add_effect.param.projectPath": "Optional absolute path to an .aep file to open first.",
109
+ "tool.add_effect.param.save": "Save the project after updating. Defaults to false.",
110
+ "tool.add_effect.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
111
+ "tool.add_footage_layer": "Add an imported footage item as a layer in a named composition.",
112
+ "tool.add_footage_layer.param.compName": "Composition name.",
113
+ "tool.add_footage_layer.param.itemName": "Footage item name.",
114
+ "tool.add_footage_layer.param.layerName": "Optional layer name after adding.",
115
+ "tool.add_footage_layer.param.position": "Optional layer position.",
116
+ "tool.add_footage_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
117
+ "tool.add_footage_layer.param.save": "Save the project after updating. Defaults to false.",
118
+ "tool.add_footage_layer.param.scale": "Optional layer scale.",
119
+ "tool.add_footage_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
120
+ "tool.add_guide": "Add a guide to a composition (horizontal or vertical, at a given position).",
121
+ "tool.add_guide.param.orientation": "horizontal | vertical",
122
+ "tool.add_guide.param.position": "Position in pixels from the composition edge.",
123
+ "tool.add_layer_marker": "Add a marker to a layer.",
124
+ "tool.add_layer_marker.param.time": "Marker time in seconds.",
125
+ "tool.add_layer_style": "Add a layer style (drop shadow, inner shadow, outer glow, inner glow, bevel, stroke, color overlay, gradient overlay, satin) to a layer.",
126
+ "tool.add_layer_style.param.style": "dropShadow | innerShadow | outerGlow | innerGlow | bevelEmboss | satin | colorOverlay | gradientOverlay | stroke",
127
+ "tool.add_light_layer": "Add a light layer.",
128
+ "tool.add_light_layer.param.centerPoint": "Optional [x,y] creation center.",
129
+ "tool.add_light_layer.param.compName": "Composition name.",
130
+ "tool.add_light_layer.param.intensity": "Optional light intensity.",
131
+ "tool.add_light_layer.param.layerName": "Optional layer name.",
132
+ "tool.add_light_layer.param.lightType": "parallel, spot, point, or ambient. Defaults to point.",
133
+ "tool.add_light_layer.param.position": "Optional [x,y,z] position.",
134
+ "tool.add_light_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
135
+ "tool.add_light_layer.param.save": "Save the project after adding. Defaults to false.",
136
+ "tool.add_light_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
137
+ "tool.add_mask": "Add a rectangular or custom mask to a layer.",
138
+ "tool.add_mask.param.closed": "Whether the mask is closed. Defaults to true.",
139
+ "tool.add_mask.param.compName": "Composition name.",
140
+ "tool.add_mask.param.layerName": "Layer name.",
141
+ "tool.add_mask.param.maskName": "Optional mask name.",
142
+ "tool.add_mask.param.mode": "add, subtract, intersect, lighten, darken, difference, none.",
143
+ "tool.add_mask.param.projectPath": "Optional absolute path to an .aep file to open first.",
144
+ "tool.add_mask.param.save": "Save after updating. Defaults to false.",
145
+ "tool.add_mask.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
146
+ "tool.add_mask.param.vertices": "Optional vertices [[x,y],...]. Defaults to layer bounds rectangle.",
147
+ "tool.add_mask_path_keyframe": "Add a keyframe to a mask path property.",
148
+ "tool.add_mask_path_keyframe.param.inTangents": "Optional in-tangents.",
149
+ "tool.add_mask_path_keyframe.param.outTangents": "Optional out-tangents.",
150
+ "tool.add_mask_path_keyframe.param.time": "Time in seconds.",
151
+ "tool.add_mask_path_keyframe.param.vertices": "Array of [x, y] vertex pairs.",
152
+ "tool.add_null_layer": "Add a null layer to a composition.",
153
+ "tool.add_null_layer.param.compName": "Composition name.",
154
+ "tool.add_null_layer.param.layerName": "Optional layer name.",
155
+ "tool.add_null_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
156
+ "tool.add_null_layer.param.save": "Save the project after adding. Defaults to false.",
157
+ "tool.add_null_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
158
+ "tool.add_property_to_mogrt": "Add a layer property to Essential Graphics when After Effects allows it.",
159
+ "tool.add_property_to_mogrt.param.compName": "Composition name.",
160
+ "tool.add_property_to_mogrt.param.controllerName": "Optional controller display name.",
161
+ "tool.add_property_to_mogrt.param.layerName": "Layer name.",
162
+ "tool.add_property_to_mogrt.param.projectPath": "Optional absolute path to an .aep file to open first.",
163
+ "tool.add_property_to_mogrt.param.propertyPath": "Property path, preferably match names.",
164
+ "tool.add_property_to_mogrt.param.save": "Save after updating. Defaults to false.",
165
+ "tool.add_property_to_mogrt.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
166
+ "tool.add_shape_group": "Add a new shape group (rectangle, ellipse, polygon, star, or path) to a shape layer.",
167
+ "tool.add_shape_group.param.fillColor": "RGB fill color 0..1. Defaults to white.",
168
+ "tool.add_shape_group.param.groupName": "Optional group name.",
169
+ "tool.add_shape_group.param.innerRadius": "Inner radius for star shapes.",
170
+ "tool.add_shape_group.param.outerRadius": "Outer radius for polygon/star.",
171
+ "tool.add_shape_group.param.position": "[x, y] offset from shape layer position. Defaults to [0, 0].",
172
+ "tool.add_shape_group.param.roundness": "Corner roundness for rect (0–100). Defaults to 0.",
173
+ "tool.add_shape_group.param.shape": "rect, ellipse, polygon, star, or path. Defaults to rect.",
174
+ "tool.add_shape_group.param.sides": "Number of sides for polygon/star. Defaults to 5.",
175
+ "tool.add_shape_group.param.size": "[width, height] for rect/ellipse. Defaults to [200, 200].",
176
+ "tool.add_shape_group.param.strokeColor": "RGB stroke color 0..1. Omit for no stroke.",
177
+ "tool.add_shape_group.param.strokeWidth": "Stroke width. Defaults to 0 (none).",
178
+ "tool.add_shape_layer": "Add a native shape layer with a rectangle or ellipse group to a named composition.",
179
+ "tool.add_shape_layer.param.compName": "Composition name.",
180
+ "tool.add_shape_layer.param.fillColor": "RGB array with 0..1 values. Defaults to cyan.",
181
+ "tool.add_shape_layer.param.layerName": "Layer name. Defaults to Shape Layer.",
182
+ "tool.add_shape_layer.param.opacity": "Layer opacity 0..100. Defaults to 100.",
183
+ "tool.add_shape_layer.param.position": "Layer position. Defaults to comp center.",
184
+ "tool.add_shape_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
185
+ "tool.add_shape_layer.param.save": "Save the project after adding the layer. Defaults to false.",
186
+ "tool.add_shape_layer.param.shape": "rect or ellipse. Defaults to rect.",
187
+ "tool.add_shape_layer.param.size": "Shape size [width, height]. Defaults to [400, 120].",
188
+ "tool.add_shape_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
189
+ "tool.add_shape_operator": "Add a common shape operator such as trim_paths, repeater, merge_paths, or offset_paths.",
190
+ "tool.add_shape_operator.param.compName": "Composition name.",
191
+ "tool.add_shape_operator.param.layerName": "Shape layer name.",
192
+ "tool.add_shape_operator.param.operator": "trim_paths, repeater, merge_paths, offset_paths, wiggle_paths.",
193
+ "tool.add_shape_operator.param.projectPath": "Optional absolute path to an .aep file to open first.",
194
+ "tool.add_shape_operator.param.save": "Save after updating. Defaults to false.",
195
+ "tool.add_shape_operator.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
196
+ "tool.add_solid_layer": "Add a native solid layer to a composition.",
197
+ "tool.add_solid_layer.param.color": "RGB array with 0..1 values.",
198
+ "tool.add_solid_layer.param.compName": "Composition name.",
199
+ "tool.add_solid_layer.param.duration": "Optional duration. Defaults to comp duration.",
200
+ "tool.add_solid_layer.param.height": "Optional solid height. Defaults to comp height.",
201
+ "tool.add_solid_layer.param.layerName": "Layer/source name.",
202
+ "tool.add_solid_layer.param.pixelAspect": "Optional pixel aspect. Defaults to comp pixel aspect.",
203
+ "tool.add_solid_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
204
+ "tool.add_solid_layer.param.save": "Save the project after adding. Defaults to false.",
205
+ "tool.add_solid_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
206
+ "tool.add_solid_layer.param.width": "Optional solid width. Defaults to comp width.",
207
+ "tool.add_text_animator": "Add a text animator with a range selector to a text layer.",
208
+ "tool.add_text_animator.param.animatorName": "Optional name for the animator.",
209
+ "tool.add_text_animator.param.properties": "Properties to animate, e.g. ['opacity','position','scale']. Defaults to ['opacity'].",
210
+ "tool.add_text_layer": "Add a text layer to a named composition and optionally save.",
211
+ "tool.add_text_layer.param.compName": "Composition name.",
212
+ "tool.add_text_layer.param.fillColor": "Optional RGB array with 0..1 values.",
213
+ "tool.add_text_layer.param.fontSize": "Optional font size.",
214
+ "tool.add_text_layer.param.justification": "left, center, or right. Defaults to center.",
215
+ "tool.add_text_layer.param.layerName": "Layer name. Defaults to the text.",
216
+ "tool.add_text_layer.param.position": "Optional [x, y] or [x, y, z] position.",
217
+ "tool.add_text_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
218
+ "tool.add_text_layer.param.save": "Save the project after adding the layer. Defaults to false.",
219
+ "tool.add_text_layer.param.text": "Text content.",
220
+ "tool.add_text_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
221
+ "tool.add_to_render_queue": "Add a composition to the After Effects render queue and optionally set output module/path.",
222
+ "tool.add_to_render_queue.param.compName": "Composition name.",
223
+ "tool.add_to_render_queue.param.outputModule": "Optional output module template name.",
224
+ "tool.add_to_render_queue.param.outputPath": "Optional absolute output path.",
225
+ "tool.add_to_render_queue.param.projectPath": "Optional absolute path to an .aep file to open first.",
226
+ "tool.add_to_render_queue.param.renderSettings": "Optional render settings template name.",
227
+ "tool.add_to_render_queue.param.save": "Save the project after updating. Defaults to false.",
228
+ "tool.add_to_render_queue.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
229
+ "tool.ae_dialogs": "List or close visible After Effects modal dialogs using Windows UI Automation.",
230
+ "tool.ae_dialogs.param.all": "Inspect all top-level windows instead of title-matching only. Defaults to false.",
231
+ "tool.ae_dialogs.param.buttonPattern": "Regex for button to invoke when closing. Defaults to Aceptar|OK|Accept|Cerrar|Close.",
232
+ "tool.ae_dialogs.param.mode": "list or close. Defaults to list.",
233
+ "tool.ae_dialogs.param.titlePattern": "Regex for dialog title. Defaults to ^After Effects$.",
234
+ "tool.ae_healthcheck": "Verify After Effects and aerender availability, temp scripting, and local render CLI version.",
235
+ "tool.ae_info": "Detect installed After Effects executables and return the paths this MCP will use.",
236
+ "tool.apply_render_template": "Apply a named render settings template and/or output module template to a render queue item.",
237
+ "tool.apply_render_template.param.omIndex": "Output module index (default 1)",
238
+ "tool.apply_render_template.param.outputModuleTemplate": "Name of the output module template to apply",
239
+ "tool.apply_render_template.param.renderSettingsTemplate": "Name of the render settings template to apply",
240
+ "tool.apply_render_template.param.rqIndex": "1-based render queue item index",
241
+ "tool.auto_orient_layer": "Set auto-orientation mode for a layer (off, along path, camera, or characters).",
242
+ "tool.auto_orient_layer.param.mode": "off | path | camera",
243
+ "tool.bake_expression": "Sample a property over time and write keyframes, optionally disabling its expression afterward.",
244
+ "tool.bake_expression.param.compName": "Composition name.",
245
+ "tool.bake_expression.param.disableExpression": "Disable expression after baking. Defaults to true.",
246
+ "tool.bake_expression.param.endTime": "End time. Defaults to work area end.",
247
+ "tool.bake_expression.param.frameStep": "Frame increment between samples. Defaults to 1.",
248
+ "tool.bake_expression.param.layerName": "Layer name.",
249
+ "tool.bake_expression.param.projectPath": "Optional absolute path to an .aep file to open first.",
250
+ "tool.bake_expression.param.propertyPath": "Property path, preferably match names.",
251
+ "tool.bake_expression.param.save": "Save after updating. Defaults to false.",
252
+ "tool.bake_expression.param.startTime": "Start time. Defaults to comp work area start.",
253
+ "tool.bake_expression.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
254
+ "tool.batch_add_effect": "Add the same effect to multiple layers in a single call.",
255
+ "tool.batch_add_effect.param.layerNames": "Layer names. Omit to apply to all layers.",
256
+ "tool.batch_add_effect.param.matchName": "Effect match name, e.g. ADBE Fill.",
257
+ "tool.batch_apply_ffx": "Apply an animation preset (.ffx file) to multiple layers.",
258
+ "tool.batch_apply_ffx.param.layerNames": "Omit to apply to all layers.",
259
+ "tool.batch_apply_ffx.param.presetPath": "Absolute path to the .ffx preset file.",
260
+ "tool.batch_keyframe_offset": "Shift all keyframes on specified layers (or all layers) by a time offset in seconds.",
261
+ "tool.batch_keyframe_offset.param.layerNames": "Layer names to affect (empty = all layers)",
262
+ "tool.batch_keyframe_offset.param.offsetSeconds": "Time to shift keyframes by (positive = later, negative = earlier)",
263
+ "tool.batch_keyframe_offset.param.propertyFilter": "Optional property match name filter (e.g. 'ADBE Position')",
264
+ "tool.batch_rename_layers": "Rename multiple layers using a pattern, find-and-replace, or a numeric sequence.",
265
+ "tool.batch_rename_layers.param.baseName": "Base name for sequence mode or prefix/suffix mode.",
266
+ "tool.batch_rename_layers.param.find": "String to find (for replace mode).",
267
+ "tool.batch_rename_layers.param.layerNames": "Optional subset of layers. Omit to apply to all.",
268
+ "tool.batch_rename_layers.param.mode": "replace | prefix | suffix | sequence. replace requires find+replacement. sequence renames to baseName+index.",
269
+ "tool.batch_rename_layers.param.replacement": "Replacement string (for replace mode).",
270
+ "tool.batch_replace_footage": "Replace multiple footage items by mapping old filename patterns to new absolute file paths.",
271
+ "tool.batch_replace_footage.param.replacements": "Array of {oldName, newPath} objects. oldName is matched against footage item names (substring match). newPath is the absolute path to the replacement file.",
272
+ "tool.batch_replace_text": "Find and replace text content across all text layers in one or more compositions.",
273
+ "tool.batch_replace_text.param.caseSensitive": "Case-sensitive search. Defaults to true.",
274
+ "tool.batch_replace_text.param.compNames": "Composition names to search. Omit or empty to search all comps.",
275
+ "tool.batch_replace_text.param.find": "Text to find (case-sensitive).",
276
+ "tool.batch_replace_text.param.replace": "Replacement text.",
277
+ "tool.batch_set_expression": "Set the same expression on a property across multiple layers.",
278
+ "tool.batch_set_expression.param.expression": "Expression string to set. Empty string removes expression.",
279
+ "tool.batch_set_expression.param.propertyPath": "Property path (match names).",
280
+ "tool.batch_set_layer_property": "Set the same property value on multiple layers in a single call.",
281
+ "tool.batch_set_layer_property.param.layerNames": "Layer names to update. Omit to apply to all layers.",
282
+ "tool.batch_set_layer_property.param.propertyPath": "Property path (match names).",
283
+ "tool.batch_set_layer_property.param.value": "Value to set.",
284
+ "tool.batch_set_transform": "Set transform properties (position, scale, rotation, opacity, anchor point) across multiple layers in a comp, optionally filtered by name pattern.",
285
+ "tool.batch_set_transform.param.anchorPoint": "[x, y] or [x, y, z]",
286
+ "tool.batch_set_transform.param.layerNamePattern": "Substring to match layer names (empty = all layers)",
287
+ "tool.batch_set_transform.param.opacity": "Opacity 0-100",
288
+ "tool.batch_set_transform.param.position": "[x, y] or [x, y, z]",
289
+ "tool.batch_set_transform.param.rotation": "Rotation in degrees",
290
+ "tool.batch_set_transform.param.scale": "[x, y] or [x, y, z] in %",
291
+ "tool.cancel_render": "Stop/cancel any currently running render in After Effects.",
292
+ "tool.clear_guides": "Remove all guides from a composition.",
293
+ "tool.clear_proxy": "Clear a footage item's proxy.",
294
+ "tool.clear_proxy.param.itemName": "Footage item name.",
295
+ "tool.clear_proxy.param.projectPath": "Optional absolute path to an .aep file to open first.",
296
+ "tool.clear_proxy.param.save": "Save the project after updating. Defaults to false.",
297
+ "tool.clear_proxy.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
298
+ "tool.clear_render_queue": "Remove all items from the After Effects render queue.",
299
+ "tool.clone_layer_to_comp": "Copy a layer from a source composition into a different target composition using copyToComp().",
300
+ "tool.clone_layer_to_comp.param.insertIndex": "1-based insert position (default 1 = top).",
301
+ "tool.clone_layer_to_comp.param.newLayerName": "Optional name for the new layer.",
302
+ "tool.close_project": "Close the current or provided project with an explicit save policy.",
303
+ "tool.close_project.param.projectPath": "Optional absolute path to an .aep file to open first.",
304
+ "tool.close_project.param.savePolicy": "save, do_not_save, or prompt. Defaults to do_not_save.",
305
+ "tool.close_project.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
306
+ "tool.collect_asset_report": "Return a JSON report of external assets, missing footage, proxies, and comp usage.",
307
+ "tool.collect_asset_report.param.projectPath": "Optional absolute path to an .aep file to open first.",
308
+ "tool.collect_asset_report.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
309
+ "tool.collect_files": "Collect the project and all its footage into a folder (File > Collect Files). Saves a copy of the .aep with all dependencies.",
310
+ "tool.collect_files.param.outputFolder": "Absolute path to destination folder. Will be created if needed.",
311
+ "tool.consolidate_footage": "Remove duplicate footage items from the project (consolidate to a single instance).",
312
+ "tool.copy_effect": "Duplicate an effect on the same layer (adds a second instance at the bottom of the stack).",
313
+ "tool.copy_effect_to_layer": "Copy an effect (by name or index) from a source layer to a destination layer, optionally in a different comp.",
314
+ "tool.copy_effect_to_layer.param.copyValues": "Also copy property values (default true)",
315
+ "tool.copy_effect_to_layer.param.destCompName": "Destination comp (defaults to same as source comp)",
316
+ "tool.copy_effect_to_layer.param.effectIndex": "1-based effect index (used if effectName not given)",
317
+ "tool.copy_keyframes": "Copy keyframes from one property to another (same or different layer), with optional time offset.",
318
+ "tool.copy_keyframes.param.sourcePath": "Source property path.",
319
+ "tool.copy_keyframes.param.targetLayer": "Defaults to sourceLayer.",
320
+ "tool.copy_keyframes.param.targetPath": "Target property path. Defaults to sourcePath.",
321
+ "tool.copy_keyframes.param.timeOffset": "Time offset in seconds to apply to copied keyframes. Defaults to 0.",
322
+ "tool.create_comp": "Create a composition in the current or provided project and optionally save.",
323
+ "tool.create_comp.param.backgroundColor": "Optional RGB array with 0..1 values.",
324
+ "tool.create_comp.param.duration": "Duration in seconds. Defaults to 10.",
325
+ "tool.create_comp.param.frameRate": "Frame rate. Defaults to 30.",
326
+ "tool.create_comp.param.height": "Height in pixels. Defaults to 1080.",
327
+ "tool.create_comp.param.name": "Composition name.",
328
+ "tool.create_comp.param.pixelAspect": "Pixel aspect ratio. Defaults to 1.",
329
+ "tool.create_comp.param.projectPath": "Optional absolute path to an .aep file to open first.",
330
+ "tool.create_comp.param.save": "Save the project after creating the comp. Defaults to false.",
331
+ "tool.create_comp.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
332
+ "tool.create_comp.param.width": "Width in pixels. Defaults to 1920.",
333
+ "tool.create_folder": "Create a folder in the After Effects project panel.",
334
+ "tool.create_folder.param.name": "Folder name.",
335
+ "tool.create_folder.param.parentName": "Optional existing parent folder name.",
336
+ "tool.create_folder.param.projectPath": "Optional absolute path to an .aep file to open first.",
337
+ "tool.create_folder.param.save": "Save the project after creating the folder. Defaults to false.",
338
+ "tool.create_folder.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
339
+ "tool.delete_comp": "Delete a composition. Requires confirm: true.",
340
+ "tool.delete_comp.param.compName": "Composition name.",
341
+ "tool.delete_comp.param.confirm": "Must be true to delete.",
342
+ "tool.delete_comp.param.projectPath": "Optional absolute path to an .aep file to open first.",
343
+ "tool.delete_comp.param.save": "Save the project after deleting. Defaults to false.",
344
+ "tool.delete_comp.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
345
+ "tool.delete_items": "Delete project panel items by id or name. Requires confirm: true.",
346
+ "tool.delete_items.param.confirm": "Must be true to perform deletion.",
347
+ "tool.delete_items.param.itemIds": "Project item ids to delete.",
348
+ "tool.delete_items.param.itemNames": "Project item names to delete.",
349
+ "tool.delete_items.param.projectPath": "Optional absolute path to an .aep file to open first.",
350
+ "tool.delete_items.param.save": "Save the project after deleting. Defaults to false.",
351
+ "tool.delete_items.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
352
+ "tool.delete_layers": "Delete layers by name or index. Requires confirm: true.",
353
+ "tool.delete_layers.param.compName": "Composition name.",
354
+ "tool.delete_layers.param.confirm": "Must be true to delete.",
355
+ "tool.delete_layers.param.layerIndices": "Layer indices to delete.",
356
+ "tool.delete_layers.param.layerNames": "Layer names to delete.",
357
+ "tool.delete_layers.param.projectPath": "Optional absolute path to an .aep file to open first.",
358
+ "tool.delete_layers.param.save": "Save the project after deleting. Defaults to false.",
359
+ "tool.delete_layers.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
360
+ "tool.delete_mask": "Delete a mask from a layer by name or index.",
361
+ "tool.delete_mask.param.maskIndex": "1-based mask index.",
362
+ "tool.duplicate_comp": "Duplicate a composition and optionally rename it.",
363
+ "tool.duplicate_comp.param.compName": "Composition name.",
364
+ "tool.duplicate_comp.param.newName": "Optional duplicated comp name.",
365
+ "tool.duplicate_comp.param.projectPath": "Optional absolute path to an .aep file to open first.",
366
+ "tool.duplicate_comp.param.save": "Save the project after duplicating. Defaults to false.",
367
+ "tool.duplicate_comp.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
368
+ "tool.duplicate_item": "Duplicate a composition, folder, or footage item when supported by After Effects.",
369
+ "tool.duplicate_item.param.itemId": "Optional project item id.",
370
+ "tool.duplicate_item.param.itemName": "Optional project item name.",
371
+ "tool.duplicate_item.param.newName": "Optional duplicated item name.",
372
+ "tool.duplicate_item.param.projectPath": "Optional absolute path to an .aep file to open first.",
373
+ "tool.duplicate_item.param.save": "Save the project after duplicating. Defaults to false.",
374
+ "tool.duplicate_item.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
375
+ "tool.duplicate_layer": "Duplicate a layer by name.",
376
+ "tool.duplicate_layer.param.compName": "Composition name.",
377
+ "tool.duplicate_layer.param.layerName": "Layer name.",
378
+ "tool.duplicate_layer.param.newName": "Optional duplicate name.",
379
+ "tool.duplicate_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
380
+ "tool.duplicate_layer.param.save": "Save the project after duplicating. Defaults to false.",
381
+ "tool.duplicate_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
382
+ "tool.duplicate_render_item": "Duplicate a render queue item (same comp, same settings).",
383
+ "tool.duplicate_render_item.param.rqIndex": "1-based render queue item index to duplicate.",
384
+ "tool.enable_effect": "Enable or disable (mute) an effect on a layer without removing it.",
385
+ "tool.enable_layer_style": "Enable or disable a specific layer style (Drop Shadow, Inner Glow, etc.) on a layer.",
386
+ "tool.enable_layer_style.param.styleIndex": "1-based index in the layer styles group (used if styleName not given)",
387
+ "tool.enable_layer_style.param.styleName": "Display name of the style, e.g. 'Drop Shadow'",
388
+ "tool.enable_time_remap": "Enable time remapping on a layer and optionally set initial keyframes.",
389
+ "tool.enable_time_remap.param.keyframes": "Optional [{time, value}] keyframes. time = composition time in seconds; value = source layer time in seconds to display at that point.",
390
+ "tool.export_frame": "Export a single frame from a composition as a PNG, JPEG, or TIFF image using aerender. Provide either time (seconds) or frame (integer frame number).",
391
+ "tool.export_frame.param.compName": "Composition name.",
392
+ "tool.export_frame.param.frame": "Integer frame number. Takes priority over time.",
393
+ "tool.export_frame.param.outputPath": "Output file path (.png, .jpg, or .tif).",
394
+ "tool.export_frame.param.projectPath": "Absolute path to the .aep file.",
395
+ "tool.export_frame.param.time": "Time in seconds. Used if frame not provided. Defaults to 0.",
396
+ "tool.export_mogrt": "Export a composition as a Motion Graphics Template. Requires overwrite: true if target exists.",
397
+ "tool.export_mogrt.param.compName": "Composition name.",
398
+ "tool.export_mogrt.param.outputFolder": "Absolute output folder.",
399
+ "tool.export_mogrt.param.overwrite": "Allow overwriting an existing MOGRT. Defaults to false.",
400
+ "tool.export_mogrt.param.projectPath": "Optional absolute path to an .aep file to open first.",
401
+ "tool.export_mogrt.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
402
+ "tool.find_project_items": "Find project items by name, type, parent folder, or missing-footage state.",
403
+ "tool.find_project_items.param.missingFootage": "Filter footage by missing state.",
404
+ "tool.find_project_items.param.nameContains": "Case-insensitive name substring.",
405
+ "tool.find_project_items.param.parentName": "Optional parent folder name.",
406
+ "tool.find_project_items.param.projectPath": "Optional absolute path to an .aep file to open first.",
407
+ "tool.find_project_items.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
408
+ "tool.find_project_items.param.type": "comp, folder, footage, solid, or placeholder.",
409
+ "tool.get_ae_version": "Detect the running After Effects version, build number, and feature availability.",
410
+ "tool.get_all_property_values": "Read the current values of multiple properties on a layer in a single call.",
411
+ "tool.get_all_property_values.param.atTime": "Time in seconds to evaluate. Defaults to current time.",
412
+ "tool.get_all_property_values.param.properties": "Array of property paths (arrays of match names) to read.",
413
+ "tool.get_comp_info": "Return detailed composition settings, renderers, markers, and layer summaries.",
414
+ "tool.get_comp_info.param.compName": "Composition name.",
415
+ "tool.get_comp_info.param.projectPath": "Optional absolute path to an .aep file to open first.",
416
+ "tool.get_comp_info.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
417
+ "tool.get_expression": "Read expression source, enabled state, and expression error for a layer property.",
418
+ "tool.get_expression.param.compName": "Composition name.",
419
+ "tool.get_expression.param.layerName": "Layer name.",
420
+ "tool.get_expression.param.projectPath": "Optional absolute path to an .aep file to open first.",
421
+ "tool.get_expression.param.propertyPath": "Property path, preferably match names.",
422
+ "tool.get_expression.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
423
+ "tool.get_expression_globals": "Extract all expressions from all layers in a comp, returning property path, expression text, enabled state, and any error.",
424
+ "tool.get_expression_globals.param.includeDisabled": "Include expressions that are toggled off (default true)",
425
+ "tool.get_layer_audio": "Read audio levels and mute state of a layer.",
426
+ "tool.get_layer_blend_mode": "Return the current blending mode of a layer as a string (e.g. 'BlendingMode.NORMAL', 'BlendingMode.MULTIPLY').",
427
+ "tool.get_layer_info": "Return extended information for a single layer: all transform values (position, scale, rotation, opacity, anchor), switches (enabled, locked, shy, solo, motionBlur, adjustmentLayer, guideLayer, threeDLayer), blend mode, parent, source, in/out points, and stretch.",
428
+ "tool.get_layer_track_matte": "Read the current track matte type of a layer.",
429
+ "tool.get_preferences": "Read After Effects preferences (section + key). Returns the stored value.",
430
+ "tool.get_preferences.param.key": "Preference key name.",
431
+ "tool.get_preferences.param.section": "Preference section name.",
432
+ "tool.get_preferences.param.type": "string | number | boolean. Defaults to string.",
433
+ "tool.get_project_settings": "Read project-level settings: color depth, time display, audio sample rate, and expression engine.",
434
+ "tool.get_property_tree": "Inspect a layer property tree, optionally from a nested property path.",
435
+ "tool.get_property_tree.param.compName": "Composition name.",
436
+ "tool.get_property_tree.param.layerName": "Layer name.",
437
+ "tool.get_property_tree.param.maxDepth": "Maximum tree depth. Defaults to 3.",
438
+ "tool.get_property_tree.param.projectPath": "Optional absolute path to an .aep file to open first.",
439
+ "tool.get_property_tree.param.propertyPath": "Optional property path to inspect from.",
440
+ "tool.get_property_tree.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
441
+ "tool.get_property_value": "Read a layer property value by After Effects property path.",
442
+ "tool.get_property_value.param.compName": "Composition name.",
443
+ "tool.get_property_value.param.layerName": "Layer name.",
444
+ "tool.get_property_value.param.projectPath": "Optional absolute path to an .aep file to open first.",
445
+ "tool.get_property_value.param.propertyPath": "Property path, preferably match names.",
446
+ "tool.get_property_value.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
447
+ "tool.get_recent_errors": "Return the most recent MCP/After Effects tool error captured by this server process.",
448
+ "tool.get_render_status": "Get the current status and progress of all items in the render queue.",
449
+ "tool.get_shape_vertices": "Read the vertices, inTangents, outTangents, and closed state of a shape path property.",
450
+ "tool.get_shape_vertices.param.groupName": "Name of the shape group inside Contents",
451
+ "tool.get_shape_vertices.param.pathName": "Name of the path property inside the group, e.g. 'Path 1'",
452
+ "tool.get_spatial_tangents": "Get the spatial (bezier) in/out tangent handles for all keys of a position (or spatial) property.",
453
+ "tool.get_spatial_tangents.param.propertyPath": "Property path array, e.g. ['ADBE Transform Group','ADBE Position']",
454
+ "tool.get_text_document": "Read text document details from a named text layer.",
455
+ "tool.get_text_document.param.compName": "Composition name.",
456
+ "tool.get_text_document.param.layerName": "Text layer name.",
457
+ "tool.get_text_document.param.projectPath": "Optional absolute path to an .aep file to open first.",
458
+ "tool.get_text_document.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
459
+ "tool.get_transform": "Read the current transform property values of a layer at a given time. Returns position, scale, anchorPoint, rotationZ, opacity, and (for 3D layers) rotationX, rotationY, orientation.",
460
+ "tool.get_transform.param.time": "Time in seconds to sample. Defaults to layer in-point.",
461
+ "tool.import_file": "Import a file or image sequence into the current or provided project. For PSD/AI files, use importAs to control whether layers are flattened into one footage item or kept as a layered composition. For multi-artboard PSD/AI files, add splitTopLevelGroups (with importAs: COMP_CROPPED_LAYERS) to get one separate, correctly-sized composition per artboard/top-level group.",
462
+ "tool.import_file.param.asSequence": "Import as image sequence when supported. Defaults to false.",
463
+ "tool.import_file.param.filePath": "Absolute path to the file to import.",
464
+ "tool.import_file.param.importAs": "How to import a multi-layer file (PSD/AI). FOOTAGE (default) flattens it into one image. COMP imports it as a composition with one AE layer per source layer, each sized to the full canvas. COMP_CROPPED_LAYERS does the same but crops each layer to its own bounding box. PROJECT is for importing another .aep's contents.",
465
+ "tool.import_file.param.projectPath": "Optional absolute path to an .aep file to open first.",
466
+ "tool.import_file.param.save": "Save the project after importing. Defaults to false.",
467
+ "tool.import_file.param.splitTopLevelGroups": "For a PSD/AI with multiple top-level layer groups (e.g. a PSD with several Photoshop Artboards), split each top-level group into its own separate composition sized to that group's own real bounds, instead of one composition covering the whole document. For .psd files, the real per-group/per-artboard position and size is read directly from the PSD file itself (via its Photoshop artboard metadata, or the bounding box of the group's content as a fallback) since After Effects' own import API does not expose that -- so this works even for artboards of very different sizes. For non-PSD files (e.g. .ai), there's no such metadata available and every split comp comes out full-canvas size. Use together with importAs: COMP_CROPPED_LAYERS. Defaults to false.",
468
+ "tool.import_file.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
469
+ "tool.import_folder": "Import files from a folder according to optional extension filters.",
470
+ "tool.import_folder.param.asSequences": "Ask AE to import matching files as sequences. Defaults to false.",
471
+ "tool.import_folder.param.extensions": "Optional extensions such as [\".png\", \".jpg\"].",
472
+ "tool.import_folder.param.folderPath": "Absolute folder path.",
473
+ "tool.import_folder.param.projectPath": "Optional absolute path to an .aep file to open first.",
474
+ "tool.import_folder.param.recursive": "Include subfolders. Defaults to false.",
475
+ "tool.import_folder.param.save": "Save the project after importing. Defaults to false.",
476
+ "tool.import_folder.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
477
+ "tool.import_placeholder": "Create a placeholder footage item.",
478
+ "tool.import_placeholder.param.duration": "Duration in seconds. Defaults to 10.",
479
+ "tool.import_placeholder.param.frameRate": "Frame rate. Defaults to 30.",
480
+ "tool.import_placeholder.param.height": "Height in pixels. Defaults to 1080.",
481
+ "tool.import_placeholder.param.name": "Placeholder name.",
482
+ "tool.import_placeholder.param.projectPath": "Optional absolute path to an .aep file to open first.",
483
+ "tool.import_placeholder.param.save": "Save the project after creating. Defaults to false.",
484
+ "tool.import_placeholder.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
485
+ "tool.import_placeholder.param.width": "Width in pixels. Defaults to 1920.",
486
+ "tool.import_sequence": "Import a numbered image sequence into the current or provided project.",
487
+ "tool.import_sequence.param.firstFilePath": "Absolute path to the first file in the sequence.",
488
+ "tool.import_sequence.param.forceAlphabetical": "Set ImportOptions.forceAlphabetical when supported. Defaults to false.",
489
+ "tool.import_sequence.param.projectPath": "Optional absolute path to an .aep file to open first.",
490
+ "tool.import_sequence.param.save": "Save the project after importing. Defaults to false.",
491
+ "tool.import_sequence.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
492
+ "tool.import_solid": "Create a native solid footage item.",
493
+ "tool.import_solid.param.color": "RGB array with 0..1 values. Defaults to [1,1,1].",
494
+ "tool.import_solid.param.duration": "Duration in seconds. Defaults to 10.",
495
+ "tool.import_solid.param.height": "Height in pixels. Defaults to 1080.",
496
+ "tool.import_solid.param.name": "Solid name.",
497
+ "tool.import_solid.param.pixelAspect": "Pixel aspect ratio. Defaults to 1.",
498
+ "tool.import_solid.param.projectPath": "Optional absolute path to an .aep file to open first.",
499
+ "tool.import_solid.param.save": "Save the project after creating. Defaults to false.",
500
+ "tool.import_solid.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
501
+ "tool.import_solid.param.width": "Width in pixels. Defaults to 1920.",
502
+ "tool.interpret_footage": "Update common footage interpretation settings such as alpha mode, conform frame rate, and loop count.",
503
+ "tool.interpret_footage.param.alphaMode": "ignore, straight, premultiplied, or guess.",
504
+ "tool.interpret_footage.param.conformFrameRate": "Optional conform frame rate.",
505
+ "tool.interpret_footage.param.itemName": "Footage item name.",
506
+ "tool.interpret_footage.param.loop": "Optional loop count.",
507
+ "tool.interpret_footage.param.projectPath": "Optional absolute path to an .aep file to open first.",
508
+ "tool.interpret_footage.param.save": "Save the project after updating. Defaults to false.",
509
+ "tool.interpret_footage.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
510
+ "tool.link_property_expression": "Link a layer property to another layer's property via a simple expression (e.g. thisComp.layer('Name').transform.opacity).",
511
+ "tool.link_property_expression.param.propertyPath": "Target property path.",
512
+ "tool.link_property_expression.param.sourceExpression": "Full expression string to set.",
513
+ "tool.list_comp_markers": "List all markers on a composition timeline.",
514
+ "tool.list_comp_markers.param.compName": "Composition name.",
515
+ "tool.list_comps": "List compositions in the current project or in a provided .aep project.",
516
+ "tool.list_comps.param.projectPath": "Optional absolute path to an .aep file to open first.",
517
+ "tool.list_comps.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
518
+ "tool.list_expression_errors": "List all layers and properties in a comp that have expression errors.",
519
+ "tool.list_guides": "List all guides in a composition.",
520
+ "tool.list_keyframes": "List keyframes for a layer property by After Effects property path.",
521
+ "tool.list_keyframes.param.compName": "Composition name.",
522
+ "tool.list_keyframes.param.layerName": "Layer name.",
523
+ "tool.list_keyframes.param.projectPath": "Optional absolute path to an .aep file to open first.",
524
+ "tool.list_keyframes.param.propertyPath": "Property path, preferably match names.",
525
+ "tool.list_keyframes.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
526
+ "tool.list_layer_effects": "List effects applied to a named layer.",
527
+ "tool.list_layer_effects.param.compName": "Composition name.",
528
+ "tool.list_layer_effects.param.layerName": "Layer name.",
529
+ "tool.list_layer_effects.param.projectPath": "Optional absolute path to an .aep file to open first.",
530
+ "tool.list_layer_effects.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
531
+ "tool.list_layer_markers": "List all markers on a layer.",
532
+ "tool.list_layer_styles": "List all layer styles applied to a layer.",
533
+ "tool.list_layers": "List layers in a named composition.",
534
+ "tool.list_layers.param.compName": "Composition name.",
535
+ "tool.list_layers.param.projectPath": "Optional absolute path to an .aep file to open first.",
536
+ "tool.list_layers.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
537
+ "tool.list_lights_cameras": "List all camera and light layers in a composition with their settings.",
538
+ "tool.list_masks": "List masks on a layer.",
539
+ "tool.list_masks.param.compName": "Composition name.",
540
+ "tool.list_masks.param.layerName": "Layer name.",
541
+ "tool.list_masks.param.projectPath": "Optional absolute path to an .aep file to open first.",
542
+ "tool.list_masks.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
543
+ "tool.list_missing_footage": "List missing footage items in the current or provided project.",
544
+ "tool.list_missing_footage.param.projectPath": "Optional absolute path to an .aep file to open first.",
545
+ "tool.list_missing_footage.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
546
+ "tool.list_mogrt_controllers": "List Essential Graphics controllers exposed by a composition.",
547
+ "tool.list_mogrt_controllers.param.compName": "Composition name.",
548
+ "tool.list_mogrt_controllers.param.projectPath": "Optional absolute path to an .aep file to open first.",
549
+ "tool.list_mogrt_controllers.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
550
+ "tool.list_output_modules": "List the output modules configured on a render queue item.",
551
+ "tool.list_output_modules.param.rqIndex": "1-based render queue item index.",
552
+ "tool.list_project_items": "List project panel items with folder/source metadata.",
553
+ "tool.list_project_items.param.projectPath": "Optional absolute path to an .aep file to open first.",
554
+ "tool.list_project_items.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
555
+ "tool.list_render_queue": "List render queue items and output modules in the current or provided project.",
556
+ "tool.list_render_queue.param.projectPath": "Optional absolute path to an .aep file to open first.",
557
+ "tool.list_render_queue.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
558
+ "tool.list_render_templates": "List available render settings templates and output module templates in After Effects.",
559
+ "tool.list_shape_groups": "List shape groups inside a shape layer.",
560
+ "tool.list_shape_groups.param.layerName": "Shape layer name.",
561
+ "tool.list_text_animators": "List all text animators on a text layer.",
562
+ "tool.lock_mask": "Lock or unlock a mask on a layer.",
563
+ "tool.move_items_to_folder": "Move project panel items into an existing folder.",
564
+ "tool.move_items_to_folder.param.folderId": "Optional destination folder id.",
565
+ "tool.move_items_to_folder.param.folderName": "Optional destination folder name.",
566
+ "tool.move_items_to_folder.param.itemIds": "Project item ids to move.",
567
+ "tool.move_items_to_folder.param.itemNames": "Project item names to move.",
568
+ "tool.move_items_to_folder.param.projectPath": "Optional absolute path to an .aep file to open first.",
569
+ "tool.move_items_to_folder.param.save": "Save the project after moving. Defaults to false.",
570
+ "tool.move_items_to_folder.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
571
+ "tool.new_project": "Create a new After Effects project and optionally save it to disk.",
572
+ "tool.new_project.param.saveAs": "Optional absolute .aep path to save the new project.",
573
+ "tool.new_project.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
574
+ "tool.open_project": "Open an .aep project in After Effects.",
575
+ "tool.open_project.param.projectPath": "Absolute path to an .aep file.",
576
+ "tool.open_project.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
577
+ "tool.panel_create_comp": "[Panel mode] Create a new composition in the open After Effects project.",
578
+ "tool.panel_create_comp.param.bg_color": "Background color [r,g,b] each 0-1 (default black)",
579
+ "tool.panel_create_comp.param.duration_seconds": "Duration in seconds (default 5)",
580
+ "tool.panel_create_comp.param.frame_rate": "Frame rate (default 30)",
581
+ "tool.panel_create_comp.param.height": "Height in px (default 1080)",
582
+ "tool.panel_create_comp.param.name": "Composition name (default: 'New Comp')",
583
+ "tool.panel_create_comp.param.width": "Width in px (default 1920)",
584
+ "tool.panel_get_project_info": "[Panel mode] Get the open After Effects project info: file path, item count, active item, bit depth.",
585
+ "tool.panel_healthcheck": "Ping the Synthetic AE MCP CEP panel running inside After Effects. Returns AE version, current project path, and the active comp name. Use this first to confirm panel mode is available before calling other panel_* tools.",
586
+ "tool.panel_list_comps": "[Panel mode] List every composition in the open After Effects project — id, name, dimensions, duration, frame rate, layer count. Instant (no aerender spawn).",
587
+ "tool.panel_list_layers": "[Panel mode] List layers in a composition. Defaults to the active comp.",
588
+ "tool.panel_list_layers.param.comp_id": "Composition id from panel_list_comps (omit for active comp)",
589
+ "tool.panel_set_layer_property": "[Panel mode] Set a transform property on a layer (Position, Scale, Rotation, Opacity).",
590
+ "tool.panel_set_layer_property.param.layer_index": "1-based layer index inside the comp",
591
+ "tool.panel_set_layer_property.param.value": "New value — number for Rotation/Opacity, array [x,y] for Position/Scale",
592
+ "tool.parent_layer": "Set or clear a layer parent.",
593
+ "tool.parent_layer.param.compName": "Composition name.",
594
+ "tool.parent_layer.param.layerName": "Layer name.",
595
+ "tool.parent_layer.param.parentLayerName": "Optional parent layer name. Omit or empty to clear.",
596
+ "tool.parent_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
597
+ "tool.parent_layer.param.save": "Save the project after parenting. Defaults to false.",
598
+ "tool.parent_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
599
+ "tool.precompose_layers": "Precompose selected layers into a new composition.",
600
+ "tool.precompose_layers.param.layerIndices": "Layer indices to precompose (1-based).",
601
+ "tool.precompose_layers.param.layerNames": "Layer names to precompose.",
602
+ "tool.precompose_layers.param.moveAllAttributes": "Move all attributes into the new comp. Defaults to true.",
603
+ "tool.precompose_layers.param.newCompName": "Name for the new precomp. Defaults to 'Precomp 1'.",
604
+ "tool.project_info": "Return structured information about the current or provided After Effects project.",
605
+ "tool.project_info.param.projectPath": "Optional absolute path to an .aep file to open first.",
606
+ "tool.project_info.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
607
+ "tool.purge_caches": "Purge After Effects memory and/or disk image caches.",
608
+ "tool.purge_caches.param.target": "all, memory, or disk. Defaults to all.",
609
+ "tool.redo": "Redo the last undone operation in After Effects.",
610
+ "tool.reduce_project": "Remove unused footage items and comps from the project (equivalent to File > Reduce Project).",
611
+ "tool.relink_missing_footage": "Relink missing footage by matching filenames against one or more search roots.",
612
+ "tool.relink_missing_footage.param.projectPath": "Optional absolute path to an .aep file to open first.",
613
+ "tool.relink_missing_footage.param.recursive": "Search subfolders. Defaults to true.",
614
+ "tool.relink_missing_footage.param.save": "Save the project after relinking. Defaults to false.",
615
+ "tool.relink_missing_footage.param.searchRoots": "Absolute folders to search.",
616
+ "tool.relink_missing_footage.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
617
+ "tool.remove_comp_marker": "Remove a composition marker by index (1-based) or time.",
618
+ "tool.remove_comp_marker.param.index": "1-based marker index.",
619
+ "tool.remove_comp_marker.param.time": "Marker time in seconds (used if index not provided).",
620
+ "tool.remove_effect": "Remove an effect from a layer by name, match name, or index.",
621
+ "tool.remove_effect.param.effectIndex": "1-based effect index.",
622
+ "tool.remove_effect.param.effectName": "Effect display name or match name.",
623
+ "tool.remove_guide": "Remove a specific guide from a composition by its 0-based index.",
624
+ "tool.remove_guide.param.guideIndex": "0-based guide index (from list_guides)",
625
+ "tool.remove_keyframes": "Remove keyframes from a layer property by indices or time range.",
626
+ "tool.remove_keyframes.param.all": "Remove all keyframes. Defaults to false.",
627
+ "tool.remove_keyframes.param.compName": "Composition name.",
628
+ "tool.remove_keyframes.param.indices": "Optional 1-based keyframe indices.",
629
+ "tool.remove_keyframes.param.layerName": "Layer name.",
630
+ "tool.remove_keyframes.param.projectPath": "Optional absolute path to an .aep file to open first.",
631
+ "tool.remove_keyframes.param.propertyPath": "Property path, preferably match names.",
632
+ "tool.remove_keyframes.param.save": "Save after updating. Defaults to false.",
633
+ "tool.remove_keyframes.param.timeEnd": "Optional inclusive end time.",
634
+ "tool.remove_keyframes.param.timeStart": "Optional inclusive start time.",
635
+ "tool.remove_keyframes.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
636
+ "tool.remove_layer_marker": "Remove a layer marker by index (1-based) or time.",
637
+ "tool.remove_property_from_mogrt": "Remove a property from the Essential Graphics panel (un-expose it from the MOGRT).",
638
+ "tool.remove_property_from_mogrt.param.propertyName": "Display name of the Essential Graphics property to remove.",
639
+ "tool.remove_render_queue_item": "Remove a render queue item by 1-based index.",
640
+ "tool.remove_render_queue_item.param.queueIndex": "1-based render queue item index.",
641
+ "tool.remove_shape_group": "Remove a shape group from a shape layer by name or index.",
642
+ "tool.remove_shape_group.param.groupIndex": "1-based group index.",
643
+ "tool.remove_text_animator": "Remove a text animator from a text layer by name or 1-based index.",
644
+ "tool.remove_text_animator.param.animatorIndex": "1-based animator index (used if animatorName not given)",
645
+ "tool.rename_item": "Rename a project panel item by id or name.",
646
+ "tool.rename_item.param.itemId": "Optional project item id.",
647
+ "tool.rename_item.param.itemName": "Optional project item name.",
648
+ "tool.rename_item.param.newName": "New item name.",
649
+ "tool.rename_item.param.projectPath": "Optional absolute path to an .aep file to open first.",
650
+ "tool.rename_item.param.save": "Save the project after renaming. Defaults to false.",
651
+ "tool.rename_item.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
652
+ "tool.rename_layer": "Rename a layer.",
653
+ "tool.rename_layer.param.compName": "Composition name.",
654
+ "tool.rename_layer.param.layerName": "Layer name.",
655
+ "tool.rename_layer.param.newName": "New layer name.",
656
+ "tool.rename_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
657
+ "tool.rename_layer.param.save": "Save the project after renaming. Defaults to false.",
658
+ "tool.rename_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
659
+ "tool.rename_mogrt_controller": "Rename an Essential Graphics controller by 1-based index.",
660
+ "tool.rename_mogrt_controller.param.compName": "Composition name.",
661
+ "tool.rename_mogrt_controller.param.controllerIndex": "1-based controller index.",
662
+ "tool.rename_mogrt_controller.param.controllerName": "New controller name.",
663
+ "tool.rename_mogrt_controller.param.projectPath": "Optional absolute path to an .aep file to open first.",
664
+ "tool.rename_mogrt_controller.param.save": "Save after updating. Defaults to false.",
665
+ "tool.rename_mogrt_controller.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
666
+ "tool.render_comp": "Render a composition with aerender.exe. This is the most reliable render path for automation.",
667
+ "tool.render_comp.param.compName": "Composition name to render.",
668
+ "tool.render_comp.param.outputModule": "Optional output module template name.",
669
+ "tool.render_comp.param.outputPath": "Absolute output path.",
670
+ "tool.render_comp.param.projectPath": "Absolute path to an .aep file.",
671
+ "tool.render_comp.param.renderSettings": "Optional render settings template name.",
672
+ "tool.render_comp.param.timeoutMs": "Process timeout in milliseconds. Defaults to 1800000.",
673
+ "tool.render_comp_range": "Render a composition frame range with aerender.exe for quick automated verification.",
674
+ "tool.render_comp_range.param.compName": "Composition name to render.",
675
+ "tool.render_comp_range.param.endFrame": "Optional end frame.",
676
+ "tool.render_comp_range.param.frameIncrement": "Optional frame increment.",
677
+ "tool.render_comp_range.param.outputModule": "Optional output module template name.",
678
+ "tool.render_comp_range.param.outputPath": "Absolute output path.",
679
+ "tool.render_comp_range.param.projectPath": "Absolute path to an .aep file.",
680
+ "tool.render_comp_range.param.renderSettings": "Optional render settings template name.",
681
+ "tool.render_comp_range.param.reuse": "Ask aerender to reuse the running AE instance. Defaults to false.",
682
+ "tool.render_comp_range.param.startFrame": "Optional start frame.",
683
+ "tool.render_comp_range.param.timeoutMs": "Process timeout in milliseconds. Defaults to 1800000.",
684
+ "tool.render_comp_range.param.verbose": "Optional verbose flag, e.g. ERRORS or ERRORS_AND_PROGRESS.",
685
+ "tool.render_project_queue": "Render the existing After Effects render queue with aerender.exe.",
686
+ "tool.render_project_queue.param.projectPath": "Absolute path to an .aep file with queued render items.",
687
+ "tool.render_project_queue.param.reuse": "Ask aerender to reuse the running AE instance. Defaults to false.",
688
+ "tool.render_project_queue.param.timeoutMs": "Process timeout in milliseconds. Defaults to 1800000.",
689
+ "tool.render_project_queue.param.verbose": "Optional verbose flag, e.g. ERRORS or ERRORS_AND_PROGRESS.",
690
+ "tool.reorder_effect": "Move an effect up or down in the effect stack by a given number of positions.",
691
+ "tool.reorder_effect.param.delta": "Positions to move: negative = up, positive = down.",
692
+ "tool.reorder_effect.param.effectIndex": "1-based current index.",
693
+ "tool.reorder_layer": "Move a layer before, after, to beginning, to end, or to a specific index.",
694
+ "tool.reorder_layer.param.compName": "Composition name.",
695
+ "tool.reorder_layer.param.layerName": "Layer name.",
696
+ "tool.reorder_layer.param.mode": "before, after, beginning, end, or index.",
697
+ "tool.reorder_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
698
+ "tool.reorder_layer.param.save": "Save the project after reordering. Defaults to false.",
699
+ "tool.reorder_layer.param.targetIndex": "Target index for index mode.",
700
+ "tool.reorder_layer.param.targetLayerName": "Target layer for before/after.",
701
+ "tool.reorder_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
702
+ "tool.replace_footage": "Replace the source file of a footage item by item name.",
703
+ "tool.replace_footage.param.filePath": "Absolute path to the replacement file.",
704
+ "tool.replace_footage.param.itemName": "Footage item name.",
705
+ "tool.replace_footage.param.projectPath": "Optional absolute path to an .aep file to open first.",
706
+ "tool.replace_footage.param.save": "Save the project after updating. Defaults to false.",
707
+ "tool.replace_footage.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
708
+ "tool.reverse_keyframes": "Reverse the temporal order of all keyframes on a property.",
709
+ "tool.run_jsx": "Run raw ExtendScript/JSX in After Effects. The script runs in the desktop app.",
710
+ "tool.run_jsx.param.script": "ExtendScript/JSX source code.",
711
+ "tool.run_jsx.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
712
+ "tool.run_jsx_json": "Run JSX inside the shared JSON wrapper and return the parsed JSON payload.",
713
+ "tool.run_jsx_json.param.scriptBody": "JSX body. Call __write(payload) to return structured data.",
714
+ "tool.run_jsx_json.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
715
+ "tool.save_project": "Save the current or provided After Effects project in place.",
716
+ "tool.save_project.param.projectPath": "Optional absolute path to an .aep file to open first.",
717
+ "tool.save_project.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
718
+ "tool.save_project_as": "Save the current or provided project to an explicit .aep path.",
719
+ "tool.save_project_as.param.projectPath": "Optional absolute path to an .aep file to open first.",
720
+ "tool.save_project_as.param.saveAs": "Absolute .aep output path.",
721
+ "tool.save_project_as.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
722
+ "tool.sequence_layers": "Sequence a list of layers in time so each starts after the previous ends (or with an overlap).",
723
+ "tool.sequence_layers.param.layerNames": "Layers to sequence in order.",
724
+ "tool.sequence_layers.param.overlap": "Overlap in seconds between consecutive layers. Negative = gap. Defaults to 0.",
725
+ "tool.sequence_layers.param.startTime": "Start time for the first layer in seconds. Defaults to comp work area start.",
726
+ "tool.set_3d_transform": "Set 3D transform properties on a layer, enabling 3D when needed.",
727
+ "tool.set_3d_transform.param.compName": "Composition name.",
728
+ "tool.set_3d_transform.param.layerName": "Layer name.",
729
+ "tool.set_3d_transform.param.orientation": "Optional [x,y,z].",
730
+ "tool.set_3d_transform.param.position": "Optional [x,y,z].",
731
+ "tool.set_3d_transform.param.projectPath": "Optional absolute path to an .aep file to open first.",
732
+ "tool.set_3d_transform.param.save": "Save after updating. Defaults to false.",
733
+ "tool.set_3d_transform.param.scale": "Optional scale array.",
734
+ "tool.set_3d_transform.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
735
+ "tool.set_alpha_mode": "Set the alpha interpretation for a footage item (ignore, straight, premultiplied).",
736
+ "tool.set_alpha_mode.param.alphaMode": "ignore | straight | premultiplied",
737
+ "tool.set_alpha_mode.param.premultColor": "RGB 0..1 for premultiplied matte color. Defaults to [0,0,0].",
738
+ "tool.set_audio_keyframes": "Set keyframe values on a layer's Audio Levels property for audio mixing automation (fade in/out).",
739
+ "tool.set_audio_keyframes.param.keyframes": "Array of {time, value} where value is in dB (e.g. 0 = 0dB, -48 = silence). Pass a 2-element array for stereo [leftDb, rightDb] or a single number for both channels.",
740
+ "tool.set_blending_mode": "Set a layer blending mode by enum name such as NORMAL, ADD, SCREEN, MULTIPLY.",
741
+ "tool.set_blending_mode.param.blendingMode": "BlendingMode enum suffix/name.",
742
+ "tool.set_blending_mode.param.compName": "Composition name.",
743
+ "tool.set_blending_mode.param.layerName": "Layer name.",
744
+ "tool.set_blending_mode.param.projectPath": "Optional absolute path to an .aep file to open first.",
745
+ "tool.set_blending_mode.param.save": "Save the project after updating. Defaults to false.",
746
+ "tool.set_blending_mode.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
747
+ "tool.set_camera_dof": "Enable or disable depth-of-field on a camera layer and set focus distance, aperture, and blur level.",
748
+ "tool.set_camera_dof.param.aperture": "Aperture (F-stop).",
749
+ "tool.set_camera_dof.param.blurLevel": "Blur level percentage 0–1000.",
750
+ "tool.set_camera_dof.param.focusDistance": "Focus distance in pixels.",
751
+ "tool.set_camera_options": "Set common camera options: zoom, depth of field, focus distance, aperture, blur level.",
752
+ "tool.set_camera_options.param.compName": "Composition name.",
753
+ "tool.set_camera_options.param.layerName": "Camera layer name.",
754
+ "tool.set_camera_options.param.projectPath": "Optional absolute path to an .aep file to open first.",
755
+ "tool.set_camera_options.param.save": "Save after updating. Defaults to false.",
756
+ "tool.set_camera_options.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
757
+ "tool.set_comp_bg_color": "Set the background color of a composition.",
758
+ "tool.set_comp_bg_color.param.color": "RGB color 0..1, e.g. [0, 0, 0] for black.",
759
+ "tool.set_comp_renderer": "Set the renderer for a composition (Classic 3D, CINEMA 4D Renderer, or GPU Accelerated).",
760
+ "tool.set_comp_renderer.param.renderer": "ADBE Advanced 3d (Classic 3D), ADBE Cinema 4D Renderer, or ADBE GPU Accelerated Renderer.",
761
+ "tool.set_comp_work_area": "Set the work area in/out points of a composition without recreating it.",
762
+ "tool.set_comp_work_area.param.workAreaDuration": "Work area duration in seconds.",
763
+ "tool.set_comp_work_area.param.workAreaStart": "Work area start in seconds.",
764
+ "tool.set_effect_property": "Set an effect property value on a named layer.",
765
+ "tool.set_effect_property.param.compName": "Composition name.",
766
+ "tool.set_effect_property.param.effectIndex": "Optional 1-based effect index.",
767
+ "tool.set_effect_property.param.effectName": "Effect display name or match name.",
768
+ "tool.set_effect_property.param.layerName": "Layer name.",
769
+ "tool.set_effect_property.param.projectPath": "Optional absolute path to an .aep file to open first.",
770
+ "tool.set_effect_property.param.propertyPath": "Property path inside the effect.",
771
+ "tool.set_effect_property.param.save": "Save the project after updating. Defaults to false.",
772
+ "tool.set_effect_property.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
773
+ "tool.set_effect_property.param.value": "New property value.",
774
+ "tool.set_environment_layer": "Toggle the environment layer flag on a 3D layer (used for HDRI/environment maps).",
775
+ "tool.set_expression": "Set or disable an expression on a layer property.",
776
+ "tool.set_expression.param.compName": "Composition name.",
777
+ "tool.set_expression.param.enabled": "Whether expression should be enabled. Defaults to true.",
778
+ "tool.set_expression.param.expression": "Expression source code.",
779
+ "tool.set_expression.param.layerName": "Layer name.",
780
+ "tool.set_expression.param.projectPath": "Optional absolute path to an .aep file to open first.",
781
+ "tool.set_expression.param.propertyPath": "Property path, preferably match names.",
782
+ "tool.set_expression.param.save": "Save the project after updating. Defaults to false.",
783
+ "tool.set_expression.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
784
+ "tool.set_footage_color_profile": "Assign a color profile / ICC profile to a footage item.",
785
+ "tool.set_footage_color_profile.param.colorProfile": "Color profile name as a string (e.g. 'sRGB IEC61966-2.1').",
786
+ "tool.set_footage_fields": "Set field order for interlaced footage (off, upper-field-first, lower-field-first).",
787
+ "tool.set_footage_fields.param.fieldSeparationType": "off | upper | lower",
788
+ "tool.set_footage_loop": "Set how many times a footage item loops (1 = no loop, 0 = loop indefinitely).",
789
+ "tool.set_footage_loop.param.loopCount": "Number of times to loop. 0 = infinite loop.",
790
+ "tool.set_footage_pixel_aspect": "Override the pixel aspect ratio of a footage item.",
791
+ "tool.set_footage_pixel_aspect.param.pixelAspect": "Pixel aspect ratio, e.g. 1.0 for square pixels, 0.9091 for D1/DV NTSC.",
792
+ "tool.set_frame_blend_mode": "Set frame blending mode on a layer.",
793
+ "tool.set_frame_blend_mode.param.mode": "none, frame_mix, or pixel_motion.",
794
+ "tool.set_gradient_fill": "Add or update a gradient fill on a shape group.",
795
+ "tool.set_gradient_fill.param.endColor": "RGB 0..1 for end color.",
796
+ "tool.set_gradient_fill.param.endPoint": "[x, y] end point.",
797
+ "tool.set_gradient_fill.param.gradientType": "linear | radial. Defaults to linear.",
798
+ "tool.set_gradient_fill.param.startColor": "RGB 0..1 for start color.",
799
+ "tool.set_gradient_fill.param.startPoint": "[x, y] start point.",
800
+ "tool.set_item_comment": "Set the comment string on a project item (footage, comp, or folder).",
801
+ "tool.set_item_label": "Set the label color index (0–16) of a project panel item.",
802
+ "tool.set_item_label.param.label": "Label index 0–16. 0 = no label.",
803
+ "tool.set_keyframe_ease": "Set temporal ease speed/influence for selected or all keyframes.",
804
+ "tool.set_keyframe_ease.param.compName": "Composition name.",
805
+ "tool.set_keyframe_ease.param.easeIn": "Array of {speed,influence}. One value is reused for all dimensions.",
806
+ "tool.set_keyframe_ease.param.easeOut": "Array of {speed,influence}. One value is reused for all dimensions.",
807
+ "tool.set_keyframe_ease.param.indices": "Optional 1-based keyframe indices. Defaults to all.",
808
+ "tool.set_keyframe_ease.param.layerName": "Layer name.",
809
+ "tool.set_keyframe_ease.param.projectPath": "Optional absolute path to an .aep file to open first.",
810
+ "tool.set_keyframe_ease.param.propertyPath": "Property path, preferably match names.",
811
+ "tool.set_keyframe_ease.param.save": "Save after updating. Defaults to false.",
812
+ "tool.set_keyframe_ease.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
813
+ "tool.set_keyframe_hold": "Convert keyframes to hold (step) interpolation on a property.",
814
+ "tool.set_keyframe_hold.param.keyIndices": "1-based keyframe indices to convert. Omit to convert all.",
815
+ "tool.set_keyframe_interpolation": "Set temporal interpolation for selected or all keyframes.",
816
+ "tool.set_keyframe_interpolation.param.compName": "Composition name.",
817
+ "tool.set_keyframe_interpolation.param.inType": "linear, bezier, or hold.",
818
+ "tool.set_keyframe_interpolation.param.indices": "Optional 1-based keyframe indices. Defaults to all.",
819
+ "tool.set_keyframe_interpolation.param.layerName": "Layer name.",
820
+ "tool.set_keyframe_interpolation.param.outType": "linear, bezier, or hold.",
821
+ "tool.set_keyframe_interpolation.param.projectPath": "Optional absolute path to an .aep file to open first.",
822
+ "tool.set_keyframe_interpolation.param.propertyPath": "Property path, preferably match names.",
823
+ "tool.set_keyframe_interpolation.param.save": "Save after updating. Defaults to false.",
824
+ "tool.set_keyframe_interpolation.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
825
+ "tool.set_keyframe_roving": "Enable or disable roving-through-space on spatial keyframes.",
826
+ "tool.set_keyframe_roving.param.keyIndices": "1-based keyframe indices. Omit for all.",
827
+ "tool.set_keyframes": "Set multiple keyframes on a named layer property using an After Effects property path.",
828
+ "tool.set_keyframes.param.compName": "Composition name.",
829
+ "tool.set_keyframes.param.keyframes": "Array of { time, value } keyframes.",
830
+ "tool.set_keyframes.param.layerName": "Layer name.",
831
+ "tool.set_keyframes.param.projectPath": "Optional absolute path to an .aep file to open first.",
832
+ "tool.set_keyframes.param.propertyPath": "Property path, preferably match names, e.g. [\"ADBE Transform Group\", \"ADBE Position\"].",
833
+ "tool.set_keyframes.param.save": "Save the project after updating. Defaults to false.",
834
+ "tool.set_keyframes.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
835
+ "tool.set_layer_audio": "Set audio levels and mute state of a layer.",
836
+ "tool.set_layer_audio.param.audioEnabled": "Enable or mute audio on the layer.",
837
+ "tool.set_layer_audio.param.audioLevels": "[left, right] audio levels in dB. Defaults to [0, 0].",
838
+ "tool.set_layer_collapse": "Enable or disable 'Collapse Transformations / Continuously Rasterize' on a layer.",
839
+ "tool.set_layer_label": "Set the label color index (0–16) of a layer.",
840
+ "tool.set_layer_label.param.label": "Label index 0–16. 0 = no label.",
841
+ "tool.set_layer_quality": "Set layer render quality (best, draft, or wireframe).",
842
+ "tool.set_layer_quality.param.quality": "best | draft | wireframe",
843
+ "tool.set_layer_sampling": "Set layer sampling quality (bilinear or bicubic). AE 2022+ only; silently ignored on older versions.",
844
+ "tool.set_layer_sampling.param.sampling": "bilinear | bicubic",
845
+ "tool.set_layer_style_property": "Set a property value inside a layer style (e.g. drop shadow distance, opacity, color).",
846
+ "tool.set_layer_style_property.param.property": "Property name inside the style, e.g. 'Opacity', 'Distance', 'Color'.",
847
+ "tool.set_layer_style_property.param.style": "Style name (same values as add_layer_style).",
848
+ "tool.set_layer_style_property.param.value": "Value to set.",
849
+ "tool.set_layer_switches": "Set common layer switches such as enabled, shy, solo, locked, guide, 3D, motion blur, and adjustment.",
850
+ "tool.set_layer_switches.param.compName": "Composition name.",
851
+ "tool.set_layer_switches.param.layerName": "Layer name.",
852
+ "tool.set_layer_switches.param.projectPath": "Optional absolute path to an .aep file to open first.",
853
+ "tool.set_layer_switches.param.save": "Save the project after updating. Defaults to false.",
854
+ "tool.set_layer_switches.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
855
+ "tool.set_layer_timing": "Set layer start/in/out/stretch timing.",
856
+ "tool.set_layer_timing.param.compName": "Composition name.",
857
+ "tool.set_layer_timing.param.inPoint": "Optional in point.",
858
+ "tool.set_layer_timing.param.layerName": "Layer name.",
859
+ "tool.set_layer_timing.param.outPoint": "Optional out point.",
860
+ "tool.set_layer_timing.param.projectPath": "Optional absolute path to an .aep file to open first.",
861
+ "tool.set_layer_timing.param.save": "Save the project after updating. Defaults to false.",
862
+ "tool.set_layer_timing.param.startTime": "Optional start time.",
863
+ "tool.set_layer_timing.param.stretch": "Optional stretch percent.",
864
+ "tool.set_layer_timing.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
865
+ "tool.set_light_options": "Set common light options: intensity, color, cone angle/feather, shadow darkness/diffusion.",
866
+ "tool.set_light_options.param.color": "RGB array.",
867
+ "tool.set_light_options.param.compName": "Composition name.",
868
+ "tool.set_light_options.param.layerName": "Light layer name.",
869
+ "tool.set_light_options.param.projectPath": "Optional absolute path to an .aep file to open first.",
870
+ "tool.set_light_options.param.save": "Save after updating. Defaults to false.",
871
+ "tool.set_light_options.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
872
+ "tool.set_mask_feather_opacity_expansion": "Set mask feather, opacity, and expansion.",
873
+ "tool.set_mask_feather_opacity_expansion.param.compName": "Composition name.",
874
+ "tool.set_mask_feather_opacity_expansion.param.expansion": "Optional expansion.",
875
+ "tool.set_mask_feather_opacity_expansion.param.feather": "Optional [x,y] feather.",
876
+ "tool.set_mask_feather_opacity_expansion.param.layerName": "Layer name.",
877
+ "tool.set_mask_feather_opacity_expansion.param.maskName": "Mask name.",
878
+ "tool.set_mask_feather_opacity_expansion.param.opacity": "Optional opacity 0..100.",
879
+ "tool.set_mask_feather_opacity_expansion.param.projectPath": "Optional absolute path to an .aep file to open first.",
880
+ "tool.set_mask_feather_opacity_expansion.param.save": "Save after updating. Defaults to false.",
881
+ "tool.set_mask_feather_opacity_expansion.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
882
+ "tool.set_mask_mode": "Set a mask mode.",
883
+ "tool.set_mask_mode.param.compName": "Composition name.",
884
+ "tool.set_mask_mode.param.layerName": "Layer name.",
885
+ "tool.set_mask_mode.param.maskName": "Mask name.",
886
+ "tool.set_mask_mode.param.mode": "add, subtract, intersect, lighten, darken, difference, none.",
887
+ "tool.set_mask_mode.param.projectPath": "Optional absolute path to an .aep file to open first.",
888
+ "tool.set_mask_mode.param.save": "Save after updating. Defaults to false.",
889
+ "tool.set_mask_mode.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
890
+ "tool.set_mask_name": "Rename a mask on a layer.",
891
+ "tool.set_mask_name.param.maskIndex": "1-based mask index.",
892
+ "tool.set_mask_path": "Set the shape vertices of a mask.",
893
+ "tool.set_mask_path.param.closed": "Whether the mask is closed. Defaults to true.",
894
+ "tool.set_mask_path.param.inTangents": "Optional array of [x, y] in-tangents. Defaults to [0,0] per vertex.",
895
+ "tool.set_mask_path.param.maskName": "Mask name or 1-based index.",
896
+ "tool.set_mask_path.param.outTangents": "Optional array of [x, y] out-tangents. Defaults to [0,0] per vertex.",
897
+ "tool.set_mask_path.param.vertices": "Array of [x, y] vertex pairs.",
898
+ "tool.set_material_options": "Set common 3D material options on a layer.",
899
+ "tool.set_material_options.param.compName": "Composition name.",
900
+ "tool.set_material_options.param.layerName": "Layer name.",
901
+ "tool.set_material_options.param.projectPath": "Optional absolute path to an .aep file to open first.",
902
+ "tool.set_material_options.param.save": "Save after updating. Defaults to false.",
903
+ "tool.set_material_options.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
904
+ "tool.set_merge_paths": "Add or set a Merge Paths operator on a shape group.",
905
+ "tool.set_merge_paths.param.mode": "add | subtract | intersect | exclude | divide. Defaults to add.",
906
+ "tool.set_mogrt_comment": "Set the comment/description on the Essential Graphics template for a comp.",
907
+ "tool.set_mogrt_controller_value": "Set the value of a property that is exposed as a controller in the Essential Graphics (MOGRT) panel.",
908
+ "tool.set_mogrt_controller_value.param.controllerName": "The display name of the MOGRT controller (as shown in Essential Graphics panel)",
909
+ "tool.set_mogrt_controller_value.param.value": "New value to set (number, array, string, or boolean depending on property type)",
910
+ "tool.set_mogrt_name": "Set a composition Motion Graphics Template name.",
911
+ "tool.set_mogrt_name.param.compName": "Composition name.",
912
+ "tool.set_mogrt_name.param.mogrtName": "Motion Graphics Template name.",
913
+ "tool.set_mogrt_name.param.projectPath": "Optional absolute path to an .aep file to open first.",
914
+ "tool.set_mogrt_name.param.save": "Save after updating. Defaults to false.",
915
+ "tool.set_mogrt_name.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
916
+ "tool.set_mogrt_property_range": "Set the min/max range (slider bounds) for a numeric Essential Graphics controller.",
917
+ "tool.set_output_module": "Configure the output module of a render queue item (format, channels, depth, color).",
918
+ "tool.set_output_module.param.channels": "rgb | rgba | alpha",
919
+ "tool.set_output_module.param.depth": "8 | 16 | 32",
920
+ "tool.set_output_module.param.omIndex": "1-based output module index. Defaults to 1.",
921
+ "tool.set_output_module.param.rqIndex": "1-based render queue item index.",
922
+ "tool.set_output_module.param.templateName": "Apply a named output module template.",
923
+ "tool.set_preference": "Write an After Effects preference value (section + key).",
924
+ "tool.set_preference.param.type": "string | number | boolean. Defaults to string.",
925
+ "tool.set_preference.param.value": "String, number, or boolean value to store.",
926
+ "tool.set_project_color_settings": "Set project bits per channel (8, 16, or 32) and optionally the working color space.",
927
+ "tool.set_project_color_settings.param.bitsPerChannel": "8, 16, or 32.",
928
+ "tool.set_project_color_settings.param.workingSpace": "Optional color space name, e.g. 'sRGB IEC61966-2.1'.",
929
+ "tool.set_project_settings": "Set project-level settings: color depth (8/16/32 bits), time display (timecode/frames), audio sample rate, and expression engine.",
930
+ "tool.set_project_settings.param.audioSampleRate": "Audio sample rate in Hz — NOTE: read-only in AE ExtendScript, cannot be changed via script",
931
+ "tool.set_project_settings.param.bitsPerChannel": "Color bit depth per channel",
932
+ "tool.set_project_settings.param.expressionEngine": "Expression engine",
933
+ "tool.set_project_settings.param.timeDisplayType": "Time display format",
934
+ "tool.set_property_value": "Set a generic layer property value by After Effects property path.",
935
+ "tool.set_property_value.param.compName": "Composition name.",
936
+ "tool.set_property_value.param.layerName": "Layer name.",
937
+ "tool.set_property_value.param.projectPath": "Optional absolute path to an .aep file to open first.",
938
+ "tool.set_property_value.param.propertyPath": "Property path, preferably match names.",
939
+ "tool.set_property_value.param.save": "Save after updating. Defaults to false.",
940
+ "tool.set_property_value.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
941
+ "tool.set_property_value.param.value": "New property value.",
942
+ "tool.set_proxy": "Set a file proxy for a footage item.",
943
+ "tool.set_proxy.param.filePath": "Absolute proxy file path.",
944
+ "tool.set_proxy.param.itemName": "Footage item name.",
945
+ "tool.set_proxy.param.projectPath": "Optional absolute path to an .aep file to open first.",
946
+ "tool.set_proxy.param.save": "Save the project after updating. Defaults to false.",
947
+ "tool.set_proxy.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
948
+ "tool.set_render_queue_output": "Set render queue output module template and/or output path for an item.",
949
+ "tool.set_render_queue_output.param.outputModule": "Optional output module template name.",
950
+ "tool.set_render_queue_output.param.outputModuleIndex": "1-based output module index. Defaults to 1.",
951
+ "tool.set_render_queue_output.param.outputPath": "Optional absolute output path.",
952
+ "tool.set_render_queue_output.param.projectPath": "Optional absolute path to an .aep file to open first.",
953
+ "tool.set_render_queue_output.param.queueIndex": "1-based render queue item index.",
954
+ "tool.set_render_queue_output.param.save": "Save the project after updating. Defaults to false.",
955
+ "tool.set_render_queue_output.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
956
+ "tool.set_render_settings": "Set render settings on a render queue item (quality, resolution, frame blending, motion blur).",
957
+ "tool.set_render_settings.param.frameBlending": "on | off | current",
958
+ "tool.set_render_settings.param.motionBlur": "on | off | current",
959
+ "tool.set_render_settings.param.quality": "best | draft | wireframe",
960
+ "tool.set_render_settings.param.resolution": "full | half | third | quarter | custom",
961
+ "tool.set_render_settings.param.rqIndex": "1-based render queue item index.",
962
+ "tool.set_repeater": "Add or update a Repeater operator on a shape group (copies, offset, transform).",
963
+ "tool.set_repeater.param.copies": "Number of copies.",
964
+ "tool.set_repeater.param.offsetOpacity": "Opacity of first copy (0–100). Defaults to 100.",
965
+ "tool.set_repeater.param.offsetPosition": "[x, y] position offset per copy.",
966
+ "tool.set_repeater.param.offsetRotation": "Rotation offset per copy in degrees.",
967
+ "tool.set_repeater.param.offsetScale": "[x, y] scale offset per copy in percent.",
968
+ "tool.set_rq_item_enabled": "Enable or disable (queue/dequeue) a render queue item.",
969
+ "tool.set_rq_item_enabled.param.rqIndex": "1-based render queue item index.",
970
+ "tool.set_shape_fill": "Set or add the first fill in a shape layer.",
971
+ "tool.set_shape_fill.param.color": "RGB array with 0..1 values.",
972
+ "tool.set_shape_fill.param.compName": "Composition name.",
973
+ "tool.set_shape_fill.param.layerName": "Shape layer name.",
974
+ "tool.set_shape_fill.param.opacity": "Optional fill opacity 0..100.",
975
+ "tool.set_shape_fill.param.projectPath": "Optional absolute path to an .aep file to open first.",
976
+ "tool.set_shape_fill.param.save": "Save after updating. Defaults to false.",
977
+ "tool.set_shape_fill.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
978
+ "tool.set_shape_stroke": "Set or add the first stroke in a shape layer.",
979
+ "tool.set_shape_stroke.param.color": "RGB array with 0..1 values.",
980
+ "tool.set_shape_stroke.param.compName": "Composition name.",
981
+ "tool.set_shape_stroke.param.layerName": "Shape layer name.",
982
+ "tool.set_shape_stroke.param.opacity": "Optional stroke opacity 0..100.",
983
+ "tool.set_shape_stroke.param.projectPath": "Optional absolute path to an .aep file to open first.",
984
+ "tool.set_shape_stroke.param.save": "Save after updating. Defaults to false.",
985
+ "tool.set_shape_stroke.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
986
+ "tool.set_shape_stroke.param.width": "Stroke width.",
987
+ "tool.set_shape_vertices": "Set the vertices, inTangents, outTangents and closed state of a shape path property.",
988
+ "tool.set_shape_vertices.param.atTime": "If provided, set as a keyframe at this time (seconds)",
989
+ "tool.set_shape_vertices.param.closed": "Whether the path is closed",
990
+ "tool.set_shape_vertices.param.inTangents": "Array of [x,y] in-tangent handles",
991
+ "tool.set_shape_vertices.param.outTangents": "Array of [x,y] out-tangent handles",
992
+ "tool.set_shape_vertices.param.pathName": "Path property name, defaults to 'Path 1'",
993
+ "tool.set_shape_vertices.param.vertices": "Array of [x,y] vertex positions",
994
+ "tool.set_spatial_tangents": "Set the spatial (bezier) in/out tangent handles for a specific keyframe of a position property.",
995
+ "tool.set_spatial_tangents.param.inTangent": "In tangent as [x,y] or [x,y,z]",
996
+ "tool.set_spatial_tangents.param.keyIndex": "1-based keyframe index",
997
+ "tool.set_spatial_tangents.param.outTangent": "Out tangent as [x,y] or [x,y,z]",
998
+ "tool.set_text_animator_property": "Set the animated value of a property (fill color, tracking, scale, opacity, position, blur) on an existing text animator.",
999
+ "tool.set_text_animator_property.param.animatorIndex": "1-based animator index",
1000
+ "tool.set_text_animator_property.param.propertyName": "Animated property name, e.g. 'Fill Color', 'Tracking Amount', 'Opacity', 'Scale', 'Position', 'Blur'",
1001
+ "tool.set_text_animator_property.param.value": "New value (number, [r,g,b] for color, [x,y] for position, etc.)",
1002
+ "tool.set_text_box": "Set box text dimensions and position on a text layer, or convert a point text layer to box text.",
1003
+ "tool.set_text_box.param.boxHeight": "Box height in pixels",
1004
+ "tool.set_text_box.param.boxPosX": "Box origin X (default 0)",
1005
+ "tool.set_text_box.param.boxPosY": "Box origin Y (default 0)",
1006
+ "tool.set_text_box.param.boxWidth": "Box width in pixels",
1007
+ "tool.set_text_justification": "Set the paragraph justification (left, center, right, full) of a text layer.",
1008
+ "tool.set_text_justification.param.justification": "Paragraph alignment. 'full'/'full_left' = fully justified last line left; 'full_right' = last line right.",
1009
+ "tool.set_text_layer": "Set the text content of a named text layer in a named composition.",
1010
+ "tool.set_text_layer.param.compName": "Composition name.",
1011
+ "tool.set_text_layer.param.layerName": "Text layer name.",
1012
+ "tool.set_text_layer.param.projectPath": "Optional absolute path to an .aep file to open first.",
1013
+ "tool.set_text_layer.param.save": "Save the project after changing the layer. Defaults to false.",
1014
+ "tool.set_text_layer.param.text": "New text content.",
1015
+ "tool.set_text_layer.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
1016
+ "tool.set_text_selector": "Configure the range selector on a text animator (start, end, offset, based on).",
1017
+ "tool.set_text_selector.param.animatorIndex": "1-based animator index. Defaults to 1.",
1018
+ "tool.set_text_selector.param.basedOn": "characters | words | lines. Defaults to characters.",
1019
+ "tool.set_text_selector.param.end": "End percentage 0–100.",
1020
+ "tool.set_text_selector.param.offset": "Offset percentage.",
1021
+ "tool.set_text_selector.param.selectorIndex": "1-based selector index. Defaults to 1.",
1022
+ "tool.set_text_selector.param.start": "Start percentage 0–100.",
1023
+ "tool.set_text_style": "Set typography properties on a text layer: font, size, color, tracking, leading, stroke, justification.",
1024
+ "tool.set_text_style.param.fillColor": "RGB array 0..1.",
1025
+ "tool.set_text_style.param.font": "PostScript font name, e.g. 'ArialMT'.",
1026
+ "tool.set_text_style.param.fontSize": "Font size in pixels.",
1027
+ "tool.set_text_style.param.justification": "left, center, right, or full.",
1028
+ "tool.set_text_style.param.layerName": "Text layer name.",
1029
+ "tool.set_text_style.param.leading": "Leading (line spacing) in pixels.",
1030
+ "tool.set_text_style.param.strokeColor": "RGB array 0..1.",
1031
+ "tool.set_text_style.param.strokeWidth": "Stroke width in pixels. 0 to disable.",
1032
+ "tool.set_text_style.param.tracking": "Tracking (letter spacing) in units/1000em.",
1033
+ "tool.set_text_style_range": "Apply font, fontSize, fillColor, or strokeColor to a specific character range inside a text layer. Uses TextDocument.characterRange() available in AE CC 2019+. startChar and endChar are 0-based (endChar exclusive).",
1034
+ "tool.set_text_style_range.param.endChar": "0-based end character index (exclusive).",
1035
+ "tool.set_text_style_range.param.fillColor": "RGB [r,g,b] 0-1",
1036
+ "tool.set_text_style_range.param.startChar": "0-based start character index.",
1037
+ "tool.set_text_style_range.param.strokeColor": "RGB [r,g,b] 0-1",
1038
+ "tool.set_track_matte": "Set track matte type on a layer. The layer above it in the stack acts as the matte source.",
1039
+ "tool.set_track_matte.param.matteType": "none, alpha, alpha_inverted, luma, or luma_inverted.",
1040
+ "tool.set_transform": "Set common transform properties on a named layer.",
1041
+ "tool.set_transform.param.anchorPoint": "Optional anchor point array.",
1042
+ "tool.set_transform.param.compName": "Composition name.",
1043
+ "tool.set_transform.param.layerName": "Layer name.",
1044
+ "tool.set_transform.param.opacity": "Optional opacity 0..100.",
1045
+ "tool.set_transform.param.position": "Optional position array.",
1046
+ "tool.set_transform.param.projectPath": "Optional absolute path to an .aep file to open first.",
1047
+ "tool.set_transform.param.rotation": "Optional 2D Z rotation in degrees.",
1048
+ "tool.set_transform.param.save": "Save the project after updating. Defaults to false.",
1049
+ "tool.set_transform.param.scale": "Optional scale array.",
1050
+ "tool.set_transform.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
1051
+ "tool.set_trim_paths": "Set Trim Paths (start, end, offset) on a shape group. Adds the operator if not present.",
1052
+ "tool.set_trim_paths.param.end": "End percentage 0–100.",
1053
+ "tool.set_trim_paths.param.offset": "Offset degrees.",
1054
+ "tool.set_trim_paths.param.start": "Start percentage 0–100.",
1055
+ "tool.split_layer": "Split a layer at a given time, producing two layers (like Ctrl+Shift+D).",
1056
+ "tool.split_layer.param.splitTime": "Time in seconds to split at. Defaults to current time.",
1057
+ "tool.toggle_expression": "Enable or disable an existing expression on a layer property.",
1058
+ "tool.toggle_expression.param.compName": "Composition name.",
1059
+ "tool.toggle_expression.param.enabled": "Expression enabled state.",
1060
+ "tool.toggle_expression.param.layerName": "Layer name.",
1061
+ "tool.toggle_expression.param.projectPath": "Optional absolute path to an .aep file to open first.",
1062
+ "tool.toggle_expression.param.propertyPath": "Property path, preferably match names.",
1063
+ "tool.toggle_expression.param.save": "Save after updating. Defaults to false.",
1064
+ "tool.toggle_expression.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
1065
+ "tool.trim_comp_to_work_area": "Trim a composition to its work area (sets duration = work area duration).",
1066
+ "tool.undo": "Undo the last operation in After Effects.",
1067
+ "tool.update_comp_marker": "Edit the properties of an existing composition marker (comment, duration, chapter, url). Identify the marker by index (1-based) or time.",
1068
+ "tool.update_comp_marker.param.index": "1-based key index of the marker",
1069
+ "tool.update_comp_marker.param.time": "Time in seconds to locate the marker (used if index not given)",
1070
+ "tool.update_comp_settings": "Update common composition settings such as dimensions, duration, frame rate, background, work area, pixel aspect ratio, and 3D renderer.",
1071
+ "tool.update_comp_settings.param.backgroundColor": "Optional RGB array with 0..1 values.",
1072
+ "tool.update_comp_settings.param.compName": "Composition name.",
1073
+ "tool.update_comp_settings.param.duration": "Optional duration seconds.",
1074
+ "tool.update_comp_settings.param.frameRate": "Optional frame rate.",
1075
+ "tool.update_comp_settings.param.height": "Optional height.",
1076
+ "tool.update_comp_settings.param.pixelAspect": "Optional pixel aspect ratio (e.g. 1.0 for square pixels, 0.9091 for D1/DV NTSC).",
1077
+ "tool.update_comp_settings.param.projectPath": "Optional absolute path to an .aep file to open first.",
1078
+ "tool.update_comp_settings.param.renderer": "Optional 3D renderer string: 'ADBE Advanced 3d' (Classic 3D) or 'ADBE Ernst' (Cinema 4D Lite).",
1079
+ "tool.update_comp_settings.param.save": "Save the project after updating. Defaults to false.",
1080
+ "tool.update_comp_settings.param.timeoutMs": "Process timeout in milliseconds. Defaults to 120000.",
1081
+ "tool.update_comp_settings.param.width": "Optional width.",
1082
+ "tool.update_comp_settings.param.workAreaDuration": "Optional work area duration.",
1083
+ "tool.update_comp_settings.param.workAreaStart": "Optional work area start.",
1084
+ "tool.update_layer_marker": "Edit the properties of an existing layer marker (comment, duration, chapter, url). Identify the marker by index (1-based) or time.",
1085
+ "tool.update_layer_marker.param.index": "1-based key index of the marker",
1086
+ "tool.update_layer_marker.param.time": "Time in seconds to locate the marker (used if index not given)",
1087
+ "tool.validate_render_output": "Validate that a rendered output exists and is non-empty enough for automated smoke checks.",
1088
+ "tool.validate_render_output.param.minBytes": "Minimum expected byte size. Defaults to 1024.",
1089
+ "tool.validate_render_output.param.outputPath": "Absolute path to a rendered file.",
1090
+ "ui.bridge.save": "Save",
1091
+ "ui.bridge.start": "Start bridge",
1092
+ "ui.bridge.stop": "Stop",
1093
+ "ui.bridge.tempDir": "Temp directory",
1094
+ "ui.i18n.language": "Language",
1095
+ "ui.i18n.restartNote": "The AI tool descriptions switch language after you restart the MCP server (or the app that runs it).",
1096
+ "ui.i18n.saveFailed": "Couldn't save the language preference. It will only last for this session.",
1097
+ "ui.i18n.saved": "Language saved.",
1098
+ "ui.license.empty": "Enter a license key before saving.",
1099
+ "ui.license.none": "No license key saved yet — required for updates.",
1100
+ "ui.license.saveFailed": "Failed to save license key (see log).",
1101
+ "ui.license.saved": "License key saved.",
1102
+ "ui.log.aeVersionUnknown": "Warning: Could not detect After Effects version",
1103
+ "ui.log.autoStartFailed": "Auto-start check failed: {error}",
1104
+ "ui.log.autoStarting": "Temp directory exists, auto-starting...",
1105
+ "ui.log.bridgeJsxFailed": "ae-bridge.jsx load failed: {error}",
1106
+ "ui.log.bridgeJsxLoaded": "ae-bridge.jsx loaded: {result}",
1107
+ "ui.log.bridgeStarted": "Bridge started. Temp dir: {dir}",
1108
+ "ui.log.bridgeStopped": "Bridge stopped",
1109
+ "ui.log.downloading": "Downloading {file}...",
1110
+ "ui.log.emptyResult": "evalScript returned no result (type={type}, len={length}). Treating as null.",
1111
+ "ui.log.execTimeout": "Execution timed out after {seconds}s",
1112
+ "ui.log.executing": "Executing: {file} ({chars} chars, {seconds}s timeout)",
1113
+ "ui.log.extPathError": "Could not resolve extension path (SystemPath undefined?): {error} — please reinstall the .zxp.",
1114
+ "ui.log.licenseSaveError": "Error saving license key: {error}",
1115
+ "ui.log.linkWiringFailed": "data-href wiring failed: {error}",
1116
+ "ui.log.loaded": "Synthetic AE MCP loaded (v{version})",
1117
+ "ui.log.mkdirError": "Error creating dir: {error}",
1118
+ "ui.log.noUpdate": "No update to apply",
1119
+ "ui.log.readFailed": "Failed to read: {file}",
1120
+ "ui.log.resultError": "Result: Error -- {error}",
1121
+ "ui.log.resultOk": "Result: OK",
1122
+ "ui.log.sizeDiffers": "Size differs from manifest for {file} ({got} vs {expected}) — continuing",
1123
+ "ui.log.tempDirRequired": "Please set a temp directory",
1124
+ "ui.log.tempDirSaved": "Temp directory saved: {dir}",
1125
+ "ui.log.title": "Activity log",
1126
+ "ui.log.unknownError": "unknown",
1127
+ "ui.log.updateAborted": "Update aborted: {reason}",
1128
+ "ui.log.updateApplied": "Update v{version} applied. RESTART AFTER EFFECTS to load the new panel.",
1129
+ "ui.log.updateNoLicense": "Update failed: no AE_MCP_LICENSE in environment",
1130
+ "ui.log.writeError": "Error writing {file}: {error}",
1131
+ "ui.product.subtitle": "Bridge · 220+ tools",
1132
+ "ui.settings.licenseKey": "License key",
1133
+ "ui.settings.licensePlaceholder": "Paste your AE MCP license key",
1134
+ "ui.settings.saveLicense": "Save license",
1135
+ "ui.shell.builtBy": "Built by",
1136
+ "ui.shell.openWebsite": "Open synthetic.com.ar",
1137
+ "ui.status.commandsProcessed": "Commands processed:",
1138
+ "ui.status.consecutiveErrors": "Running — {count} consecutive error(s)",
1139
+ "ui.status.panelReady": "Panel ready",
1140
+ "ui.status.polling": "Running — polling {dir}",
1141
+ "ui.status.ready": "Ready — click Start Bridge",
1142
+ "ui.status.running": "Running — {count} commands processed",
1143
+ "ui.status.stopped": "Stopped",
1144
+ "ui.status.unresponsive": "Running — After Effects unresponsive ({count} errors)",
1145
+ "ui.status.updateApplied": "Update applied — restart After Effects",
1146
+ "ui.status.updateFailed": "Update failed",
1147
+ "ui.toolbar.reload": "Reload panel",
1148
+ "ui.toolbar.settings": "Settings",
1149
+ "ui.update.appliedBody": "Close and reopen After Effects to activate v{version}.",
1150
+ "ui.update.appliedTitle": "Update applied.",
1151
+ "ui.update.available": "Update available",
1152
+ "ui.update.backupFailed": "Backup failed for {file}: {error}",
1153
+ "ui.update.commitFailed": "Commit failed (rolled back): {error}",
1154
+ "ui.update.downloadFailed": "Download failed for {file}: {error}",
1155
+ "ui.update.installerHint": "If hot-swap fails or the release needs a fresh manifest",
1156
+ "ui.update.later": "Later",
1157
+ "ui.update.now": "Update now",
1158
+ "ui.update.ok": "OK",
1159
+ "ui.update.shaMismatch": "SHA256 mismatch for {file} (got {got}..., expected {expected}...)",
1160
+ "ui.update.updating": "Updating..."
1161
+ }