aftereffects
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., "@aftereffectsCreate a 1920x1080 5-second lower third title and check it with view-comp"
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.
Ibintec After Effects MCP
Motion graphics in Adobe After Effects 2022+, built by AI, which can see what it made.
Ibintec After Effects MCP connects an AI client such as Claude Desktop to Adobe
After Effects on your computer. The AI can create compositions, add text,
shapes and solids, animate them with keyframes and expressions, apply effects,
and then look at the result with view-comp to check it.
It is based on the open-source after-effects-mcp by Dakkshin (MIT License), with changes by Ibintec Limited. Not affiliated with or endorsed by Adobe.
It works alongside Ibintec Premiere MCP: build titles and animations here, then place them in your edit in Premiere.
What it can do
Tool | What it does |
| New composition with your size, frame rate, length and background |
| Built-in commands: list compositions and layers, project info, create text / shape / solid / camera layers, set layer properties (one or many layers), duplicate or delete layers, masks, composition settings |
| Keyframe Position, Scale, Rotation or Opacity, to animate them |
| Add an expression, e.g. |
| Apply effects or ready-made combinations (glow, drop shadow, cinematic look, text pop and more) |
| See the composition: frames across it as one image with timestamps |
| Reference for effects and setup |
| Connection check; read a slow command's result |
Every tool waits for After Effects and returns its answer. run-script only
runs these built-in commands; it cannot run arbitrary code.
Example request to your AI client:
In After Effects, make a 1920x1080, 25 fps, 5-second composition called "Lower Third". Add a white "Harvest Day" title with a gold "Kiambu, October" line under it in the lower left, sliding in from the left over 0.6 seconds and fading out at the end. Then check it with view-comp.
Related MCP server: ae-mcp
Requirements
Windows 10/11 or macOS
Adobe After Effects 2022 or newer
Node.js 20 or newer
ffmpeg on your PATH, for
view-comp(Windows:winget install Gyan.FFmpeg; macOS:brew install ffmpeg)An MCP client on the same computer, such as Claude Desktop
Install (Windows)
In PowerShell:
git clone https://github.com/ibintec/aftereffects-mcp.git C:\Tools\aftereffects-mcp
cd C:\Tools\aftereffects-mcp
npm install
npm run install-bridgenpm install also builds the project. npm run install-bridge copies the
panel into After Effects (Windows asks for administrator permission; click
Yes), creates the bridge folder, and prints the settings to add to Claude
Desktop. Keep the C:\Tools\aftereffects-mcp folder where it is.
On macOS, clone anywhere and run the same two npm commands.
Connect Claude Desktop
In Claude Desktop open Settings > Developer > Edit config and add the
entry the installer printed inside "mcpServers". With Ibintec Premiere MCP
already installed, it looks like this:
{
"mcpServers": {
"premiere-pro": { "...": "your existing Premiere entry, unchanged" },
"aftereffects": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": ["C:\\Tools\\aftereffects-mcp\\build\\index.js"]
}
}
}Use Edit config rather than editing %APPDATA%\Claude by hand: Claude
Desktop from the Microsoft Store keeps its settings in a different folder.
Save, then quit Claude Desktop from the system tray and reopen it.
Settings > Developer should show aftereffects as running.
Set up After Effects
Edit > Preferences > Scripting & Expressions: tick Allow Scripts to Write Files and Access Network. Restart After Effects.
Open a project, then Window > ibintec-ae-bridge.jsx.
Keep the Ibintec AE Bridge window open with Auto-run commands ticked. (In After Effects 2025 and later it opens as a floating window.)
Check it works
Ask your AI client:
Use run-script with listCompositions.
Tips
Ask the AI to look. "Check it with view-comp" catches overlapping text, titles off-screen and timing problems.
Match your footage. Use the same size and frame rate as your Premiere sequence (for example 1920x1080 at 25 fps).
Colours are 0 to 1 in layer commands (white is
[1, 1, 1]), but 0 to 255 for a composition's background colour.Indexes vs names. Keyframe, expression and effect tools use the composition's Project panel number and the layer number;
run-scriptcommands use names. Ask the AI to list compositions and layers first.Save often and work on a copy of important projects. Ctrl+Z undoes changes in After Effects.
After Effects is demanding: on a laptop, keep animations simple and
view-comppreviews small.
Limits
view-compshows sampled frames, not playback. Fast motion between frames can be missed; ask for more frames over a shorter range to look closer.Rendered previews show transparent areas as black.
Only the built-in commands are available; anything else must be done in After Effects by hand.
The automation builds what it is asked to; it does not replace your own design judgement.
Troubleshooting
Problem | Fix |
"After Effects did not answer" | After Effects open with a project, the Ibintec AE Bridge window open, Auto-run ticked, and the Scripting & Expressions preference on |
The panel is not in the Window menu | Run |
| Add it with Edit config (not by editing the file in |
| Install ffmpeg, then quit Claude Desktop from the tray and reopen it |
The panel log shows errors | Copy the log text from the panel into your AI chat or an issue |
Privacy
Everything runs on your computer and Ibintec receives no data. Tool results,
including view-comp frames, go to your AI client. See PRIVACY.md.
License and credits
MIT License, see LICENSE.
Original project: after-effects-mcp, copyright (c) 2025 Dakkshin
view-comp, bridge hardening and other changes: copyright (c) 2026 Ibintec Limited (see CHANGELOG.md)
Support: open an issue.
Available Tools
11 toolsapply-effectB
Apply an effect to a layer. Use get-effects-help for reliable effect match names.
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based index of the composition in the Project panel (see getProjectInfo / listCompositions). | |
| effectName | No | Display name of the effect, e.g. 'Gaussian Blur'. | |
| layerIndex | Yes | 1-based index of the layer within the composition. | |
| presetPath | No | Optional absolute path to an effect preset (.ffx). | |
| effectCategory | No | Optional category for filtering effects. | |
| effectSettings | No | Effect parameters, e.g. { 'Blurriness': 25 }. | |
| effectMatchName | No | Internal name (more reliable), e.g. 'ADBE Gaussian Blur 2'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, but it only says that an effect is applied. It omits whether the operation is destructive, what permissions or preconditions apply, whether duplicate effects are allowed, and what happens if an effect name is invalid.
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 short sentences, front-loaded with the core action and followed by a useful pointer to get-effects-help. No sentence is wasted.
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 seven-parameter mutation tool with a nested effectSettings object and no annotations, the description is too thin. It does not explain required index semantics, ordering behavior, or failure conditions, relying almost entirely on the schema and leaving behavioral gaps that matter 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 all seven parameters are already documented in the schema. The description adds only a reliability tip for effect names, which aligns with the schema's own note that effectMatchName is more reliable, and does not decode compIndex, layerIndex, effectSettings, or presetPath 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 states a specific verb and resource: it applies an effect to a layer. It clearly routes the agent to get-effects-help for reliable effect names but does not distinguish this tool from the sibling apply-effect-template, so it falls short of full 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?
It gives one concrete usage tip, directing the agent to get-effects-help for reliable effect match names. However, it does not say when to use this tool versus apply-effect-template or what conditions make application fail, leaving most usage context implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply-effect-templateC
Apply a predefined combination of effects to a layer.
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based index of the composition in the Project panel (see getProjectInfo / listCompositions). | |
| layerIndex | Yes | 1-based index of the layer within the composition. | |
| templateName | Yes | Template to apply. | |
| customSettings | No | Optional settings overriding the template's defaults. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Apply' implies a mutation, but it does not disclose whether effects are appended or replace existing ones, whether the operation is reversible/undoable, required permissions, or what happens to the template's default settings when customSettings is 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?
A single tight sentence with no filler. It is front-loaded with the verb and resource, though it is terse to the point of under-specifying a multi-parameter mutation tool.
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 and no annotations, so the description must explain behavior; instead it omits the nested customSettings object entirely, says nothing about the nine template options, and gives no mutation semantics. Inadequate for a 4-parameter mutation tool with a nested object.
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 documents compIndex, layerIndex, templateName (with enum), and customSettings on its own. The description adds no parameter meaning 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?
States a specific verb (Apply) and resource (predefined combination of effects to a layer). The word 'predefined combination' hints that this differs from the sibling apply-effect, which applies a single effect, but it never names that sibling to make the distinction 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?
No guidance on when to use this versus apply-effect or the other effect-related siblings (get-effects-help, get-effects-help). The reader must infer that this is the bulk/templated path from the phrase 'predefined combination' alone; there are no stated conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-compositionC
Create a new composition in After Effects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the composition | |
| width | Yes | Width in pixels, e.g. 1920 | |
| height | Yes | Height in pixels, e.g. 1080 | |
| duration | No | Duration in seconds (default 10) | |
| frameRate | No | Frames per second (default 30; use 25 to match footage shot at 25 fps) | |
| pixelAspect | No | Pixel aspect ratio (default 1.0) | |
| backgroundColor | No | Background colour, RGB 0-255 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but discloses nothing beyond the basic action. It omits whether After Effects must be running, what happens on duplicate names, side effects on the current project, or return behavior. 'Create' implies mutation but no operational details are 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 single sentence is front-loaded, free of filler, and easy to parse. However, for a 7-parameter tool with no annotations it is arguably under-specified rather than optimally concise.
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 parameters, a nested backgroundColor object, and no annotations or output schema, the description is not complete enough. It lacks operational context (project state, permissions, side effects) that an agent needs to invoke it 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%, with every parameter documented (including defaults and value ranges), so the description need not repeat them. The description adds no parameter-level meaning beyond the schema, making the baseline 3 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?
States a specific verb ('Create') and resource ('composition in After Effects'), so the agent knows exactly what the tool does. It does not explicitly contrast with sibling tools, but no sibling performs composition creation, so the purpose 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 gives no when-to-use guidance, prerequisites, or alternatives (e.g., run-script for custom composition setup). It only restates the action, so an agent gets no help deciding between this and generic scripting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-effects-helpC
Effect match names and the predefined effect templates.
| 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 behavioral burden, yet it says nothing about read-only access, return format, or that the output is a reference list to be fed into the apply-effect tools. The single noun phrase discloses no behavioral traits at all.
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 very short with no wasted clauses, but it is a fragment rather than a complete, front-loaded sentence, and brevity here comes at the cost of substance rather than from 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?
For a simple zero-parameter reference tool this is close to the minimum, but it omits the one thing an agent needs: that it returns a lookup list of effect identifiers/templates used by the apply-effect siblings, and why to choose it over get-help. The definition is too thin even for a low-complexity 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No parameter-level semantics are missing.
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 names the resource content ('effect match names and the predefined effect templates') but supplies no verb — it is a noun phrase rather than a statement of what the tool does. It also fails to distinguish itself from the sibling get-help, so an agent cannot tell which help endpoint to call.
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 when-to-use guidance, no prerequisites, and no mention of when to prefer this over get-help or how its output relates to apply-effect / apply-effect-template. Usage is only weakly inferable from the 'help' in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-helpC
How to set up and use Ibintec After Effects MCP.
| 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 behavioral burden, yet it discloses almost nothing beyond the topic. It doesn't say whether it returns static text or live state, whether it requires a running bridge, or that it's a read-only/non-destructive call.
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 short sentence with no wasted words, and the topic is front-loaded. It is efficient, though slightly terse given no other fields carry 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 zero-parameter help tool with no output schema, this is minimally adequate: it names the subject matter but omits what is actually returned and how it differs from get-effects-help. With no annotations and no output schema, the description could carry more of that load.
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 takes zero parameters, so the baseline for this dimension is 4. There is no parameter semantics for the description to clarify.
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 indicates this is a help/documentation resource about setting up and using the Ibintec After Effects MCP, but it never states a verb (e.g. 'returns documentation') or explicitly distinguishes itself from the sibling get-effects-help. An agent can infer it's a help tool, but the boundary against the other help tool is left unclear.
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 when-to-use guidance is given: the description doesn't say to call this on setup/configuration questions versus get-effects-help for effect-related questions. Usage is only implied by the topic words 'set up and use'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-resultsA
Read the last result After Effects wrote. Only needed if a command timed out because it was slow (e.g. heavy effects).
| 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. It usefully discloses a behavioral trait — that results are only worth fetching after a slow/timed-out command — but omits what happens if no result exists, the return format, and any read-only/error behavior.
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 short sentences, zero filler, with the core action front-loaded and the gating condition immediately after. Every sentence 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?
For a zero-parameter retrieval tool with no annotations or output schema, the description covers purpose, trigger condition, and source of the data. It could say a bit more about the shape/contents of the returned result, since no output schema exists to carry that.
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 takes zero parameters, so there is nothing for the description to clarify beyond the schema. The baseline of 4 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?
States a specific verb ("Read") and resource ("the last result After Effects wrote"), which is clearly distinct from the action-oriented siblings like run-script and apply-effect. It doesn't explicitly name a sibling to differentiate against, but the retrieval-vs-action distinction is self-evident here.
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?
Gives a concrete when-to-use condition ("Only needed if a command timed out because it was slow") plus an example (heavy effects), which effectively also states when-not to use it. It does not name a specific alternative tool to check first, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run-bridge-testA
Check the connection: runs the bridge's test command in After Effects, which applies test effects to the active composition.
| 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 full behavioral burden. It usefully discloses a hidden side effect that the name would not imply: the test mutates the active composition by applying test effects to it. It does not say whether those effects are cleaned up afterward, whether the change is undoable, or what a pass/fail signal looks like.
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?
One compact sentence with the diagnostic intent front-loaded before the mechanism. There is mild redundancy in restating the word 'test' twice (test command / test effects), but no wasted sentences.
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 zero-argument diagnostic with no output schema and no annotations, the description covers the mechanism but omits the result contract (is there a pass/fail or an error to interpret?) and whether the applied test effects persist in the composition. The sibling get-results suggests output is fetched elsewhere, but that is not stated.
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 takes zero parameters and the schema is an empty object with full description coverage, so there is nothing for the description to clarify. The baseline for a parameterless tool 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?
Names a specific action (runs the bridge's test command in After Effects) and its concrete effect (applies test effects to the active composition), so the agent knows exactly what happens. It lacks an explicit contrast with the closely related sibling run-script, which also executes code in After Effects, leaving the boundary between 'test' and arbitrary script execution to inference.
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 lead phrase 'Check the connection' implies the intended scenario: verifying the host bridge is alive. However, it never says when not to use it, whether it is safe to run mid-workflow, or why the agent should pick this over run-script or get-help for diagnostics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run-scriptA
Run one of the bridge's built-in After Effects commands and return its result. Only these commands exist; it cannot run arbitrary code.
Read: listCompositions, getProjectInfo, getLayerInfo (layers of the ACTIVE composition). Compositions: createComposition {name, width, height, frameRate, duration, pixelAspect, backgroundColor:{r,g,b 0-255}}; setCompositionProperties {compName, duration, frameRate, width, height}. Layers (compName = target composition; colours are [r,g,b] from 0 to 1; position is [x,y] in pixels; times in seconds):
createTextLayer {compName, text, position, fontSize, color, fontFamily, alignment: left|center|right, startTime, duration}
createShapeLayer {compName, shapeType: rectangle|ellipse|polygon|star, name, position, size:[w,h], fillColor, strokeColor, strokeWidth, points, startTime, duration}
createSolidLayer {compName, name, color, size:[w,h], position, isAdjustment, startTime, duration}
createCamera {compName, name, position:[x,y,z], pointOfInterest:[x,y,z], zoom, oneNode}
setLayerProperties {compName, layerName or layerIndex, position, scale:[x,y], rotation, opacity, startTime, duration, enabled, blendMode, threeDLayer, text, fontSize, fontFamily, fillColor, trackMatteType}
batchSetLayerProperties {compName, operations:[{layerName or layerIndex, ...same properties}]}
duplicateLayer {compName, layerName or layerIndex, newName}; deleteLayer {compName, layerName or layerIndex}
setLayerMask {compName, layerName or layerIndex, maskRect:{top,left,width,height} or maskPath, maskMode, maskFeather, maskOpacity, maskExpansion, maskName, maskIndex} Prefer the dedicated tools for keyframes, expressions and effects (they use compIndex/layerIndex). After changing anything visual, call view-comp to check the result.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | The command to run | |
| parameters | No | Arguments for the command, as listed in the description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavioral context: only the enumerated commands exist, units are specified (seconds, pixels, colours 0-1 for layers but 0-255 for composition background), and it flags that dedicated tools use compIndex/layerIndex instead of compName. It does not describe error behavior, reversibility, or the shape of the returned result.
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 purpose and the 'cannot run arbitrary code' caveat are front-loaded, then commands are grouped under Read / Compositions / Layers headings. It is long, but the density is justified by 19 enum values and nested parameter objects; a few inline commands on one line are slightly harder to scan.
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 high-complexity dispatcher with a nested parameters object and no output schema, the description covers usage, commands and units well. The gap is return-value behavior: 'return its result' is the only hint about what the agent gets back from each command.
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 only nominally ('The command to run', 'Arguments... as listed in the description'), so the description is de facto the only source of parameter structure. It supplies per-command argument names plus meaningful units and ranges (times in seconds, positions in pixels, layer colours 0-1 vs composition background 0-255), which is genuine added value.
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 opening sentence gives a specific verb (run) and resource (the bridge's built-in After Effects commands) and immediately bounds it: 'it cannot run arbitrary code.' It then enumerates every command, so an agent can distinguish this dispatcher from siblings like apply-effect or setLayerKeyframe without opening the schema.
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 routes the agent away from this tool for keyframes, expressions and effects ('Prefer the dedicated tools...') and tells it to verify visual changes with view-comp. However, no guidance is given for overlapping siblings such as create-composition, which this tool can also perform via its createComposition command, so the routing is incomplete.
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 After Effects expression on a layer property (e.g. wiggle(2,20) for gentle handheld motion).
| Name | Required | Description | Default |
|---|---|---|---|
| compIndex | Yes | 1-based index of the composition in the Project panel (see getProjectInfo / listCompositions). | |
| layerIndex | Yes | 1-based index of the layer within the composition. | |
| propertyName | Yes | Property: 'Position', 'Scale', 'Rotation' or 'Opacity'. | |
| expressionString | Yes | The expression. Use "" to remove it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does not say whether an existing expression is overwritten, whether the bridge/AE instance must be running, whether the change is undoable, or how errors surface for an invalid expression string. For a mutation tool with zero annotation coverage this is a real 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 that states the action, the target, and an example, with 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?
For a 4-parameter mutation tool with no output schema and no annotations, the description covers the core action adequately but omits return behavior and operational prerequisites. It is minimally sufficient rather than 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%, including the "" removal convention and the accepted property names, so the schema does the heavy lifting and 3 is the baseline. The description's wiggle example adds mild illustrative value but no syntax or format detail 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?
States a specific verb pair (set/remove) and resource (After Effects expression on a layer property), with a concrete example (wiggle(2,20)). It is clearly distinguishable from siblings like setLayerKeyframe and apply-effect, though it never names them to draw the boundary explicitly.
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?
'Set or remove' implies the two usage modes and the example shows a typical expression, but there is no explicit when-to-use vs alternatives (e.g. setLayerKeyframe for static values) and no prerequisites such as a running After Effects instance or bridge connection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setLayerKeyframeA
Set a keyframe on a layer property at a given time. Add two or more keyframes on the same property to animate it.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Value: [x,y] for Position, [w,h] percent for Scale, degrees for Rotation, percent for Opacity. | |
| compIndex | Yes | 1-based index of the composition in the Project panel (see getProjectInfo / listCompositions). | |
| layerIndex | Yes | 1-based index of the layer within the composition. | |
| propertyName | Yes | Property to keyframe: 'Position', 'Scale', 'Rotation' or 'Opacity'. | |
| timeInSeconds | Yes | Time of the keyframe, in seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the animation intent, but says nothing about whether an existing keyframe at that time is overwritten, what permissions or undo state apply, or any side effects of mutating the property.
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 short sentences, action front-loaded, no redundant or filler text. Every clause carries 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 5-parameter mutation tool with no annotations and no output schema, the description covers the core action but omits overwrite behavior, error conditions, and return information. Adequate but with clear 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?
Schema coverage is 100%, so every parameter including the value-unit conventions is already documented in the schema. The description adds 'at a given time' but no format or semantic detail beyond what the schema provides, so the baseline 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 states a specific verb (Set) and resource (a keyframe on a layer property) plus the temporal scope, which is enough to separate it from apply-effect or setLayerExpression. It stops short of explicitly contrasting those siblings, so it is not a 5.
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 second sentence implies usage ('Add two or more keyframes on the same property to animate it'), giving a hint about intent but no explicit when-to-use, prerequisites, or when to prefer an alternative tool such as setLayerExpression.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view-compA
SEE a composition: renders evenly spaced frames from After Effects and returns them as one IMAGE with the time of each frame. Use it after building or animating something to check text placement, timing and motion before telling the user it is done. Defaults to the active composition.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End of the range in seconds (default: end of the composition) | |
| start | No | Start of the range in seconds (default 0) | |
| width | No | Width of each frame in the sheet (default 384) | |
| frames | No | How many frames to show (default 8, max 24) | |
| compName | No | Composition name (default: the active composition) | |
| compIndex | No | Or the composition's 1-based Project panel index |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: the output is one IMAGE containing multiple evenly spaced frames annotated with their times, and it defaults to the active composition. It omits cost/side-effect context such as render latency or whether After Effects must be running, which keeps it short of 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?
Front-loaded with the action ('SEE a composition'), followed by the return format, the usage trigger, and the default. 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?
For a 6-parameter read tool with full schema coverage and no output schema, the description supplies the missing return-value semantics (single image, frame timestamps) and the default target composition. It leaves minor gaps about rendering cost and environment 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 coverage is 100% and every parameter is already documented with defaults and bounds, so the baseline is 3. The description only lightly reinforces this by noting the active-composition default (compName) and the evenly spaced frame sampling, adding no new syntax or format detail.
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?
States a specific verb and resource: renders evenly spaced frames from an After Effects composition and returns a single composite image with per-frame timestamps. This is clearly distinguishable from siblings like create-composition or apply-effect, which mutate the project rather than produce a visual preview.
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 tells the agent when to use it: after building or animating something, to verify text placement, timing and motion before reporting completion. It gives clear context but names no alternatives or exclusions (e.g., when a single-frame preview would be preferable).
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.
11 tool updates
v1.0.0-ibintec.1- First observed
apply-effect - First observed
apply-effect-template - First observed
create-composition - First observed
get-effects-help - First observed
get-help - First observed
get-results - First observed
run-bridge-test - First observed
run-script - First observed
setLayerExpression - First observed
setLayerKeyframe - First observed
view-comp
TDQS
Scored across 11 tools
Most tools have clearly distinct purposes (run-script runs built-in commands, create-composition creates a comp, setLayerKeyframe animates, view-comp renders). However, the first tool 'run-script' is a meta-tool that overlaps with many named commands, and 'create-composition' appears to duplicate the createComposition command listed inside run-script, creating some confusion. 'apply-effect' vs 'apply-effect-template' and 'setLayerProperties' vs 'batchSetLayerProperties' are distinguishable but require reading descriptions.
Mixed conventions: snake_case for top-level tools (run-script, setLayerKeyframe, apply-effect), while the description lists camelCase built-in commands (getProjectInfo, createTextLayer, setLayerProperties). The hyphen/underscore and camelCase inconsistency across the surface makes the set feel like two conventions bolted together.
11 top-level tools is well-scoped for an After Effects automation bridge, though the tool docs disclose a much larger hidden repertoire of built-in commands funneled through run-script, which somewhat undercuts the count's meaning.
Core lifecycle is decently covered (create comp, layers, keyframes, expressions, effects, view), but deleting compositions, listing effects on layers, and exporting/rendering are absent. The heavy reliance on run-script's unlisted built-ins suggests the explicit surface has notable gaps.
Maintenance
Related MCP Connectors
One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.
- tonpitOAuthcom.tonpit
Video production studio for AI agents: AI media, motion graphics as code, timeline and export.
Compose, edit and render video with your AI agent. Turn footage into finished edits with content-aware reframing, word-timed captions and motion graphics. Hosted MCP with OAuth sign-in; cloud processing uses credits.
Build and run visual creative-production workflows from your AI agent.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to control Adobe After Effects to create videos programmatically, with commands for comps, layers, effects, and rendering.8 npm23MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to operate Adobe After Effects with the dexterity of an editor: reading projects, creating and rigging layers, setting real velocity curves, animating text, building native SVG-based shapes, applying effects, expressions, masks, and viewing render snapshots to verify results.1716 npm1MIT
- AlicenseCqualityCmaintenanceEnables AI assistants and applications to control Adobe After Effects through the Model Context Protocol, including creating compositions, managing layers, and animating properties via keyframes and expressions.1379 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to connect to Adobe After Effects locally, inspecting projects, comps, and layers, discovering and executing a catalog of operations, rendering frames, and saving projects, with on-demand skill-based guidance.121MIT