After Effects MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@After Effects MCPCreate a 1080p comp, add a text layer with 'Hello', and animate it scaling up."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
After Effects MCP - Enhanced Multilingual Edition
Control Adobe After Effects from any MCP client (Claude Code / Claude Desktop) using natural language: create and inspect comps and layers, animate, apply effects and presets, manage masks/cameras, render in the background, and run arbitrary ExtendScript - with first‑class Arabic / RTL support and tools that work on After Effects in any UI language.
This is an enhanced edition built on the original work of Dakkshin/after-effects-mcp. See CREDITS.md.
https://github.com/user-attachments/assets/af6419bd-5854-46f7-a0ba-49231697eb18
Built and rendered end to end from a single prompt, no manual keyframing.
✨ Why this edition
Area | This edition |
Works in any AE language | All standard property lookups use locale‑independent |
Arabic / RTL text |
|
Arbitrary scripting |
|
Visual feedback |
|
Deep inspection |
|
Rendering | In‑app render queue and background |
Reliability | Per‑command IDs (no stale results), one undo group per command, faster polling, OneDrive‑proof shared folder, |
Layer management | Cameras, duplicate, delete, masks, batch transform, comp settings - as dedicated tools |
48 tools total. Full details in ENHANCEMENTS.md.
Related MCP server: after-effects-mcp
📋 Prerequisites
Adobe After Effects 2022 or later
Windows or macOS. After Effects itself only runs on these two platforms, so the server is meant to run on the same machine as After Effects. The Node process starts on Linux and the CI builds and tests there, but there is no After Effects for it to drive.
Node.js 18+ - https://nodejs.org
An MCP client (e.g. Claude Code:
npm install -g @anthropic-ai/claude-code)
🚀 Setup
git clone https://github.com/a-y-ibrahim/after-effects-mcp.git
cd after-effects-mcp
npm install # installs + builds
npm run install-bridge # copies the panel into AE's ScriptUI PanelsThen in After Effects:
Enable scripting - Windows: Edit > Preferences > Scripting & Expressions; macOS: After Effects > Settings > Scripting & Expressions → enable “Allow Scripts to Write Files and Access Network”.
Restart After Effects.
Window > mcp-bridge-auto.jsx - keep this panel open.
Register the server with your MCP client:
claude mcp add AfterEffectsMCP node /absolute/path/to/after-effects-mcp/build/index.jsFirst test: ask your client to “check the After Effects bridge”. It should report
bridgeVersion: 1.10.0-mcp-enhanced and versionMatch: true.
💡 If you edit the server, re‑run
npm run build, then restart the MCP client. If you edit the bridge, also re‑runnpm run install-bridgeand restart After Effects.
🧰 Tools at a glance
Inspection & diagnostics - see-frame, contact-sheet, match-reference, inspect-comp, inspect-layer, get-results, check-bridge, run-bridge-test, get-help
Composition & layers - create-composition, set-composition-properties, create-text-layer, localize-comp, create-camera, create-adjustment-layer, duplicate-layer, delete-layer, center-layers, set-layer-mask, batch-set-layer-properties
Animation - setLayerKeyframe, setLayerExpression, get-layer-clip-frames
Effects - apply-effect, add-any-effect, apply-effect-template, list-layer-effects, list-available-effects, set-effect-property, set-effect-keyframe, remove-effect, mcp_aftereffects_get_effects_help
Presets - list-presets, search-presets, apply-preset
Audio & markers - get-audio-info, set-audio-levels, analyze-audio-waveform, add-marker, add-markers-bulk
Rendering - add-to-render-queue, render-queue, start-render, render-aerender, render-status
Power - execute-script (arbitrary ExtendScript), run-script, test-animation
For project/comp overview you can also use run-script with getProjectInfo / listCompositions.
📖 Full reference: docs/TOOLS.md (all 48 tools) · docs/ARCHITECTURE.md (how the bridge works).
🌙 Arabic / RTL example
“Create a text layer that says ‘مرحبا بالعالم’”
create-text-layer detects the Arabic text and automatically sets right‑to‑left direction and
right alignment. Use a font that supports Arabic (e.g. Tahoma, Cairo). For full Arabic shaping,
enable the Middle‑Eastern text engine in After Effects (Windows: Preferences > Type;
macOS: Settings > Type).
🩺 Troubleshooting
Anything times out / odd behavior → ask “check the After Effects bridge” first.
Version mismatch warning → re‑run
npm run install-bridge, restart After Effects.“Result file appears stale” → the panel isn’t running or can’t write files; reopen it and confirm scripting permission.
Windows + OneDrive → the shared folder is
%LOCALAPPDATA%\ae-mcp-bridge(OneDrive‑proof). Override both sides with theAE_MCP_BRIDGE_DIRenv var if needed.
🧪 Development
npm run build # compile + copy the bridge script
npm run typecheck # tsc --noEmit
npm test # Vitest unit suitePure logic lives in src/lib/bridge-core.ts and is unit tested in tests/bridge-core.test.ts. CI type-checks and builds on Linux, macOS, and Windows across Node 18, 20, and 22, and runs the test suite on Node 20 and 22 (Vitest 4 requires Node 20+). See CONTRIBUTING.md for the architecture and how to add a tool.
📄 Credits & License
Licensed under the MIT License. Original work © 2025 Dakkshin; enhanced multilingual edition © 2026 Abdelrahman Youssef. See LICENSE and CREDITS.md.
Available Tools
50 toolsadd-any-effectB
Add any After Effects effect to a layer by matchName or display name.
| Name | Required | Description | Default |
|---|---|---|---|
| effect | Yes | Effect identifier. Prefer matchName for reliability (e.g., 'ADBE Gaussian Blur 2'). | |
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| effectSettings | No | Optional parameters to set immediately after adding the effect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It only describes the action without mentioning side effects, failure modes, prerequisites, or success indicators. This leaves significant transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 14-word sentence that directly states the core function. It is front-loaded, concise, and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is incomplete. It does not explain what happens after adding the effect (return value, errors), how effectSettings are applied, or any constraints (e.g., valid layer types). For a tool with 4 parameters and flexible behavior, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for all parameters with descriptions. The tool description adds the clarification that display names are accepted (not just matchName), which is not explicit in the schema. However, this is a minor addition beyond the already-complete schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add', the resource 'After Effects effect to a layer', and the specific method 'by matchName or display name'. This distinguishes it from sibling tools like apply-effect or apply-effect-template by emphasizing its general applicability and the naming convention.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'any After Effects effect' implies a general-purpose use case, and the parameter hint about preferring matchName gives some context. However, there is no explicit guidance on when to choose this tool over alternatives like apply-effect, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add-markerC
Add a marker to a layer or composition at a specified time. Markers can include a comment, label color, chapter name, URL and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to open when the marker is reached (for web export). | |
| label | No | Label color index (0 = none, 1-16 map to AE label colors). | |
| chapter | No | Chapter name associated with the marker. | |
| comment | No | Marker comment / label text. | |
| duration | No | Marker duration in seconds (0 = point marker). | |
| compIndex | Yes | 1-based composition index. | |
| layerName | No | Target layer name (alternative to layerIndex). | |
| layerIndex | No | Target layer index (required for layer markers). | |
| markerType | No | 'layer' (default) or 'comp' for a composition marker. | |
| timeInSeconds | No | Time in seconds where the marker is placed. Defaults to current time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions marker attributes but fails to disclose behaviors like the default time (current time), default marker type ('layer'), or potential side effects (e.g., modifying the composition). For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the action and target, and contains no unnecessary words. Every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This tool has 10 parameters, no output schema, and no annotations, yet the description provides minimal context. It does not explain required parameters (compIndex), the distinction between layer and composition markers, or how it differs from the sibling add-markers-bulk. The complexity demands more than this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 10 parameters. The description adds marginal value by listing the marker attributes (comment, label color, chapter, URL, duration) but does not explain parameter relationships or defaults beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a marker to a layer or composition at a specified time' with a specific verb and resource, and lists what markers can include. However, it does not explicitly distinguish from the sibling tool add-markers-bulk, which is very similar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no exclusions. The description simply states what it does without providing usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add-markers-bulkA
Add multiple layer or composition markers at once. Use this after analyze-audio-waveform to place markers at detected peaks, or to add any set of markers in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| markers | Yes | Array of markers to add. | |
| compIndex | Yes | 1-based composition index. | |
| layerName | No | Target layer name (alternative to layerIndex). | |
| layerIndex | No | Target layer index (required for layer markers). | |
| markerType | No | 'layer' (default) or 'comp' for composition-level markers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It only states the operation (add) but does not disclose side effects, prerequisites (e.g., valid comp or layer), edge cases, or whether it appends to existing markers. For a write operation, more transparency is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, and the second sentence gives actionable use context. Zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given moderate tool complexity and full schema coverage, the description covers purpose and primary workflow (audio waveform peaks). With no annotations or output schema, it could still mention potential errors or limits, but the current description is sufficient for basic correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description adds the high-level intent (bulk adding) but no additional parameter-specific semantics beyond what the schema provides, aligning with the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Add' with resource 'markers' and explicit bulk scope ('multiple', 'at once'). Distinguishes from sibling 'add-marker' by emphasizing batch operation and supports both layer and composition markers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: after analyze-audio-waveform to place detected peaks, or for any batch marker addition. Does not name alternative single-marker add-marker, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add-to-render-queueA
Add a composition to the After Effects render queue and configure its output. Select the comp by compName (most reliable), compIndex (1-based among compositions), or leave both empty to use the active comp. Templates must already exist in this AE installation.
| Name | Required | Description | Default |
|---|---|---|---|
| endTime | No | Render span end in seconds (optional). | |
| compName | No | Name of the composition to render (recommended). | |
| compIndex | No | 1-based index among compositions. Used only if compName is omitted. | |
| startTime | No | Render span start in seconds (optional). | |
| outputPath | No | Absolute output file path (e.g. C:\\renders\\out.mov). The extension should match the output module format. | |
| outputModuleTemplate | No | Name of an existing Output Module template to apply (e.g. 'Lossless', 'H.264 - Match Render Settings - 15 Mbps'). | |
| renderSettingsTemplate | No | Name of an existing Render Settings template to apply (e.g. 'Best Settings', 'Draft Settings'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It transparently explains the comp-selection precedence and the template prerequisite, which adds useful behavioral context. However, it does not disclose whether the render starts automatically, how existing render-queue items are affected, or what the return value or error behavior is—gaps that matter for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the core action, followed by selection rules and a necessary prerequisite. Every sentence earns its place, with no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 optional parameters, no required parameters, no output schema, and no annotations, the description covers the core task and key decision logic (comp selection, template existence). It could more explicitly state that this tool only queues/configures and that a separate sibling such as start-render is needed to actually start rendering, but the schema handles parameter details and the overall picture is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameters, so a baseline of 3 applies. The description adds meaning beyond the schema by framing compName as most reliable, clarifying compIndex as a fallback, and explaining the active-comp behavior when both are empty. It also reinforces that templates must pre-exist, which directly applies to the two template parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add a composition to the After Effects render queue and configure its output.' It uses a specific verb and resource, and the comp-selection details distinguish it from sibling tools like start-render or render-queue, which focus on different stages of the rendering workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete selection guidance: compName is 'most reliable', compIndex is 1-based and used only if compName is omitted, and leaving both empty uses the active comp. It also notes the prerequisite that templates must already exist. It does not explicitly contrast with sibling tools like start-render or render-status, but the intended usage is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze-audio-waveformA
Analyze an audio file to extract waveform amplitude data and detect peaks/transients. First call get-audio-info to retrieve the sourceFilePath, then pass it here. Returns normalized amplitude values (0-1) at evenly spaced time intervals plus an array of peak times where transients are detected. Uncompressed PCM WAV is read natively; any other format (mp3, m4a/aac, ogg, flac, a video file's audio track, ...) is transcoded on the fly via ffmpeg if it is installed and on PATH (override its location with the AE_FFMPEG_PATH env var).
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absolute path to the audio file (obtained from get-audio-info sourceFilePath). WAV works with no extra dependency; other formats need ffmpeg installed. | |
| numPoints | No | Number of amplitude samples to return (default: 200). Higher = more detail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return format (normalized amplitude values and peak times), the transcoding behavior for non-WAV formats, dependency on ffmpeg, and the env var override. This adds substantial behavioral context beyond the input schema, though it doesn't mention error conditions or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: purpose, prerequisite step, return details, and format handling. Each sentence earns its place, no fluff. The structure front-loads the core purpose and then provides critical workflow and dependency information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two params, no output schema, and no annotations, the description covers the essential workflow (get-audio-info first), output shape, and format constraints. It doesn't explain what 'peaks/transients' mean or specify time intervals, but these are not critical for selecting or invoking the tool correctly. Overall, it's fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying filePath semantics ('WAV works with no extra dependency; other formats need ffmpeg') and numPoints ('Higher = more detail'). These reinforce and extend the schema descriptions, making the tool easier to invoke correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Analyze an audio file to extract waveform amplitude data and detect peaks/transients.' This is a specific verb+resource+scoped purpose, and it distinguishes from siblings like get-audio-info (which likely returns metadata) and animate-to-audio (which uses audio for animation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'First call get-audio-info to retrieve the sourceFilePath, then pass it here.' It also explains when ffmpeg is needed versus native WAV support. However, it doesn't explicitly contrast with alternatives like animate-to-audio or state when not to use this tool, so it falls short of a fully explicit when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animate-from-dataA
Generate After Effects keyframes for a layer property directly from an arbitrary numeric data series - stock prices, sensor readings, scores, survey results, or any other time-ordered numbers (not audio; see animate-to-audio for that). Provide either data (explicit {time, value} points) or values + interval (an evenly-spaced series with an implied time step) - not both. Each raw value is normalized using [inputMin, inputMax] (auto-detected from the series when not given, so an unknown-range series still maps cleanly) and mapped to [outputMin, outputMax], with the same optional response curve and smoothing animate-to-audio uses. Targets a plain layer property (e.g. 'ADBE Opacity') by default, or an effect's property when effectIndex/effectName/effectMatchName is given.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Explicit {time, value} points, in seconds and raw data units (max 2000, one point becomes one keyframe). Does not need to be pre-sorted by time. Provide this or values+interval, not both. | |
| curve | No | Response shaping (default: linear). 'exponential' emphasizes high values; 'logarithmic' boosts low-value detail. | |
| values | No | Raw values for an evenly-spaced series (one every `interval` seconds, starting at `startTime`; max 2000). Provide this with interval, or use `data` instead for explicit per-point times. | |
| compName | No | Name of the target composition. Preferred over compIndex when both are given. | |
| inputMax | No | Raw data value mapped to outputMax. Auto-detected from the series (after smoothing) when omitted. | |
| inputMin | No | Raw data value mapped to outputMin. Auto-detected from the series (after smoothing) when omitted. | |
| interval | No | Seconds between consecutive `values` entries. Required when `values` is given. | |
| compIndex | No | 1-based composition index, used if compName is not given. | |
| layerName | No | Name of the target layer (alternative to layerIndex). | |
| outputMax | Yes | Property value at inputMax (or the series' highest point, when inputMax is not given). | |
| outputMin | Yes | Property value at inputMin (or the series' lowest point, when inputMin is not given). | |
| startTime | No | Seconds to offset every generated keyframe by. In `values` mode this is also where the series starts (default: 0). | |
| effectName | No | Display name of the effect to target. | |
| layerIndex | No | 1-based index of the target layer within the composition. | |
| effectIndex | No | 1-based index of the effect in the layer's Effects group, to target an effect property instead of a plain layer property. | |
| propertyName | No | Target property name or matchName (e.g. 'ADBE Opacity', 'ADBE Scale', 'ADBE Rotate Z' - matchNames are locale-independent and preferred). Used when propertyPath is not given, or as the effect-property fallback. | |
| propertyPath | No | Path to the target property, from the effect root (if an effect selector is given) or from the layer root otherwise, e.g. ['Compositing Options', 'Effect Opacity'] or [3, 1]. | |
| clearExisting | No | Remove the property's existing keyframes first (default: true). | |
| propertyIndex | No | Fallback target property index under the effect root (effect targeting only). | |
| effectMatchName | No | Internal matchName of the effect to target. | |
| keyframeOptions | No | Optional graph/easing controls applied uniformly to every keyframe this call generates. | |
| smoothingWindow | No | Moving-average window (in samples) applied to raw values before mapping, to smooth out noisy data (default: 1 = no smoothing). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains key behavioral aspects like normalization with auto-detected input range, mapping to output range, response curve, and smoothing. However, it omits the default destructive behavior of clearing existing keyframes (clearExisting defaults to true in the schema), which is a significant side effect not disclosed in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, starting with the core purpose and then progressively adding necessary detail. It is concise for the complexity, covering input modes, normalization, and targeting in a few sentences without unnecessary fluff, earning its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 22 parameters with comprehensive schema descriptions, the description provides a solid high-level overview that ties concepts together. It covers the main usage patterns and normalization logic, but could mention default behaviors like clearExisting and the max 2000 points limit (though that is in the schema). Overall, it is adequate for a complex tool with rich schema support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds significant meaning by explaining the normalization logic that ties inputMin/inputMax to outputMin/outputMax, and clarifies the relationship between data vs values+interval modes. It also introduces the concept of targeting effect properties, enriching the schema's existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Generate After Effects keyframes for a layer property directly from an arbitrary numeric data series', specifying the action, resource, and input type. It also distinguishes itself from the sibling tool animate-to-audio by explicitly stating 'not audio; see animate-to-audio for that', providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidance by contrasting with animate-to-audio and explaining the two mutually exclusive input modes (data vs values+interval). It also clarifies when to target effect properties versus plain layer properties, offering clear when-to-use and when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animate-to-audioA
Generate After Effects keyframes for a layer property directly from an audio file's waveform, in one call - no need to call analyze-audio-waveform and compute keyframes by hand first. Two modes: 'waveform' follows the amplitude envelope continuously (a VU-meter style effect - glow intensity, scale, or opacity riding the music), one keyframe per analyzed sample. 'peaks' pulses the property at each detected transient/beat and decays back to baseline (a beat-pop style effect - e.g. a logo scaling up on every kick). Accepts any audio format ffmpeg supports (mp3, m4a/aac, ogg, flac, ...) the same way analyze-audio-waveform does; uncompressed WAV needs no extra dependency. Targets a plain layer property (e.g. 'ADBE Opacity') by default, or an effect's property when effectIndex/effectName/effectMatchName is given.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'waveform' (default): continuous amplitude-follow. 'peaks': discrete pulse-and-decay at each detected transient. | |
| curve | No | Response shaping (default: linear). 'exponential' emphasizes loud peaks (punchier); 'logarithmic' boosts quiet-passage detail. In 'peaks' mode this only affects velocitySensitivePeaks scaling. | |
| compName | No | Name of the target composition. Preferred over compIndex when both are given. | |
| filePath | Yes | Absolute path to the audio file (obtained from get-audio-info sourceFilePath). | |
| compIndex | No | 1-based composition index, used if compName is not given. | |
| layerName | No | Name of the target layer (alternative to layerIndex). | |
| numPoints | No | Waveform samples to analyze, each becoming one keyframe in 'waveform' mode (default: 100). Ignored for keyframe generation in 'peaks' mode (still used to detect the peaks themselves), where the number of keyframes instead follows how many transients are detected. Kept well below analyze-audio-waveform's own cap since every point here becomes a real After Effects keyframe. | |
| outputMax | Yes | Property value at full amplitude (waveform amplitude 1, or peaks-mode value at the instant of a hit). | |
| outputMin | Yes | Property value at silence/rest (waveform amplitude 0, or peaks-mode baseline between hits). | |
| startTime | No | Seconds to offset every generated keyframe by, to start the animation partway through the comp (default: 0). | |
| effectName | No | Display name of the effect to target. | |
| layerIndex | No | 1-based index of the target layer within the composition. | |
| effectIndex | No | 1-based index of the effect in the layer's Effects group, to target an effect property instead of a plain layer property. | |
| propertyName | No | Target property name or matchName (e.g. 'ADBE Opacity', 'ADBE Scale', 'ADBE Rotate Z' - matchNames are locale-independent and preferred). Used when propertyPath is not given, or as the effect-property fallback. | |
| propertyPath | No | Path to the target property, from the effect root (if an effect selector is given) or from the layer root otherwise, e.g. ['Compositing Options', 'Effect Opacity'] or [3, 1]. | |
| clearExisting | No | Remove the property's existing keyframes first (default: true). | |
| propertyIndex | No | Fallback target property index under the effect root (effect targeting only). | |
| effectMatchName | No | Internal matchName of the effect to target. | |
| keyframeOptions | No | Optional graph/easing controls applied uniformly to every keyframe this call generates. | |
| smoothingWindow | No | Waveform mode only: moving-average window (in samples) to smooth out jittery amplitude before keyframing (default: 3, use 1 to disable). | |
| peakDecaySeconds | No | Peaks mode only: seconds to fall back to outputMin after each hit (default: 0.15). | |
| velocitySensitivePeaks | No | Peaks mode only: scale each hit's height by how loud that specific transient was, instead of every hit jumping to the same outputMax (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and handles it well. It discloses mode-specific behaviors (continuous waveform following vs. pulse-and-decay peaks), keyframe generation details (one per sample), and property targeting (plain layer vs. effect property). It also notes format dependencies, though it stops short of mentioning undo or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense but well-structured paragraph: purpose, then modes, then compatibility and targeting. Every sentence contributes useful information without fluff, and the length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 22 parameters and no output schema, the description covers all critical aspects: main purpose, mode semantics, supported audio formats, and property targeting. It could mention preconditions like composition existence, but overall it is highly complete for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining how numPoints maps directly to keyframe count and is intentionally capped lower than analyze-audio-waveform. It also clarifies how curve affects peaks mode, enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Generate After Effects keyframes for a layer property directly from an audio file's waveform, in one call.' It clearly distinguishes itself from the sibling analyze-audio-waveform by saying 'no need to call analyze-audio-waveform and compute keyframes by hand first,' and elaborates on two modes to clarify its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage context, explaining when to use it (for audio-driven keyframes) and describing two modes with example effects. It references the sibling analyze-audio-waveform for format compatibility. While it doesn't explicitly enumerate alternatives like setLayerKeyframe, it clearly implies this is the preferred automated approach versus manual keyframing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply-effectC
Apply an effect to a layer in After Effects
| Name | Required | Description | Default |
|---|---|---|---|
| effect | No | Generic effect identifier. Can be either exact display name or matchName. | |
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| effectName | No | Display name of the effect to apply (e.g., 'Gaussian Blur'). | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| presetPath | No | Optional path to an effect preset file (.ffx). | |
| effectCategory | No | Optional category for filtering effects. | |
| effectSettings | No | Optional parameters for the effect (e.g., { 'Blurriness': 25 }). | |
| effectMatchName | No | After Effects internal name for the effect (more reliable, e.g., 'ADBE Gaussian Blur 2'). | |
| effectIdentifier | No | Alias for effect. Can be either exact display name or matchName. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since there are no annotations, the description carries the full burden of revealing behavioral traits, but it only restates the action 'Apply an effect.' It does not mention side effects, reversibility, requirements, or return behavior, providing essentially no beyond-name transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no unnecessary words, making it concise and front-loaded. However, it is somewhat sparse and could have used the spare space to add useful context, so it does not reach a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no output schema, no annotations, and many overlapping sibling tools, the description is severely underspecified. It does not address return values, expected behavior, parameter selection strategies, or relationship to other tools, making it inadequate for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all 9 parameters, giving 100% coverage, so the baseline is 3. The description itself adds no parameter guidance and does not help disambiguate the overlapping effect identifiers (e.g., effect vs effectName vs effectMatchName), but it is not required to due to schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Apply'), the object ('an effect'), and the target scope ('to a layer in After Effects'). However, it does not distinguish this tool from sibling tools like add-any-effect or apply-effect-template, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites, exclusions, or conditions. It is a bare statement of action without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply-effect-templateB
Apply a predefined effect template to a layer in After Effects
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| templateName | Yes | Name of the effect template to apply. | |
| customSettings | No | Optional custom settings to override defaults. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without explaining important traits like whether existing effects are replaced, whether the operation is reversible, or what 'applying a template' actually entails (e.g., adding multiple effects, modifying layer properties).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler words. It efficiently communicates the core action and target resource, earning its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, optional nested object, no output schema), the description is too sparse. It fails to explain what a 'predefined effect template' is, how customSettings override defaults, or any side effects, leaving the agent without enough context to predict the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for compIndex, layerIndex, templateName (including an enum of available templates), and customSettings. The description adds no parameter-specific information, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Apply') and the resource ('a predefined effect template to a layer in After Effects'). It distinguishes from sibling tools like 'apply-effect' by emphasizing 'predefined template', which implies a package of effects rather than a single effect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'apply-effect' or 'apply-preset'. It does not mention any prerequisites, selection requirements, or scenarios where a template would be preferred over a simple effect or preset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply-presetB
Apply an After Effects .ffx preset file to a layer.
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| presetPath | Yes | Absolute path to the .ffx preset file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the action but does not explain whether the preset replaces existing effects, what compatibility requirements exist, or what the result/consequences are on the layer. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys the core action without unnecessary words. It is front-loaded with the verb and resource, making it instantly understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple mutation, but the description lacks critical behavioral context (e.g., side effects, prerequisites) and there is no output schema to describe return values. With no annotations, the description should be more comprehensive to be complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters (compIndex, layerIndex, presetPath). The description adds no extra meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: applying an After Effects .ffx preset file to a layer. It distinguishes itself from sibling tools like apply-effect (which likely applies effects by name) by specifying the preset file format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like apply-effect, apply-effect-template, or other preset-related tools. The description implies usage (applying a preset) but does not provide context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch-set-layer-propertiesA
Set transform/visibility properties on MANY layers in one call. Each operation targets a layer by layerIndex or layerName and may set any of: threeDLayer, position, scale, rotation, opacity, blendMode, startTime, outPoint. Setting position clears its existing keyframes first.
| Name | Required | Description | Default |
|---|---|---|---|
| compName | No | Composition name (or active comp if omitted). | |
| compIndex | No | 1-based comp index, if compName is omitted. | |
| operations | Yes | Array of per-layer operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key side effect—'Setting position clears its existing keyframes first'—and enumerates the properties affected, which is useful transparency for a mutation tool. It does not mention other potential side effects like whether other property sets clear keyframes, but this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence adds value. It summarizes what the tool does, how operations are targeted, and an important side effect without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch property-setting tool with no output schema, the description covers the main functionality, property options, and a notable side effect. It does not mention return values or error behavior, but these are less critical and the schema fills in comp selection and property formats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for all parameters, including the operations array structure and property details. The description adds context about keyframe clearing and the batch nature, but the schema already explains the parameter meanings well, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb-resource pair ('Set transform/visibility properties on MANY layers') and clearly distinguishes this batch operation from singular tools like setLayerKeyframe. The scope ('MANY layers') and property list are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies a batch use case ('on MANY layers in one call') and lists the properties that can be set, which differentiates from single-layer alternatives. However, it does not explicitly state when not to use it or name alternative tools for single-layer operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
center-layersA
Center one layer, selected layers, or all layers in a composition.
| Name | Required | Description | Default |
|---|---|---|---|
| allLayers | No | Center all layers in the composition. | |
| compIndex | Yes | 1-based composition index. | |
| layerName | No | Target layer name when centering a single layer. | |
| layerIndex | No | Target layer index when centering a single layer. | |
| selectedOnly | No | Center only selected layers in the composition. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states the action without mentioning side effects, such as modifying layer position values, whether the operation is reversible, or how nesting/anchors are handled. For a mutation tool, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero redundancy. Every word contributes to conveying the tool's purpose, achieving high efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, but the description omits how they interact (e.g., whether allLayers overrides other selectors, or if selectedOnly is ignored when layerName is set). Given no output schema or annotations, this missing behavioral context is a significant gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description adds no extra semantics beyond echoing selectors like 'selected layers' and 'all layers'. It does not clarify precedence or combinations, but baseline 3 is appropriate since schema handles explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Center') and resource ('one layer, selected layers, or all layers in a composition'), distinguishing it from all sibling tools. It immediately communicates the tool's core functionality without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies clear usage contexts: centering individual layers, selected layers, or all layers. While it doesn't explicitly mention alternatives or when-not-to-use, there are no close sibling tools for centering, so the scope is evident and consumers can infer appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check-bridgeA
Health check: verify the After Effects MCP Bridge panel is open and responding, report its version, the AE version, the shared bridge folder, and the open project/active comp. Run this FIRST when anything times out or behaves oddly. If it reports a version mismatch, re-run npm run install-bridge and restart After Effects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It communicates that the tool is a read-only verification and lists what it reports, implying non-destructive behavior. It also discloses the health-check nature and a possible remediation step. It could be stronger with an explicit non-mutating statement, but it is already clearly safe and informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and front-loads the purpose with 'Health check'. Every sentence earns its place: purpose and output, usage timing, and troubleshooting tip. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no params, no output schema), but the description compensates by listing the expected returned fields (version, AE version, bridge folder, project/active comp). It also tells the agent when to run it and what to do on mismatch, making the tool fully usable without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema has no properties. The description wisely avoids inventing parameter details and focuses on behavior and output, which aligns with the baseline for parameterless tools. Nothing more is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description begins with 'Health check' and uses specific verb 'verify', clearly stating it checks that the After Effects MCP Bridge panel is open and responding. It enumerates the report contents (version, AE version, bridge folder, open project/active comp), which unambiguously identifies the tool's function and differentiates it from sibling tools like run-bridge-test.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Run this FIRST when anything times out or behaves oddly', giving a clear condition for use. It also provides an alternative action for a version mismatch: re-run `npm run install-bridge` and restart After Effects, which tells the agent what to do next rather than just describing the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact-sheetA
See a composition's whole timeline at a glance: render N frames sampled across the duration and composite them into ONE labeled thumbnail grid, returned as a single image. Use this to perceive motion, timing, and easing cheaply (one image instead of many). Select the comp by name or 1-based index, or leave empty for the active comp.
| Name | Required | Description | Default |
|---|---|---|---|
| comp | No | Composition name or 1-based index. Omit to use the active comp. | |
| count | No | How many frames to sample across the duration (default 9). | |
| maxWidth | No | Width of the whole grid image in pixels (default 1024). | |
| timeoutMs | No | Wait time in ms (default 90000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains the process: sample frames across the duration, composite them into a labeled grid, and return a single image. It also addresses comp selection (name, 1-based index, or active comp). It does not mention timeout or resource implications, but the behavior is well-articulated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core value proposition ('See a composition's whole timeline at a glance'), followed by the method and selection instructions. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must cover the return value and key behaviors. It does so by stating the output is a single labeled image and explaining comp selection. The remaining parameters are well-documented in the schema, and the use case is clear. Minor gaps like timeout behavior are not critical for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal meaning beyond the schema: it reiterates the comp selection options and clarifies '1-based index', but does not elaborate on count, maxWidth, or timeoutMs. This is sufficient since the schema already documents each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: rendering N frames from a composition and compositing them into a single labeled thumbnail grid. It uses a specific verb (render/composite) and resource (composition timeline), distinguishing it from sibling tools like see-frame or get-layer-clip-frames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context ('Use this to perceive motion, timing, and easing cheaply') and explains the advantage of one image over many. It does not explicitly name alternatives or state when not to use it, but the guidance is sufficient for an AI to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-adjustment-layerA
Create an adjustment layer in the specified composition (or active comp).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Layer name (default: Adjustment Layer). | |
| size | No | Layer size [width,height]. Defaults to comp dimensions. | |
| compName | No | Composition name. If omitted, active composition is used. | |
| duration | No | Layer duration in seconds. | |
| position | No | Layer position [x,y] or [x,y,z]. | |
| startTime | No | Layer start time in seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description carries the full burden. It only states that it creates an adjustment layer but does not disclose any behavioral traits such as side effects, error handling, or what happens if the comp isn't found. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the verb and resource clearly, making it both concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description plus schema provide a reasonable understanding. However, it lacks information about return values or error behavior, and with no annotations, it's only minimally complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with all six parameters described in the schema. The tool description itself adds no parameter details, but the schema already provides sufficient meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create an adjustment layer') and the target ('in the specified composition (or active comp)'). It is specific and distinct from sibling tools like create-composition or apply-effect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when creating an adjustment layer in a comp), but it does not explicitly mention alternatives, exclusions, or prerequisites. There's no guidance like 'use this instead of create-composition'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-cameraA
Create a camera layer in a composition. Select the comp by compName/compIndex (or active comp).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Camera layer name (default: 'Camera'). | |
| zoom | No | Zoom in pixels (default ~1777.78, roughly a 50mm lens for 1080p). | |
| oneNode | No | If true, create a one-node camera (no point of interest). | |
| compName | No | Composition name (recommended). | |
| position | No | Camera position [x,y,z]. | |
| compIndex | No | 1-based index among compositions, if compName is omitted. | |
| pointOfInterest | No | Point of interest [x,y,z] (ignored for one-node cameras). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden. It discloses the comp selection behavior (compName/compIndex or active comp) but omits details about side effects, failure modes, or creation defaults such as default position. The mutation nature is implied by 'create' but not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the purpose, the second explains comp selection. Every sentence earns its place without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema richly describes all 7 parameters, and the description adds comp selection logic. However, there is no output schema and no mention of return values or failure behavior, leaving some context incomplete for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a note about comp selection, overlapping with the schema's own descriptions, but does not add new semantics for parameters like position, zoom, or oneNode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a camera layer in a composition' with a specific verb and resource, and adds comp selection details that distinguish it from sibling create tools like create-composition or create-adjustment-layer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating camera layers and explains how to target a comp (by name, index, or active), but it does not explicitly discuss when to use this tool versus alternatives or provide exclusions. No alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-compositionA
Create a new composition in After Effects with specified parameters
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the composition | |
| width | Yes | Width of the composition in pixels | |
| height | Yes | Height of the composition in pixels | |
| duration | No | Duration in seconds (default: 10.0) | |
| frameRate | No | Frame rate in frames per second (default: 30.0) | |
| pixelAspect | No | Pixel aspect ratio (default: 1.0) | |
| backgroundColor | No | Background color of the composition (RGB values 0-255) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool creates a new composition but doesn't mention default behavior (e.g., default duration/frameRate if omitted) or whether it overrides an existing comp. The schema provides defaults for some parameters, but the description adds no extra behavioral context. Since creation tools are generally non-destructive (new resource), the lack of warning is acceptable, but the description could mention that existing comps are not affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words. It is front-loaded with the action ('Create') and resource ('a new composition'), making it immediately clear. Every word serves a purpose, and it is neither verbose nor under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with a rich schema (7 parameters, all documented), the description doesn't need to explain return values (no output schema). It could mention that the composition is added to the project panel or the current project, but this is implied by 'in After Effects.' The lack of annotations and output schema lowers the burden, but the description could be a bit more explicit about the context (e.g., the composition is created in the active project). Overall, it is minimally complete but not exceptional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description's phrase 'specified parameters' is generic. Consequently, the description adds no extra meaning beyond the schema. A baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb ('Create') and resource ('a new composition in After Effects'), which clearly identifies the tool's function. It doesn't distinguish from sibling tools explicitly, but siblings like 'create-adjustment-layer' are different enough that no confusion is likely. A more specific mention of parameters like width/height/duration would strengthen it, but the current wording is adequate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives the context ('Create a new composition in After Effects') but no explicit when-to-use or alternatives. It implies that this is the go-to tool for creating comps, especially since siblings don't include another composition creator. However, no prerequisites or exclusions are mentioned, making it minimally adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-text-layerA
Create a text layer with full Arabic / RTL support. Direction is auto-detected from the text by default (Arabic -> right-to-left, right-aligned), or force it with direction. Works on After Effects in any language.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text content. Arabic is fully supported. | |
| color | No | Fill color [r,g,b] with each channel 0-1 (default white). | |
| compName | No | Composition name (or the active comp if omitted). | |
| duration | No | Layer duration in seconds (default 5). | |
| fontSize | No | Font size in pixels (default 72). | |
| position | No | Layer position [x,y] (default centered ~[960,540]). | |
| alignment | No | Paragraph alignment. If omitted and the text is RTL, defaults to 'right'. | |
| direction | No | Text direction. 'auto' (default) = RTL when the text contains Arabic; 'rtl' / 'ltr' to force. | |
| startTime | No | Layer start time in seconds. | |
| fontFamily | No | Font family (default 'Arial'). For Arabic use a font that supports Arabic, e.g. 'Arial', 'Tahoma', 'Cairo'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does explain the auto-detection of direction and default alignment for RTL, which is valuable. However, it doesn't mention behavior around composition selection, error handling, or side effects (e.g., whether it replaces existing layers). This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the core action, and every sentence adds value. It efficiently covers the unique feature (Arabic/RTL) and the practical 'works in any language' note without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, no output schema), the description covers the essential context: what the tool does, its primary differentiator, and compatibility. It doesn't explain return values or errors, but for a creation tool that's typically implicit. It's nearly complete for the target use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining how `direction` interacts with `alignment` (auto-detection, forcing, default right-alignment for RTL) and by suggesting font families that support Arabic. This clarifies the most nuanced parameter relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Create a text layer') and clearly distinguishes this tool from siblings like create-adjustment-layer or create-composition by highlighting full Arabic/RTL support. It immediately communicates the tool's unique value proposition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: whenever a text layer is needed, especially for Arabic/RTL content. It doesn't explicitly name alternatives or exclusions, but the phrasing 'Works on After Effects in any language' implies broad applicability. Slight lack of explicit alternative guidance prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-layerB
Delete a layer from a composition. Target the layer by layerIndex or layerName.
| Name | Required | Description | Default |
|---|---|---|---|
| compName | No | Composition name (or active comp if omitted). | |
| compIndex | No | 1-based comp index, if compName is omitted. | |
| layerName | No | Layer name to delete (alternative to layerIndex). | |
| layerIndex | No | 1-based layer index to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is a destructive operation with no annotations to signal the risk. The description merely says 'Delete' and mentions targeting, but it does not disclose that deletion is irreversible, what happens if both layerName and layerIndex are provided, or what errors occur if no target is specified. The description carries the full burden of behavioral disclosure and fails to address these important safety and edge-case behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action ('Delete a layer from a composition'), followed by the key targeting detail. No filler or redundant content; every word serves the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, and the description does not explain essential operational details. It fails to specify that exactly one of layerIndex or layerName is required (since the schema marks all parameters as optional), or what happens if both or neither are provided. It also does not describe error behavior for missing compositions or layers. Given the simplicity of the tool, these gaps make the description incomplete for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described in the input schema. The description adds 'Target the layer by layerIndex or layerName,' which reiterates the schema's own parameter descriptions but does not add deeper meaning such as mutual exclusivity, precedence, or required-target logic. It provides marginal value beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Delete a layer from a composition') with a clear resource (a layer) and context (composition). It distinguishes from sibling tools like duplicate-layer and inspect-layer by naming a unique operation. It also specifies targeting via layerIndex or layerName, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'Delete' and the resource type. However, there is no explicit guidance on when to use this tool vs alternatives, no mention of exclusions (e.g., cannot delete locked layers), and no note about requiring a composition to be active. The description provides clear context but no explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate-layerA
Duplicate a layer in a composition, optionally renaming the copy. Target the layer by layerIndex or layerName.
| Name | Required | Description | Default |
|---|---|---|---|
| newName | No | Optional new name for the duplicated layer. | |
| compName | No | Composition name (or active comp if omitted). | |
| compIndex | No | 1-based comp index, if compName is omitted. | |
| layerName | No | Layer name to duplicate (alternative to layerIndex). | |
| layerIndex | No | 1-based layer index to duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the transparency burden. It states the core operation and optional rename, which implies the original is preserved, but it does not disclose details such as the insertion position of the duplicate, the active comp fallback, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the primary action first and includes only necessary qualifiers. Every word contributes meaning; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five parameters, no annotations, and no output schema, the description covers the core purpose and targeting but omits cross-parameter constraints and return/error behavior. The schema fills many gaps, but the description could be more complete regarding parameter relationships.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for all five parameters, earning the baseline of 3. The description adds marginal value by restating layerIndex/layerName targeting and optional renaming, but it does not introduce constraints like exclusivity between layerName and layerIndex.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Duplicate' and defines the resource 'layer in a composition', then adds optional renaming and target selection via layerIndex or layerName. This clearly distinguishes it from sibling tools like delete-layer, inspect-layer, or setLayerKeyframe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that the tool is for creating a copy of a layer and states how to target it. While it does not explicitly name alternatives or exclusions, the purpose is self-evident and no conflicting sibling tool exists, so the implied usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute-scriptA
Run ARBITRARY ExtendScript (the After Effects scripting DOM) inside After Effects and return the result. This is the most powerful tool: use it for anything the dedicated tools do not cover - masks, track mattes, parenting, 3D layers/cameras/lights, blending modes, precomposing, time remapping, layer styles, text animators, puppet pins, importing/replacing footage, batch edits across many layers, project-wide changes, etc. Your code runs as the body of a function, so use return <value>; to send data back, and return only JSON-serializable values (numbers, strings, arrays, plain objects). The whole script already runs inside one undo group, so do NOT call app.beginUndoGroup yourself. Use app and app.project to reach everything. On error you get back the message and line number. Example script: "var c = app.project.activeItem; return { name: c.name, layers: c.numLayers };"
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ExtendScript code to execute. Runs as a function body; use 'return value;' to return JSON-serializable data. Do not call app.beginUndoGroup (handled automatically). | |
| timeoutMs | No | How long to wait for the result, in milliseconds (default 60000). Increase for long-running scripts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses critical behaviors: code runs as a function body, must return JSON-serializable values, the script is wrapped in a single undo group, and errors return message plus line number. It also notes not to call beginUndoGroup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence provides necessary guidance. It is front-loaded with the core purpose and immediately follows with usage examples and critical constraints. No redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that executes arbitrary code, the description is remarkably complete. It covers return contract, serialization, undo behavior, access points, error format, and gives a concrete example. No output schema exists, so the description correctly takes on the burden of explaining what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description significantly enhances the script parameter by explaining the function-body execution model, return value requirements, and error behavior. The timeoutMs parameter is only described in the schema, but the description adds no further detail, which is acceptable given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs arbitrary ExtendScript in After Effects and returns the result. It also differentiates from sibling tools by positioning itself as the catch-all for cases not covered by dedicated tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance to use the tool for anything the dedicated tools do not cover, with a long list of examples. It clearly implies the alternative (dedicated tools) but does not name specific sibling tools or provide an explicit 'when not to use' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-audio-infoA
Get audio metadata, source file path, existing markers, and audio level keyframes for a layer in After Effects.
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based composition index. | |
| layerName | No | Target layer name (alternative to layerIndex). | |
| layerIndex | No | Target layer index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It lists the exact data returned (metadata, source path, markers, keyframes), which provides some transparency. However, it does not explicitly state that the operation is read-only or describe behavior on missing layers, though 'Get' implies no side effects. This is adequate but not highly detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the verb and resource. It lists the four types of data retrieved without unnecessary elaboration, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with no output schema, the description lists all the expected return values. It does not detail output format or error conditions, but these omissions are minor given the tool's straightforward read-only nature. The description provides enough context for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all parameters, so the schema already explains each parameter. The description adds no extra parameter-level detail, such as how layerName and layerIndex interact. With full schema coverage, the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get audio metadata, source file path, existing markers, and audio level keyframes for a layer in After Effects.' It uses a specific verb ('Get') and resource ('audio info'), and it differs from siblings like 'set-audio-levels' and 'analyze-audio-waveform' by focusing on reading existing data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this tool when you need to retrieve audio-related information for a layer. It does not explicitly mention alternatives or when not to use it, but the descriptive text and tool name imply a read-only retrieval role. Since it does not mention exclusions, it earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-helpB
Get help on using the After Effects MCP integration
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Get help' without conveying what output to expect, whether it returns a list of commands, or if it has any side effects. The read-only nature is implied but not stated, and no additional behavioral context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple help tool with no parameters and no output schema, the description provides the essential purpose but lacks details about what kind of help is returned (e.g., command list, usage examples, or links). Since there is no output schema, the description should explain the return value, but it does not, leaving a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so the baseline score is 4. The description does not need to add parameter information because there are none to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get help on using the After Effects MCP integration'. It is more specific than a tautology and identifies the tool as general help, but it does not explicitly distinguish itself from the sibling tool 'mcp_aftereffects_get_effects_help', which appears to be a more specialized help option.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention situations where users should prefer the dedicated effects help tool or any other tool, and it offers no exclusions or contextual examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-layer-clip-framesB
Get a layer's clip start/end frames, source frame range, and duration in frames.
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based composition index. | |
| layerName | No | Target layer name if not using layerIndex. | |
| layerIndex | No | Target layer index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It implies a read-only operation via 'Get', but does not explain error behavior (e.g., layer not found), return format, or whether the tool relies on a selected layer when layerName/layerIndex are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It conveys the tool's purpose and output data efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, and the description does not clarify critical context like layer selection resolution (layerName vs layerIndex), whether compIndex is sufficient alone, or what happens if the layer is missing. This leaves important gaps for an agent trying to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all three parameters. The description adds no extra parameter-level detail, staying at the baseline 3 for schema-complete cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly names the resource ('a layer's clip start/end frames, source frame range, and duration in frames'). It unambiguously states what the tool returns and is distinct from sibling tools, none of which focus on retrieving layer timing data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the purpose (use when you need clip frame information), but there is no explicit guidance on when to use layerName vs layerIndex, or whether one is required beyond compIndex. No alternatives are mentioned, though no sibling tool directly competes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-resultsA
Get results from the last script executed in After Effects
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and clearly signals a read-only retrieval ('Get results'), but it does not disclose what the result payload looks like, whether it can fail, or whether it has side effects. The behavioral description is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and low complexity, the description is mostly adequate, but the absence of an output schema leaves 'results' undefined. The agent must guess whether it returns a string, object, or status, which is a notable gap for a tool with no other documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is 100% covered (empty properties), so the baseline for no parameters applies. The description does not need to explain parameters since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Get results') and scopes it to the last script executed in After Effects, clearly distinguishing it from sibling execution tools like run-script and execute-script. The subject and scope are immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'last script executed' implies the tool should be used after running a script, providing clear context, but it does not explicitly state when to use it versus alternatives or what happens if no script has been executed. No exclusions or alternative tool references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect-compA
Map a whole composition: its settings (size, fps, duration, work area) plus every layer with a useful summary - index, id, name, type, enabled/locked/shy/solo, 3D/adjustment/null flags, in/out/start, parent, blend mode, effect count, mask count, has-audio. Use this to navigate a comp and decide what to edit, then call inspect-layer for one layer's full detail. Select the comp by compName/compIndex, or leave both empty for the active comp.
| Name | Required | Description | Default |
|---|---|---|---|
| compName | No | Composition name (recommended). If omitted with no compIndex, the active comp is used. | |
| compIndex | No | 1-based index among compositions. Used if compName is omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the exact output content—settings (size, fps, duration, work area) and layer summary fields—and the comp selection fallback. It does not explicitly state that the tool is side-effect-free, but the 'inspect' and 'Map' framing strongly implies a read-only operation; a direct statement would make it a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: output specification, usage guidance, and parameter selection. The first sentence is dense but every item in the enumeration is informative; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing every output category in detail (composition settings and a comprehensive layer summary field list). It also explains comp selection and the recommended next action, making the tool fully self-contained for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of parameter semantics, including compName being recommended, compIndex being 1-based, and active comp fallback. The description essentially restates this selection logic without adding new parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Map a whole composition') and enumerates exactly what is returned: settings plus every layer with a detailed summary. It clearly differentiates from the sibling tool inspect-layer by noting that one should 'call inspect-layer for one layer's full detail.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the intended use case: 'Use this to navigate a comp and decide what to edit, then call inspect-layer for one layer's full detail.' It also provides clear selection guidance for compName/compIndex and the active comp fallback, so the agent knows when and how to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect-layerA
Deeply inspect ONE layer so you can SEE its exact state before making precise edits: type, enabled/locked/shy/solo, in/out points, parent, blend mode, 3D flag; the full Transform group (each property's value + expression + keyframes with times/values/interpolation); all effects with their property values; masks (mode/inverted/opacity/feather/expansion); markers; source file/dimensions; and text (font/size/fill) for text layers. Select the comp by compName/compIndex (or active comp) and the layer by layerIndex or layerName.
| Name | Required | Description | Default |
|---|---|---|---|
| compName | No | Composition name (recommended). If omitted with no compIndex, the active comp is used. | |
| compIndex | No | 1-based index among compositions. Used if compName is omitted. | |
| layerName | No | Layer name (alternative to layerIndex). | |
| layerIndex | No | 1-based layer index within the composition. | |
| maxKeyframes | No | Maximum keyframes reported per property (default: 50). | |
| includeKeyframes | No | Include per-keyframe times/values/interpolation for transform properties (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description strongly implies read-only behavior via 'inspect' and 'SEE its exact state', and provides detailed output expectations. However, it does not explicitly state that no modifications occur, which with no annotations leaves some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized, front-loading the purpose and using a list structure to enumerate covered properties without repeating schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and absence of an output schema, the description provides a thorough account of return contents (transform, effects, masks, markers, source, text) and selection logic, making it self-sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents all six parameters (100% coverage). The description adds a brief note on selection options (compName/compIndex, layerIndex/layerName, active comp) but does not add semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deeply inspects one layer and enumerates the exact state elements (type, transform, effects, masks, markers, source, text). This distinguishes it from sibling tools like inspect-comp or list-layer-effects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It frames the tool as a pre-edit inspection step ('before making precise edits') and specifies that it targets a single layer, selected by comp and layer identifiers. It lacks explicit alternatives/exclusions, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-available-effectsA
List all effects available in this After Effects installation, with optional text filter.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional text filter. Matches effect name, matchName, and category. | |
| maxResults | No | Maximum results to return (default: 5000). | |
| includeObsolete | No | Include obsolete effects (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It mentions the optional text filter but does not disclose default behavior like exclusion of obsolete effects or result limits, which are only in the schema. For a read-only listing, this is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 13 words that is front-loaded with the action and scope. No unnecessary words or repetition, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity, but with no output schema or annotations, the description needs to carry more context. It omits details about the return format and default filtering behavior, though the schema covers parameter specifics. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description only mentions the optional filter, which maps to the query parameter, but adds no extra meaning beyond the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and the resource (effects available in this After Effects installation). It distinguishes from sibling tools like list-layer-effects by specifying installation-level scope, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list-layer-effects or search-presets. The description does not mention any exclusions or trade-offs, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-layer-effectsC
List effects on a layer, with optional recursive property details.
| Name | Required | Description | Default |
|---|---|---|---|
| maxDepth | No | Maximum property recursion depth when includeProperties is true (default: 2). | |
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| includeValues | No | Include current values for non-group properties (default: false). | |
| includeProperties | No | Include effect property trees (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies a read operation ('List') but does not explicitly state safety, edge-case behavior, or how recursion affects output. The optional recursion hint is present but underelaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words. It front-loads the primary action and mentions the optional capability efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description should explain what the returned list looks like or what 'effects' includes. It also lacks context about parameter relationships (e.g., maxDepth only matters when includeProperties is true) and does not mention any limitations or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds the phrase 'recursive property details' which loosely maps to includeProperties/maxDepth, but it does not meaningfully enhance understanding beyond the already-detailed schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('List effects on a layer') and indicates an optional feature ('recursive property details'). While it doesn't explicitly differentiate from sibling tools like list-available-effects, the focus on 'on a layer' makes the purpose clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of when to prefer list-layer-effects over list-available-effects or other inspection tools, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-presetsA
List available After Effects .ffx presets from common or provided folders.
| Name | Required | Description | Default |
|---|---|---|---|
| maxDepth | No | Maximum directory depth when recursive is true (default: 10). | |
| recursive | No | Recursively search subdirectories (default: true). | |
| maxResults | No | Maximum number of preset files to return (default: 500). | |
| presetRoots | No | Optional absolute directories to search for presets. Defaults to common Adobe preset locations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral disclosure burden. It implies a read-only operation ('List available') and specifies the source folders, but it does not state what the tool returns (e.g., file paths vs. names), whether it requires After Effects to be running, or any limits like recursion defaults. This is adequate for a simple list tool but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, containing only 10 words, and is front-loaded with the core action ('List available After Effects .ffx presets'). Every word is purposeful and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but there is no output schema, so the description should clarify what the tool returns. It does not. Additionally, with sibling search-presets present, the description could have mentioned how list-presets differs (e.g., 'lists all presets from folders, while search-presets filters by query'). Overall, it provides the basic purpose but leaves these contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% description coverage for all four parameters, so the baseline is 3. The tool description adds minimal semantic value beyond the schema; 'common or provided folders' merely paraphrases the schema's presetRoots description, and no details about maxDepth, recursive, or maxResults are included in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), identifies the resource ('After Effects .ffx presets'), and specifies the scope ('from common or provided folders'). This clearly distinguishes it from sibling tools like apply-preset and search-presets by focusing on enumeration from filesystem locations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (when you need to discover available presets from common or custom folders), but it does not explicitly mention alternatives or when not to use it. Since sibling search-presets exists, a brief note on how it differs would have made this a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
localize-compA
Create a localized duplicate of a composition: swap in translated text for one or more text layers, auto-detecting Arabic and applying right-to-left direction/alignment (same logic as create-text-layer). Every other layer, effect, and animation is preserved unchanged because the whole composition is duplicated first. Text layers nested inside precompositions are reachable too via path: every precomposition on the path is safely duplicated the first time it's encountered (and reused if referenced again from another path), so the original precomps are never modified. Translation itself is the caller's job; pass the already-translated strings in translations.
| Name | Required | Description | Default |
|---|---|---|---|
| compName | No | Source composition name (or the active comp if omitted). | |
| compIndex | No | 1-based index among compositions, if compName is omitted. | |
| newCompName | No | Name for the new localized composition (default: '<source name> (localized)'). | |
| translations | Yes | One entry per text layer to localize, each targeting a layer by layerIndex/layerName (top level) or by path (nested inside precompositions). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the whole composition is duplicated first, preserving all layers/effects/animations, details how nested precomps are handled without modifying originals, and mentions auto-detection of Arabic with RTL. It falls short of explicitly stating whether the source composition itself is modified, but overall it is highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the primary purpose and uses every sentence to add value (duplication behavior, nested precomp handling, RTL logic, caller responsibility). It is appropriately sized for the tool's complexity, though slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's core functionality well: duplication, text swapping, path handling, and RTL detection. It does not explicitly mention return values or what happens after creation, but given the complexity and rich schema, the description is largely complete. Slight gaps exist around source comp modification and any side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema, especially for the complex `path` parameter (explaining precomposition duplication/reuse) and clarifying that `translations` should contain already-translated strings. This extra guidance enhances understanding of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a localized duplicate of a composition by swapping in translated text for text layers. It uses a specific verb ('Create') and specifies the resource ('localized duplicate of a composition'), and the mention of 'same logic as create-text-layer' helps distinguish it from that sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (localizing a composition) and notes that translation is the caller's job, but it does not explicitly state when not to use it or compare it to alternatives like create-text-layer or duplicate-layer. Usage context is clear but without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match-referenceA
Compare a composition against a reference image: renders the current frame, then returns a side-by-side (reference vs current) AND a difference map (bright where they differ) so you can see exactly WHERE the render deviates and converge on a match. Provide the reference as an on-disk image path. Select the comp by name or 1-based index, or leave empty for the active comp.
| Name | Required | Description | Default |
|---|---|---|---|
| comp | No | Composition name or 1-based index. Omit to use the active comp. | |
| time | No | Time in seconds to render (default comp midpoint). | |
| timeoutMs | No | Wait time in ms (default 90000). | |
| referencePath | Yes | Absolute path to the reference image on disk (PNG/JPG). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it provides useful behavioral details: it renders the current frame, returns a side-by-side and a difference map, and explains that the difference map is bright where they differ. It does not disclose whether the operation is non-destructive or what happens with invalid reference paths, but it does not contradict annotations and offers more than a minimal description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient, with two sentences that are front-loaded with the primary verb and resource. It packs meaningful details (rendering, output types, difference map interpretation, and comp selection) into a compact space without redundant or verbose wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description sufficiently explains what the tool returns and how to specify inputs, allowing an agent to invoke it confidently. It could additionally mention the time parameter or error handling, but those are at least partially covered by the input schema, so the overall completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptive text, so the baseline is 3. The description does not add new meaning beyond what the schema provides—it only restates the comp selection rule and the need for an on-disk path, both already in the schema. No additional parameter semantics are introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource phrase, 'Compare a composition against a reference image,' and clearly distinguishes the tool from siblings like see-frame or contact-sheet. It further details the two outputs (side-by-side and difference map) and explains the purpose of seeing exactly where the render deviates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: when you need to compare a composition against a reference and converge on a match. It does not explicitly name alternatives or exclusions, but within the context of sibling tools this is the only comparison-focused tool, making the usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_aftereffects_get_effects_helpB
Get help on using After Effects effects
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It merely states the purpose without mentioning that the operation is read-only, what output to expect, or any other behavioral traits. The implication of 'help' being non-destructive is weak.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, directly stated sentence with no filler words. It conveys the core purpose efficiently and is appropriately sized for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple help tool, but it lacks details about the output format or what kind of help is returned. Since there is no output schema and no annotations, the description should explain what the agent will receive, but it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty schema, so the baseline for parameter semantics is 4. The description adds no parameter information, but none is needed since there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: providing help on using After Effects effects. The verb 'Get help' and the resource 'After Effects effects' distinguish it from general help tools like 'get-help' and effect listing tools like 'list-available-effects', though it doesn't elaborate on what the help includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus similar siblings such as 'get-help' or 'list-available-effects'. It does not mention any alternatives, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove-effectB
Remove one specific effect (or all effects) from a layer.
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based composition index. | |
| removeAll | No | If true, remove all effects from the layer. | |
| effectName | No | Display name of the effect to remove. | |
| layerIndex | Yes | 1-based layer index. | |
| effectIndex | No | 1-based effect index within the layer's Effects group. | |
| effectMatchName | No | Internal match name of the effect to remove. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior but omits any side effects, irreversibility, or error conditions. With no annotations available, the description carries the full burden and does not clarify what happens when removing an effect fails or when removeAll is combined with effectName.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, brief sentence that immediately states the purpose. It follows a clear structure with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters and no output schema or annotations, the description is too thin. It does not explain how the effect selection parameters (effectIndex, effectName, effectMatchName) interact, nor what happens if none are specified when removeAll is false. This leaves the agent uncertain about invocation requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all six parameters with 100% coverage, so the baseline is 3. The description adds only the high-level distinction between removing one effect versus all, which is also captured by the removeAll parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the target ('effect' on a 'layer'), and mentions the dual mode (specific or all). This distinguishes it from sibling tools like apply-effect or list-layer-effects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like set-effect-property or list-layer-effects. The description does not mention contexts in which removal is appropriate or if there are prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render-aerenderA
Render a composition to a file in the BACKGROUND using aerender (a separate headless After Effects process). Unlike start-render, this does NOT freeze your After Effects UI - you can keep working. REQUIREMENT: the project must be saved to disk (aerender renders the saved .aep). By default it saves the open project first and renders it; pass projectPath to render a specific .aep instead. Returns immediately after starting unless you pass waitMs. Check progress with render-status.
| Name | Required | Description | Default |
|---|---|---|---|
| waitMs | No | If set, wait up to this many ms for the render to finish before returning; otherwise return immediately after starting. | |
| compName | Yes | Name of the composition to render. | |
| endFrame | No | Last frame to render (aerender -e). | |
| saveFirst | No | Save the open project before rendering so unsaved changes are included (default: true). Ignored if projectPath is given. | |
| outputPath | Yes | Absolute output file path (extension should match the output module, e.g. .mov / .mp4 / .avi). | |
| startFrame | No | First frame to render (aerender -s). | |
| projectPath | No | Absolute path to the .aep to render. If omitted, the currently open (saved) project is used. | |
| outputModuleTemplate | No | Existing Output Module template name (aerender -OMtemplate), e.g. 'Lossless', 'H.264 - Match Render Settings - 15 Mbps'. | |
| renderSettingsTemplate | No | Existing Render Settings template name (aerender -RStemplate), e.g. 'Best Settings'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full transparency burden. It discloses background/headless execution, the save-first default, projectPath override, immediate return, and waitMs behavior. It omits error-handling details but covers core behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with purpose, and each sentence adds value: purpose, differentiation, requirement, default behavior, and return semantics. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 9-parameter schema and no output schema, the description sufficiently covers main usage, prerequisites, async behavior, and follow-up. It does not spell out the return value format, but 'Check progress with render-status' implies a handle is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds prose context for projectPath and waitMs, clarifying how they alter execution. It also explains the saveFirst default, enriching the schema's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renders a composition to a file in the background using aerender, and explicitly contrasts it with start-render. This distinguishes it from siblings and gives a specific verb, resource, and execution mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Unlike start-render, this does NOT freeze your After Effects UI'. Also states the project-save requirement and directs the user to render-status for progress, effectively outlining a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render-queueA
Inspect or manage the After Effects render queue: list items with their status and output path, clear the whole queue, or remove a single item by index.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | 1-based render queue item index (required when action is 'remove'). | |
| action | No | 'list' (default), 'clear' (remove all items), or 'remove' a single item by index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly mentions destructive actions ('clear the whole queue', 'remove a single item by index'), which is good, and notes that list returns 'status and output path'. However, it does not disclose whether clear is irreversible, whether permissions are needed, or how the 'remove' action behaves with an invalid index. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose ('Inspect or manage') then efficiently enumerates the specific actions and their targets. Every word adds value; no repetition of parameter names or schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with two parameters and no output schema, the description is quite complete: it covers all three actions and hints at return data for list. It lacks details on error handling or edge cases (e.g., invalid index), but given the tool's moderate complexity and the clear param descriptions, this is sufficient. The presence of sibling tools like render-status further reduces the need for extensive explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaningful context beyond the schema: it ties 'index' to the remove action ('remove a single item by index') and clarifies the list output ('status and output path'). This reinforces and extends the parameter semantics already provided in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb phrase 'Inspect or manage' with a clear resource 'After Effects render queue' and enumerates specific actions (list, clear, remove). It distinguishes from sibling tools like render-status and start-render by focusing on queue inspection and mutation rather than status or rendering execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys usage context by listing the three actions available ('list', 'clear', 'remove') and their effects, implying when to use this tool versus render-status or start-render. It does not explicitly name alternative tools or state when-not-to-use, but the action-based guidance is clear enough for an agent to select this tool for queue management tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render-statusA
Check background aerender renders started with render-aerender: which are still running, which finished, and the tail of each render log.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | Optional specific render PID. If omitted, reports all tracked renders. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool checks statuses and reads log tails, implying a read-only operation. However, it does not explicitly state that it has no side effects, what happens for invalid PIDs, or any permission requirements, leaving some behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, highly informative sentence. Every clause adds value: the tool scope, the specific checks, and the log output. No redundant or filler content exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity status tool with one optional parameter and no output schema, the description adequately covers what the tool reports (running/finished statuses and log tails). It lacks explicit mention of the return format, but the description gives enough conceptual detail for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the pid parameter is described as 'Optional specific render PID. If omitted, reports all tracked renders.' The tool description adds no additional parameter detail, so it does not elevate beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and identifies the exact resource ('background aerender renders started with render-aerender'). It clearly distinguishes this tool from siblings by scoping it to aerender background renders and specifying outputs (running/finished status, log tails), which sets it apart from render-queue or start-render.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use this tool: after renders have been started with render-aerender. It clearly implies the usage context (checking status of those background renders) without explicitly naming alternatives or exclusions, but the scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run-bridge-testA
Run the bridge test effects script to verify communication and apply test effects
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for transparency. It does disclose that the tool 'applies test effects', indicating side effects, but it does not explain what those effects are, whether they are destructive, reversible, or impact the current project. The behavior beyond 'verify communication' is vague, leaving the agent uncertain about possible outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that directly conveys the tool's function without any filler or redundancy. It is front-loaded with the action ('Run') and the resource ('bridge test effects script'), earning high marks for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is the sole context. It provides the basic purpose but leaves gaps about the nature of 'test effects' and the expected outcome. While it is minimally viable, an agent might struggle to predict the tool's impact on the environment, so the description could be more detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty, meaning there are no parameters. The description correctly makes no mention of parameters, and because there are none, there is no semantic gap. Baseline 4 is appropriate for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Run the bridge test effects script') and its dual purpose ('verify communication and apply test effects'). This distinguishes it from siblings like 'run-script' (generic script runner) and 'check-bridge' (only checks communication), making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or that it should be used before/after other operations. The purpose implies a testing scenario, but the description fails to explicitly state this context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run-scriptA
Run a read-only script in After Effects
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | Name of the predefined script to run | |
| parameters | No | Optional parameters for the script |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the script is read-only, which is valuable safety information, and adds context beyond the schema. It could mention more about side effects or error behavior, but the read-only qualifier provides meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the purpose and key qualifier. It is concise, front-loaded, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple interface with clear schema coverage, but no output schema is provided. The description does not explain what the script returns or how results are delivered, leaving a gap for a script runner. It is adequate for basic understanding but could be more complete, especially for a tool that runs arbitrary predefined scripts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for both parameters with 100% coverage, so the description does not need to compensate. The description adds nothing about parameter semantics, and the baseline of 3 is appropriate given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (run), the resource (a script), and the context (After Effects) while adding the qualifier 'read-only' to define the script's nature. This distinguishes it from the sibling tools, which focus on effects, layers, and compositions, not script execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for executing predefined scripts that are read-only, clearly differentiating it from effect-related tools. However, it does not explicitly state when to use it over alternatives or provide exclusion criteria, but the uniqueness among siblings makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-presetsB
Search After Effects .ffx presets by name or path.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search text to match in preset filename or full path. | |
| maxDepth | No | Maximum directory depth when recursive is true (default: 10). | |
| recursive | No | Recursively search subdirectories (default: true). | |
| maxResults | No | Maximum number of preset files to return (default: 200). | |
| presetRoots | No | Optional absolute directories to search. Defaults to common Adobe preset locations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for disclosing behavior. It only states it 'searches' and does not mention return format, recursion or depth defaults, limitations, or that it reads from common Adobe preset locations. This is minimal beyond the obvious read-only nature of 'search'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, uses no filler, and is front-loaded with the key action and resource. It earns its place with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 5 parameters and no output schema or annotations, the description does not mention return format or typical use context. It only states the basic purpose, leaving the agent to infer behavior from the schema. The tool is relatively simple but should have disclosed more about results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a clear description. The tool description adds no additional parameter meaning, but this is acceptable per the baseline rule for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states what the tool does: searches After Effects .ffx presets by name or path. Provides a specific verb ('Search') and resource ('.ffx presets'), distinguishing from siblings like list-presets or apply-preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs to find a preset by searching for a name or path, but it does not explicitly contrast with sibling tools like list-presets or provide exclusions. No clear 'when-not-to-use' guidance beyond the inherent verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
see-frameA
SEE what a composition actually looks like: render one or more frames to images and return them so you can visually verify and self-correct (make a change, look, fix). Use this after edits to catch problems the DOM does not reveal - clipped or empty text, blown-out glow, off-frame layers, wrong colors, or Arabic/RTL text that did not shape correctly. Select the comp by name or 1-based index, or leave empty for the active comp. Returns downscaled preview images by default (maxWidth 512) to keep it fast and cheap; pass maxWidth 0 for a native-resolution still. Note: a still is a still - time-based effects like motion blur may look different from playback.
| Name | Required | Description | Default |
|---|---|---|---|
| comp | No | Composition name or 1-based index. Omit to use the active comp. | |
| times | No | Time(s) in seconds to capture. A single number or an array. Defaults to the comp midpoint. Out-of-range values are clamped. | |
| maxWidth | No | Max preview width in pixels (default 512, aspect preserved). Use 0 for a guaranteed-faithful native-resolution frame. | |
| timeoutMs | No | How long to wait for the render, in milliseconds (default 60000). | |
| motionBlur | No | Render the still with motion blur enabled (default false). | |
| includeState | No | Also return the comp's structured state (like inspect-comp) alongside the images. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It transparently discloses downscaling (maxWidth 512), native-resolution option (maxWidth 0), performance/cost rationale, and the still-vs-playback caveat. This provides valuable behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence earns its place: use case, selection method, output caveats, and defaults. It front-loads the core purpose with 'SEE what a composition actually looks like' and remains readable despite the detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description adequately explains return type (images), parameter defaults, and behavioral caveats. It leaves some details to the schema (e.g., timeoutMs) but covers the core usage envelope well, including the self-correct workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning around maxWidth (fast/cheap, native resolution), comp selection (name/index/active), and underscores the still limitation. This enriches, rather than merely repeats, schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it renders composition frames to images for visual verification, using specific verbs like 'render' and listing concrete problem cases (clipped text, wrong colors, RTL shaping). This distinguishes it from siblings like inspect-comp (structured state) and other render tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use 'after edits' to catch visual issues, and gives examples of problems the DOM doesn't reveal. It also implies when_not_to_use by noting time-based effects differ from playback, but doesn't name alternative tools directly (though includeState references inspect-comp).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-audio-levelsA
Set the audio levels (in dB) for an audio or AV layer. Supports per-channel control and optional keyframing.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Level in dB applied to both left and right channels (e.g. 0 = unity, -6 = half volume, -96 = silence). | |
| compIndex | Yes | 1-based composition index. | |
| leftLevel | No | Left channel level in dB (overrides level for left channel). | |
| layerIndex | Yes | 1-based layer index. | |
| rightLevel | No | Right channel level in dB (overrides level for right channel). | |
| timeInSeconds | No | If provided, sets a keyframe at this time instead of a static value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the dB unit, per-channel control, and keyframing capability, but it does not explain what happens if no level is provided, how left/right override level, or whether existing keyframes are replaced. This leaves gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource, then adds two key feature areas. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 100% schema coverage and absence of an output schema, the description provides a sufficient high-level overview for an agent to select and invoke the tool. It lacks explicit usage exclusions and edge-case behavior, but the combination with the detailed schema is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each property already described in detail (e.g., leftLevel 'overrides level for left channel', timeInSeconds sets a keyframe). The description adds no additional parameter semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') with a clear resource ('audio levels (in dB) for an audio or AV layer') and scopes the behavior with 'per-channel control and optional keyframing'. This distinguishes it from sibling read tools like get-audio-info and other setters like set-effect-property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when adjusting audio levels) but provides no explicit alternatives or exclusions. It does not reference sibling tools or state when not to use it, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-composition-propertiesA
Change a composition's settings: duration, frameRate, and/or width+height. Select the comp by compName/compIndex (or active comp).
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | New width in pixels (must be set together with height). | |
| height | No | New height in pixels (must be set together with width). | |
| compName | No | Composition name (or active comp if omitted). | |
| duration | No | New duration in seconds. | |
| compIndex | No | 1-based comp index, if compName is omitted. | |
| frameRate | No | New frame rate (fps). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Change' which implies mutation but does not disclose side effects such as whether unspecified properties are preserved, how duration changes affect existing keyframes, or whether changes are reversible. This lack of detail for a mutation tool is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that get straight to the point: what changes and how to select the comp. Every phrase earns its place, and there is no fluff or repetition of obvious details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has six optional parameters and no output schema, the description adequately covers the core purpose and selection mechanism. It does not mention the width+height pairing constraint, but the schema covers this. While it lacks explicit side-effect warnings, the basic usage for an agent is sufficiently clear, though it could be more complete with behavioral notes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all six parameters, including the constraint that width and height must be set together and that compName/compIndex are alternative selectors. The description repeats these settings and adds the 'or active comp' selection context, which slightly reinforces the schema but adds no new syntax or behavioral details. With 100% schema coverage, the description's redundancy is acceptable but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Change a composition's settings' which clearly identifies the action (change) and resource (composition). It enumerates the editable settings (duration, frameRate, width+height) and specifies comp selection via compName/compIndex or active comp, distinguishing it from create-composition and layer-focused tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context, indicating what can be changed and how to select the target composition. It implies this is for modifying existing compositions rather than creating them, but it does not explicitly exclude alternatives or state when to prefer other tools. Sibling tools like create-composition suggest the distinction, but the description itself lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-effect-keyframeB
Set an effect property keyframe with optional graph interpolation and easy-ease controls.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Value to set at the keyframe time. | |
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| effectName | No | Display name of the effect to target. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| effectIndex | No | 1-based index of the effect in the layer's Effects group. | |
| propertyName | No | Fallback target property name or matchName. | |
| propertyPath | No | Path from effect root to target property, e.g. ['Compositing Options', 'Effect Opacity'] or [3, 1]. | |
| keyframeIndex | No | Optional keyframe index to edit graph/value directly without resolving by time. | |
| propertyIndex | No | Fallback target property index under the effect root. | |
| timeInSeconds | No | Time of the keyframe in seconds. | |
| effectMatchName | No | Internal matchName of the effect to target. | |
| keyframeOptions | No | Optional graph/easing controls for the created keyframe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without revealing side effects, how the tool resolves target properties (propertyPath vs propertyName vs propertyIndex), or what happens when keyframeIndex is omitted. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose and optional capabilities. Every word is meaningful, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, nested keyframeOptions), no output schema, and no annotations, the description is severely incomplete. It lacks workflow context, return behavior, or any explanation of how to effectively use the many parameters, leaving an agent without enough guidance to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 12 parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds no parameter semantics beyond mentioning graph interpolation and easy-ease controls, which are already encapsulated in the keyframeOptions object. It does not explain parameter relationships or priority.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action 'Set an effect property keyframe' and mentions optional graph interpolation and easy-ease controls. This distinguishes it from sibling tools like set-effect-property (which sets without keyframing) and setLayerKeyframe (which targets layer properties rather than effect properties).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for animating effect properties over time, but provides no explicit guidance on when to use this tool versus alternatives such as setLayerKeyframe or set-effect-property. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-effect-propertyB
Set or keyframe any property on an existing layer effect using name/index/path.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Value to assign to the target property. | |
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| effectName | No | Display name of the effect to target. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| effectIndex | No | 1-based index of the effect in the layer's Effects group. | |
| propertyName | No | Fallback target property name or matchName. | |
| propertyPath | No | Path from effect root to target property, e.g. ['Compositing Options', 'Effect Opacity'] or [3, 1]. | |
| keyframeIndex | No | Optional keyframe index to edit graph/value directly without resolving by time. | |
| propertyIndex | No | Fallback target property index under the effect root. | |
| timeInSeconds | No | If provided, sets a keyframe at this time using value. | |
| effectMatchName | No | Internal matchName of the effect to target. | |
| keyframeOptions | No | Optional graph/easing controls applied to the keyframe at timeInSeconds. | |
| expressionString | No | Optional expression string to set on the target property. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behavior. It only says 'set or keyframe' without detailing side effects, mutation risks, requirements, or behavior when omitted parameters are used. This is insufficient for a complex mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and target. Every word adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 parameters, nested keyframeOptions, no output schema), a one-sentence description is inadequate. It does not explain when keyframing occurs (e.g., via timeInSeconds), how targeting precedence works, or any constraints. The schema provides detailed parameter info, but behavioral context is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a descriptive comment, so the baseline of 3 applies. The description adds minimal value by mentioning 'using name/index/path', which loosely aligns with effectName, effectIndex, and propertyPath, but does not deepen understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set or keyframe') and the target ('any property on an existing layer effect'), and specifies the addressing methods (name/index/path). This distinguishes it from sibling tools like apply-effect or setLayerExpression, though it could more explicitly contrast with set-effect-keyframe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for modifying properties on existing layer effects but gives no explicit when-to-use guidance or mention of alternatives. It lacks exclusions or conditions, so it remains at an implied-usage level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setLayerExpressionB
Set or remove an expression for a specific layer property.
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| propertyName | Yes | Name of the property to apply the expression to (e.g., 'Position', 'Scale', 'Rotation', 'Opacity'). | |
| expressionString | Yes | The JavaScript expression string. Provide an empty string ("") to remove the expression. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that expressions can be set or removed, but does not disclose side effects such as overwriting existing expressions, handling of invalid expressions, or whether the target property must exist. The removal behavior via empty string is only implied, not explicitly stated in the description itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose without any filler. Every word earns its place, making it highly concise and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (4 required parameters, no output schema, no annotations), the description provides the essential purpose but leaves gaps around behavioral outcomes and edge cases (e.g., overwriting, error handling, prerequisites). The schema covers parameters well, but the lack of behavioral context makes the description only minimally complete for an agent to safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the schema already provides 100% coverage with clear descriptions for all four parameters, the description adds minimal extra semantic value beyond mentioning 'remove' in the summary. The schema describes expressionString's empty-string behavior effectively, so the description does not need to compensate for missing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('set or remove') and resource ('expression for a specific layer property'), clearly distinguishing it from sibling tools like setLayerKeyframe (keyframes) and run-script (general scripts). It precisely conveys both the primary action and the removal capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. Usage context is only implied by the tool's name and purpose, but no explicit when-to-use or when-not-to-use guidance is given relative to siblings like run-script or setLayerKeyframe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setLayerKeyframeB
Set a keyframe for a specific layer property at a given time.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | The value for the keyframe (e.g., [x,y] for Position, [w,h] for Scale, angle for Rotation, percentage for Opacity) | |
| compIndex | Yes | 1-based index of the target composition in the project panel. | |
| layerIndex | Yes | 1-based index of the target layer within the composition. | |
| propertyName | Yes | Name of the property to keyframe (e.g., 'Position', 'Scale', 'Rotation', 'Opacity'). | |
| timeInSeconds | Yes | The time (in seconds) for the keyframe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without revealing what happens if the optional 'value' parameter is omitted, whether existing keyframes are overwritten, or what the tool returns. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the core action without any filler or redundancy. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and an optional 'value' parameter whose behavior is unexplained, the description is not complete enough for an agent to fully understand the tool's behavior. The schema covers parameter names and types, but the description fails to convey key contextual nuances such as keyframe overwriting or the significance of the optional value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage of parameter descriptions, so the baseline is 3. The description adds little beyond restating 'specific layer property' and 'given time,' and it fails to clarify the optional 'value' parameter, which is not included in the required list. However, since the schema handles most semantics, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Set' with a clear resource: 'a keyframe for a specific layer property at a given time.' It clearly distinguishes from sibling tools like set-effect-keyframe by focusing on layer properties rather than effects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are related sibling tools such as set-effect-keyframe and setLayerExpression, but the description does not mention them or any exclusions, leaving the agent without explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-layer-maskA
Create or modify a mask on a layer. Provide the shape as maskRect (rectangle shorthand) OR maskPath (array of [x,y] vertices, >= 3). Omit maskIndex to add a new mask, or pass it to modify an existing one.
| Name | Required | Description | Default |
|---|---|---|---|
| compName | No | Composition name (or active comp if omitted). | |
| maskMode | No | Mask mode (default: 'add'). | |
| maskName | No | Optional mask name. | |
| maskPath | No | Array of [x,y] vertices defining the mask shape (>= 3 points). | |
| maskRect | No | Rectangle shorthand {top,left,width,height} in layer pixels. | |
| compIndex | No | 1-based comp index, if compName is omitted. | |
| layerName | No | Layer name (alternative to layerIndex). | |
| maskIndex | No | 1-based index of an existing mask to modify. Omit to create a new mask. | |
| layerIndex | No | 1-based layer index. | |
| maskFeather | No | Feather [x,y] in pixels. | |
| maskOpacity | No | Mask opacity 0-100. | |
| maskExpansion | No | Mask expansion in pixels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It discloses key behavior (create vs. modify, two shape input methods), but it does not explain what happens if both maskRect and maskPath are provided, nor does it mention error cases, coordinate assumptions, or side effects. This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the primary purpose and following with essential usage. Every clause is informative, with no fluff or repetition of schema content. It is an model of concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters and no output schema, the description covers the central choices (shape type, add/modify) but omits mention of property parameters like maskOpacity, maskFeather, and maskExpansion, which are left to the schema. It also doesn't address edge cases or return behavior. Still, the essential usage is well-covered, so it's adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3. The description adds value by clarifying the OR relationship between maskRect and maskPath, a semantic not fully captured in the individual parameter descriptions. It also reinforces the maskIndex add/modify behavior, though this is already present in the schema. Overall, it provides a modest increment beyond structured definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create or modify a mask on a layer.' It names the specific resource (mask on a layer) and the actions (create/modify), which distinguishes it from sibling tools like setLayerKeyframe or setLayerExpression. The verb+resource combination is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides actionable usage: 'Provide the shape as maskRect ... OR maskPath' and explains the distinction between adding and modifying via maskIndex. It does not explicitly mention when not to use this tool or name alternatives, but the context is clear for a mask-specific operation. This falls short of a 5 because it lacks explicit exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start-renderA
Render all QUEUED items in the After Effects render queue. IMPORTANT: this BLOCKS After Effects until the render finishes - the AE UI is unresponsive during the render. Add items first with add-to-render-queue. For long renders, raise timeoutMs; if the wait times out the render still continues in AE and you can check status later with render-queue.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | Maximum time to wait for the render to finish, in milliseconds (default 300000 = 5 minutes). Set higher for long renders. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses critical blocking behavior, AE UI unresponsiveness, timeout semantics, and post-timeout continuity. This is exemplary behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, important warning, and usage guidance. Every sentence earns its place with no filler, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a blocking operation with a single parameter and no output schema, the description covers the core purpose, operational impact, timeout behavior, and follow-up steps. It is sufficiently complete for an agent to invoke and handle the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for timeoutMs, and the schema already describes the parameter. The description adds practical context about when to raise the timeout and what happens if it expires, going beyond the schema's literal definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Render all QUEUED items') on a specific resource ('After Effects render queue'), clearly distinguishing it from sibling tools like add-to-render-queue and render-queue. The scope is explicit, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit prerequisites ('Add items first with add-to-render-queue'), guidance on timeout handling ('raise timeoutMs for long renders; if the wait times out the render still continues'), and a clear alternative for checking status ('check status later with render-queue'). This fully informs when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test-animationD
Test animation functionality in After Effects
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | Composition index (usually 1) | |
| operation | Yes | The animation operation to test | |
| layerIndex | Yes | Layer index (usually 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'test', which is ambiguous—does it apply changes or remain read-only? It does not mention side effects, return values, or any safety profile, leaving the agent without critical information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one short sentence, which is appropriately concise in length, but it merely restates the tool name. This is under-specification rather than effective conciseness because it uses the sole sentence without providing any substantive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and three required parameters, the description is wholly inadequate. It fails to explain what 'testing' means, how operation/comp/layer parameters interact, what the agent should expect as a result, or when this tool should be chosen over the many sibling animation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% description coverage for the three parameters, including the operation enum and brief guidance ('usually 1'). The description adds no parameter-level insight beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description "Test animation functionality in After Effects" is a near-tautology of the tool name 'test-animation'. It identifies the domain (After Effects animation) but does not specify what testing entails, nor does it distinguish this tool from siblings like setLayerKeyframe or setLayerExpression.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools for setting keyframes and expressions, there is no explanation of whether this tool is for validation, comparison, or actual mutation, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
50 tool updates
v1.10.0- First observed
add-any-effect - First observed
add-marker - First observed
add-markers-bulk - First observed
add-to-render-queue - First observed
analyze-audio-waveform - First observed
animate-from-data - First observed
animate-to-audio - First observed
apply-effect - First observed
apply-effect-template - First observed
apply-preset - First observed
batch-set-layer-properties - First observed
center-layers - First observed
check-bridge - First observed
contact-sheet - First observed
create-adjustment-layer - First observed
create-camera - First observed
create-composition - First observed
create-text-layer - First observed
delete-layer - First observed
duplicate-layer - First observed
execute-script - First observed
get-audio-info - First observed
get-help - First observed
get-layer-clip-frames - First observed
get-results - First observed
inspect-comp - First observed
inspect-layer - First observed
list-available-effects - First observed
list-layer-effects - First observed
list-presets - First observed
localize-comp - First observed
match-reference - First observed
mcp_aftereffects_get_effects_help - First observed
remove-effect - First observed
render-aerender - First observed
render-queue - First observed
render-status - First observed
run-bridge-test - First observed
run-script - First observed
search-presets - First observed
see-frame - First observed
set-audio-levels - First observed
set-composition-properties - First observed
set-effect-keyframe - First observed
set-effect-property - First observed
set-layer-mask - First observed
setLayerExpression - First observed
setLayerKeyframe - First observed
start-render - First observed
test-animation
TDQS
Scored across 50 tools
Several tools have overlapping or unclear boundaries, such as run-script vs execute-script, apply-effect vs add-any-effect, and check-bridge vs run-bridge-test. Multiple help tools (get-help, mcp_aftereffects_get_effects_help) and rendering tools (start-render, render-aerender) could confuse an agent. The descriptions help but the overlaps are significant enough to cause misselection.
Most tool names follow a kebab-case verb-noun pattern (e.g., create-composition, list-layer-effects), but there are notable inconsistencies: setLayerKeyframe and setLayerExpression use camelCase, and mcp_aftereffects_get_effects_help uses snake_case with a prefix. While still readable, the mixed conventions are more than minor deviations.
With 50 tools, the set is very large and exceeds the 25+ threshold for 'too many'. While After Effects is complex, many tools overlap (e.g., three ways to apply effects, two script runners, two render methods), inflating the count. A more focused set of ~20-30 tools would likely cover the same functionality with less redundancy.
The tool set covers a broad range of After Effects operations: compositions, layers, effects, presets, text, audio, animation, inspection, and rendering. Minor gaps exist, such as no direct tool for listing all compositions or deleting a composition, but these can be worked around via execute-script, and the overall lifecycle is well covered.
Maintenance
Related MCP Connectors
MCP server for Hailuo (MiniMax) AI video generation
Remote MCP for AI video, image, music and speech generation.
MCP server for Producer/Riffusion AI music generation
MCP server for Wan AI video generation
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables AI assistants to control Adobe After Effects through a file-based communication bridge. It supports various operations including project and composition management, layer and keyframe manipulation, rendering, and batch processing.922921MIT
- AlicenseBqualityAmaintenanceMCP server that lets AI assistants control Adobe After Effects - ExtendScript execution, background rendering, and deep project/layer inspection - with first-class Arabic/RTL and multilingual support. 44 tools.57689MIT
- AlicenseAqualityCmaintenanceAn MCP server that allows AI agents to control Adobe After Effects, enabling project inspection, composition creation, layer addition, file import, ExtendScript execution, and rendering via aerender.11MIT
- AlicenseCqualityCmaintenanceMCP server for controlling Adobe After Effects, enabling AI assistants to create compositions, manage layers, and animate properties.1368MIT