Skip to main content
Glama

After Effects MCP

Let Claude and other AI agents work in Adobe After Effects: build comps, animate with keyframes and expressions, lay out and warp type, look at frames, and render, all through the Model Context Protocol. It ships with skills that turn a short brief into a finished, sound-designed video.

What's in the box

The MCP server

  • 115+ commands: compositions, layers, shapes, text, masks, effects, cameras, keyframes, expressions, markers, rendering, plus procedural and layout tools.

  • Results come straight back. Each command runs over a local socket and returns its result in the same call; render-frame returns a frame as an image the agent can look at.

  • Many agent sessions, one After Effects. The first server becomes a hub and the others route through it; if it closes, another takes over.

  • Renders that don't freeze AE. Full renders run in a separate process with aerender.

  • Safe timeouts. A command that can't reach AE in time (a dialog is open, a render is running) is dropped and never runs later by surprise.

The skills (skills/): Claude Code skills that make finished videos with the server.

Skill

Makes

ae-explainer-engaging

A 10–30 s one-take story: a hero element bounces through a product's workflow with real physics and a following camera

ae-explainer-high-energy

A 12–20 s hype promo: beat-locked kinetic type, a shape that carries every transition

ae-explainer-default

A clean 45–90 s product demo with the product's UI rebuilt as vector layers

ae-motion-broll

Motion-graphic B-roll for a talking-head video, timed to the speaker's words

ae-sound-effects

A measured sound pass: cues from comp markers, beat grid checked, CC0 sounds, mixed to −16 LUFS

ae-object-separation

Subject cut-outs from footage with SAM 2, as After Effects track mattes

ae-motion-core

The foundation they share: a tested expression library (springs, ballistic hops, squash and stretch, camera follow, typing) and a build, check and render workflow

Related MCP server: aftr

Quick start

You need After Effects 2022 or later (developed on 2026, macOS), Node.js 18+, and an MCP client such as Claude Code or Claude Desktop.

1. Install the server and the After Effects panel

On macOS double-click Install AE MCP (Mac).command, on Windows Install AE MCP (Windows).bat. It builds the server, copies the bridge panel into After Effects (asking for your admin password if needed) and registers the server as after-effects in Claude Desktop. Or by hand:

git clone https://github.com/pouulll/after-effects-mcp-extended.git
cd after-effects-mcp-extended
npm install              # also builds
npm run install-bridge   # copies the panel into After Effects

and register it with your client, for example in Claude Code:

claude mcp add after-effects -- node "$PWD/build/index.js"

2. Open the panel in After Effects

Enable Settings → Scripting & Expressions → Allow Scripts to Write Files and Access Network (Windows: Edit → Preferences), restart After Effects, and open Window → mcp-bridge-auto.jsx. It should read Connected to MCP server (port 8790).

3. Install the skills (optional)

cp -R skills/ae-* ~/.claude/skills/

Then ask your agent something like "Make a 12-second engaging explainer for my app", or just "run bridge-status" to check the connection.

How it works

 Claude session A ── MCP server (hub) ◄──────── TCP 127.0.0.1:8790 ──────── After Effects
 Claude session B ── MCP server (follower) ──┘                              (bridge panel)

After Effects doesn't let scripts listen on sockets, so the bridge panel inside AE connects out to the MCP server and polls it for work every 40–120 ms. Every agent session starts its own copy of the server; the first becomes the hub (it owns the panel connection and a single command queue), later ones become followers that forward their calls through it, and if the hub's session closes a follower takes over within about a second. Every command carries a deadline, so nothing runs late after its caller has given up.

Tools

Tool

What it does

run-script

Runs any of the 115+ commands and returns its result

bridge-status

connected, busy (AE is rendering or blocked by a dialog) or disconnected, plus AE version, round-trip time and hub/follower role

render-frame

Renders one frame and returns it as an image. Areas with no layer are transparent

start-render

Renders the render queue in the background with aerender; returns a job id

render-status / cancel-render

Follows or stops a background render

create-composition

Typed shortcut for creating a comp

get-help

Usage guide for agents

run-script { script: "createTextLayer", parameters: { compName: "Intro", text: "Hello", fontSize: 96 } }

Command highlights

Area

Commands

Project

getProjectInfo, listProjectItems, importFootage, saveProject, openProject, projectCleanup

Comps

createComposition, duplicateCompositionDeep, precompose, updateCompSettings, setActiveComposition

Layers

text, shape, solid, null, camera and light layers; setLayerParent, moveLayer, splitLayer, setLayerSwitches

Properties

getProperty, setPropertyValue, searchProperties, getLayerProperties; any property by path, e.g. "Contents/Rectangle 1/Rectangle Path 1/Size"

Animation

setKeyframes, getKeyframes, quantizeKeyframes, staggerLayers, applyValueCurve, bpmMarkers

Expressions

setExpressionByPath, listExpressions, getExpressionErrors, bakeExpression, sampleProperty

Text layout

layoutTextStack (type-scale hierarchy fitted to the layout), fitTextToBox, alignLayers, distributeLayers, setAnchorPoint, warpText, textOnPath

Effects & text

applyEffect, applyEffectTemplate, setTextProperties, textAnimatorPreset, applyMotionPreset

Procedural

generatePath, proceduralLayout, scatter3D, makeVariations, applyPalette, cameraRigPreset, setupDOF

Rendering

addToRenderQueue, listRenderQueue, startRender, renderFrames, saveFrameToPng, exportMogrt

Efficiency

batch (many commands in one call and one undo step), buildComposition (a whole comp in one call)

Escape hatch

evalScript runs arbitrary ExtendScript

The full reference is in CAPABILITIES.md. Every command that changes the project is one undo step in After Effects.

Text layout

These commands measure what is actually on screen, so parenting, scale and rotation are handled.

  • layoutTextStack sizes a title, subtitle and body on a modular type scale, stacks them with consistent gaps and scales the whole block to fit the area (title-safe by default).

  • fitTextToBox finds the font size at which text fits a box, the comp or another layer, then aligns it inside.

  • alignLayers, distributeLayers and setAnchorPoint work like AE's Align panel, plus safe areas, boxes and target layers.

  • warpText applies Photoshop-style warps (arc, bulge, flag, wave, rise, …). It first wraps the text in a precomp sized to the text, because AE's warp effects otherwise bend the whole comp-sized text layer and skew the type. The text stays editable.

  • textOnPath puts text on an arc, circle, wave or your own curve with AE's Path Options, so glyphs stay sharp and upright.

Background rendering

start-render hands the render queue to aerender, which renders the saved project in its own After Effects process while yours stays usable (pass saveProject: true to save first). Follow it with render-status. inProcess: true renders inside AE instead, queueInAME: true sends the queue to Media Encoder, and AE_RENDER_PATH points at aerender if it isn't found automatically.

Example

examples/relay-engaging/ is the video at the top: one build.jsx that builds the whole project (rebuild it in seconds through evalScript), the expressions it uses, and what was measured along the way.

Companion tools

tools/frame_tools.py makes contact sheets, frame metrics, visual diffs and GIF previews from rendered frames (needs Pillow). tools/audio_tools.py extracts amplitude envelopes, onsets and BPM from audio, ready for applyValueCurve and bpmMarkers (needs numpy and ffmpeg).

Troubleshooting

Symptom

What to check

bridge-status says disconnected

Is the panel open, and is Accept commands checked? Click Reconnect to MCP Server in the panel

bridge-status says busy

AE is rendering or showing a dialog. Close the dialog; queued commands continue

Panel says "Waiting for MCP server…"

No MCP client is running the server. Start Claude or your client

Panel can't connect at all

Check Allow Scripts to Write Files and Access Network. Run src/scripts/diagnose-socket.jsx via File → Scripts → Run Script File to test sockets

Port 8790 is taken

The server falls back to 8791–8794 and writes the port to ~/Documents/ae-mcp-bridge/port.json, which the panel reads. AE_MCP_PORT forces a port

Security

The server only listens on 127.0.0.1, but anything on your machine that can reach that port can run commands in After Effects, including evalScript, which runs arbitrary ExtendScript. Use it on a machine you trust.

Development

npm run build   # bundles src/index.ts with esbuild and copies src/scripts → build/scripts

Path

Contents

src/index.ts

MCP server: tools, bridge hub/follower, aerender jobs

src/scripts/mcp-bridge-auto.jsx

The After Effects panel (ExtendScript, ES3)

src/scripts/commands.jsx

Hot-reloadable command pack, synced to ~/Documents/ae-mcp-bridge/ and reloaded by the panel when it changes

src/scripts/commands-manifest.json

Pack commands that run-script allows

skills/

The Claude Code skills

setup.js, install-bridge.js

Installers

Panel changes need a reinstall (npm run install-bridge) and an After Effects restart; commands.jsx changes only need a server restart.

Credits

Started as a fork of Dakkshin/after-effects-mcp; the socket bridge, multi-session hub, command pack, background rendering and most of the server have since been rewritten, and the original layer and composition commands still live in the panel. The skills adapt the video styles of Bart's motion-graphics skills (MIT; see skills/LICENSE-motion-graphics.md); the sound-pass method is by Vox (@Voxyz_ai).

License

MIT. See LICENSE.

Available Tools

8 tools
bridge-statusA

Check that After Effects and the MCP Bridge panel are reachable, and measure round-trip latency.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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. The word 'check' plus latency measurement conveys a diagnostic, non-mutating operation, but the description never says whether an unreachable bridge raises an error or returns a status value, nor whether it is cheap enough to poll — critical details for an agent deciding whether to gate other calls on it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; both the reachability check and the latency measurement are stated up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, annotation-free tool with no output schema, the description should at minimum sketch the return shape (reachable/not reachable, latency value) and failure behavior. It covers the what but leaves the result contract entirely unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check reachability) and two concrete targets (After Effects and the MCP Bridge panel), plus a secondary function (round-trip latency). It is clearly distinct from sibling tools like render-status, which tracks render progress, though the description does not name that sibling to draw the contrast explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent can infer this is a pre-flight connectivity check before calling run-script or start-render, but nothing states when to call it, whether to call it before every operation, or what to do if it fails.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel-renderB

Stop a background render started by start-render.

NameRequiredDescriptionDefault
jobIdYesJob id from start-render

TDQS

B3.3/5.0
Behavior2/5

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 whether cancellation is immediate or graceful, whether partial output is discarded, whether it is idempotent on finished jobs, or what permissions are needed. It only restates the mutation implied by 'stop'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the action and resource, with zero filler. Nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool whose schema is fully documented, the essentials are present, but with no annotations and no output schema the description should at least describe the effect of cancellation and the expected result. It is adequate but leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single jobId parameter is documented as coming from start-render, matching the description. The description adds no further syntax or format detail beyond the schema, which is the expected baseline here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (stop) plus resource (a background render), and it ties itself to the sibling that creates such jobs (start-render), which separates it from render-status and render-frame. It doesn't explicitly contrast against other siblings, but the intent is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'started by start-render' implies the precondition for use, but there is no explicit guidance on when not to call it, what to do if the job already finished, or how it relates to render-status. Usage is inferable rather than stated.

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

NameRequiredDescriptionDefault
nameYesName of the composition
widthYesWidth of the composition in pixels
heightYesHeight of the composition in pixels
durationNoDuration in seconds (default: 10.0)
frameRateNoFrame rate in frames per second (default: 30.0)
pixelAspectNoPixel aspect ratio (default: 1.0)
backgroundColorNoBackground color of the composition (RGB values 0-255)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

get-helpA

Get help on using the After Effects MCP integration

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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 only restates the purpose ('Get help') without disclosing what the help output contains, whether it lists commands, returns usage examples, or requires further input. Behavior is largely opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 11 words, front-loaded with the verb 'Get'. No filler or redundancy; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter help tool, the description is largely complete, clearly stating the scope ('After Effects MCP integration'). The absence of an output schema means a description of the return format would have been useful, but this is a minor gap given the simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is an empty object with 100% coverage. No parameter documentation is needed; the baseline for 0-param tools is 4, and the description doesn't misrepresent any parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get help on using the After Effects MCP integration', with a specific verb and resource. It distinguishes itself from sibling tools that perform specific operations like apply-effect or run-script.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The implied usage is when the user needs assistance with the MCP integration, but there is no explicit when-to-use guidance or mention of alternatives. It doesn't reference more specific help tools like mcp_aftereffects_get_effects_help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render-frameA

Render a single frame of a composition and return it as a PNG image, so results can be verified visually.

NameRequiredDescriptionDefault
timeNoTime in seconds (default: current comp time)
compIdNoComposition id (from listCompositions)
methodNoRender method (default auto: saveFrameToPng, then render-queue PNG fallback)
compNameNoComposition name (alternative to compId)
outputModuleTemplateNoName of a PNG/still Output Module template, used if the render-queue fallback can't auto-detect one

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the return format as a PNG image, but it does not mention side effects, permissions, expected latency, or the render-method fallback behavior described in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with the primary action front-loaded and no wasted clauses. It communicates the purpose and output format efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The core operation and return type are stated, which is useful with no output schema. However, for a tool with five optional parameters and no annotations, the description does not clarify that a composition identifier is needed in practice or explain the method fallback behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description adds no parameter-level detail, which is acceptable at the baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: render a single frame of a composition and return it as a PNG image. It clearly implies a narrower scope than start-render, but it does not explicitly name or contrast with any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'so results can be verified visually' implies the intended use case, but there is no explicit guidance on when to choose this over start-render, run-script, or render-status. The agent must infer the selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render-statusA

Progress of background renders started by start-render (or run-script startRender) from this session.

NameRequiredDescriptionDefault
jobIdNoJob id; omit to list all jobs

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It usefully discloses the session-scoping constraint (only jobs from this session are visible), but says nothing about return shape, whether jobs persist after completion, or whether polling is expected for a tool whose whole purpose is progress tracking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that establishes the resource and its scoping constraint with no filler; the parenthetical naming the alternative entry point is worth its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-optional-param read with full schema coverage and no output schema, the core is covered, but the agent is left guessing what 'progress' looks like in the response and whether completed jobs remain queryable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one optional parameter at 100% schema coverage, with the schema already stating 'omit to list all jobs'. The description adds no further detail on jobId format or listing behavior, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (background render progress) and pins it to jobs started by start-render / run-script startRender in this session, which separates it from render-frame and start-render. It lacks an explicit verb ('retrieve/report'), but the scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The reference to start-render and run-script startRender implies the follow-up role this tool plays after launching a job, and 'from this session' implies a boundary. There is no explicit statement of when not to use it (e.g. completed/older jobs) or what to do instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run-scriptC

Run a command in After Effects and return its result. Executes synchronously over a local socket to the MCP Bridge panel.

NameRequiredDescriptionDefault
scriptYesName of the predefined script/command to run
parametersNoOptional parameters for the script

TDQS

C2.9/5.0
Behavior2/5

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 synchronous execution over a local socket to the MCP Bridge panel, but it omits important traits for a command-execution tool, such as side effects, permissions, error behavior, timeouts, or whether arbitrary scripts can be run.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the primary action, and includes execution context without unnecessary filler. Every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a command-execution tool with no annotations, no output schema, and a nested parameters object. The description explains the transport mechanism but does not describe the result format, error handling, safety constraints, or when the tool should be preferred over more specialized sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines both parameters, including the required script name and optional parameters object. The description adds little beyond the schema and does not explain how script names are discovered or how the parameters object is used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: run a command in After Effects and return its result. It does not explicitly differentiate this generic script runner from siblings such as render-frame, start-render, or create-composition, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like render-frame, start-render, or create-composition. It also does not state exclusions or prerequisites, leaving usage to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start-renderA

Render the render queue in the background with aerender (a separate AE process), so After Effects and the bridge stay responsive. Renders the SAVED project file. Returns a jobId for render-status.

NameRequiredDescriptionDefault
itemIndicesNoRender queue indices (1-based) to render; default: every queued item
saveProjectNoSave the open project first if it has unsaved changes (default false: refuse instead)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses that rendering happens out-of-process in the background, that it operates on the on-disk saved project, that unsaved changes cause a refusal unless saveProject is set, and that it returns an async jobId. It stops short of error behavior, concurrency limits (can two renders overlap?), or how cancellation interacts with cancel-render.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler; the core action and the responsiveness benefit are front-loaded, followed by the project-file constraint and then the return value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async, no-output-schema tool the description covers what an agent needs to call it and what comes back (jobId for render-status). Minor gaps remain: prerequisites such as aerender availability, what happens if a render is already running, and failure reporting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, giving a baseline of 3. The description reinforces saveProject's consequence ('renders the SAVED project file'), but adds no detail about itemIndices ordering, out-of-range behavior, or partial selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Render the render queue') plus the underlying mechanism (aerender as a separate AE process), and implicitly separates it from the single-frame sibling render-frame. It also states the unit of work (the whole queue / default every item) and the return value (jobId).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The rationale ('so After Effects and the bridge stay responsive') implies this is the non-blocking way to render a queue, but there is no explicit when-to-use versus render-frame, run-script, or the fact that you must poll render-status afterwards. The only concrete directive is behavioral (renders the SAVED file), not a usage rule.

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.

  1. 8 tool updatesv2.0.0
    • First observedbridge-status
    • First observedcancel-render
    • First observedcreate-composition
    • First observedget-help
    • First observedrender-frame
    • First observedrender-status
    • First observedrun-script
    • First observedstart-render

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct purposes: connectivity, scripting, single-frame rendering, background render lifecycle, composition creation, and help. The main overlap is that run-script is a generic escape hatch that could technically duplicate create-composition and render operations, though descriptions clarify when to use the specialized tools.

Naming Consistency4/5

Tool names consistently use kebab-case and are mostly action-oriented verb_noun or verb_resource patterns (run-script, render-frame, start-render, cancel-render, create-composition, get-help). bridge-status and render-status are noun-status forms, a minor but visible deviation from the dominant verb-first convention.

Tool Count5/5

Eight tools is well-scoped for an After Effects bridge server, covering execution, diagnostics, rendering, composition creation, and help without bloat. Each tool earns its place, and the render lifecycle is split into appropriate start/status/cancel operations.

Completeness4/5

The surface covers the core integration lifecycle: checking the bridge, executing arbitrary AE commands, visually verifying a frame, creating compositions, and managing background renders. It lacks high-level tools for common project/composition/layer CRUD, but run-script provides an escape hatch for those operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers