Skip to main content
Glama
brandkickagency

After Effects MCP Server

Brandkick

Brought to you by Brandkick - We grow brands like they're our own.


After Effects MCP Server

A Model Context Protocol server for Adobe After Effects. Enables AI assistants to control After Effects through a WebSocket-based CEP panel.

Requirements

  • Adobe After Effects 2021+ (versions 18.x - 26.x)

  • Node.js 18+

  • pnpm

Related MCP server: After Effects MCP Server

Installation

git clone https://github.com/Brandkick/after-effects-mcp.git
cd after-effects-mcp
pnpm install
just setup

Configuration

Add to Claude Code config (~/.claude.json):

{
  "mcpServers": {
    "aftereffects": {
      "command": "node",
      "args": ["/path/to/after-effects-mcp/build/index.js"]
    }
  }
}

Usage

  1. Claude Code starts the MCP server automatically

  2. Open After Effects

  3. Open the panel: Window > Extensions > MCP Bridge

Setup: JPEG Output Template

For exportCompFrame to work, create a JPEG output template in After Effects:

  1. Create any composition

  2. File > Export > Add to Render Queue

  3. Click "Output Module" settings

  4. Set Format to "JPEG Sequence"

  5. Set Quality to 50-70% (faster previews, smaller files)

  6. Optionally resize: check "Resize" and set to 50% or a fixed size like 960x540

  7. Click the template dropdown (top of dialog)

  8. Select "Save As New Template..."

  9. Name it exactly: JPEG Sequence

  10. Click OK

This only needs to be done once per After Effects installation.

MCP Tools

Tool

Description

run-script

Execute any command (see Commands below)

getHelp

List all available commands

createComposition

Create a new composition

setLayerKeyframe

Set a single keyframe

setLayerKeyframes

Set multiple keyframes (batch)

setLayerExpression

Apply expressions to properties

setEffectKeyframes

Animate effect properties (batch)

importFootage

Import files into project

addToRenderQueue

Queue composition for render

exportCompFrame

Export single frame as PNG for visual verification

Commands

All commands can be called via run-script. Use getHelp to see full documentation.

Project

  • getProjectInfo, newProject, saveProject, saveProjectAs, closeProject

  • createFolder, moveProjectItem, deleteProjectItem

  • importFootage, importPlaceholder, replaceFootage

Composition

  • listCompositions, getActiveComposition, createComposition

  • setCompSettings - Modify duration, work area, frame rate, motion blur

Layers

  • createTextLayer, createShapeLayer, createSolidLayer, addLayerToComp

  • getLayerInfo, setLayerProperties - Name, transform, timing

  • setLayerFlags - Visibility, solo, shy, locked, motion blur, 3D

  • deleteLayer, duplicateLayer, reorderLayer, precomposeLayer

  • setParentLayer, setTrackMatte

  • setTextProperties - Font, size, color, justification

Animation

  • setLayerKeyframe, setLayerKeyframes (batch)

  • setLayerExpression

  • getKeyframes, deleteKeyframe, deleteKeyframes (batch)

  • setKeyframeEasing, setKeyframesEasing (batch)

  • copyKeyframes

Effects

  • applyEffect, applyEffectTemplate

  • listEffects, listAvailableEffects, getEffectProperties

  • setEffectKeyframe, setEffectKeyframes (batch)

Time & Markers

  • setLayerTime - In/out point, start time, stretch

  • enableTimeRemapping, setTimeRemap

  • addMarker, getMarkers, removeMarker

Camera & 3D

  • createCamera, createLight

  • setCameraProperties, setLightProperties

  • set3DLayer, setMaterialOptions

Masks & Shapes

  • addMask, setMaskPath, setMaskProperties, deleteMask

  • addShapePath, setShapePathVertices, addShapeModifier

Render

  • addToRenderQueue, renderQueue, queueInAME

  • getRenderQueueStatus, clearRenderQueue

  • exportCompFrame - Visual verification

Utility

  • getSelection, setSelection

  • beginUndoGroup, endUndoGroup, getUndoGroupStatus

  • getPropertyInfo, listFonts

MCP Resources

Resource

Description

aftereffects://compositions

List all compositions

aftereffects://workflow-guide

Visual verification workflow guide

Development

just setup   # Build and install CEP panel with debug mode
just build   # Build only
just start   # Start MCP server (for testing)
just clean   # Remove build directory

Architecture

Claude Code <--stdio--> MCP Server <--WebSocket:8765--> CEP Panel <--CSInterface--> ExtendScript

See ARCHITECTURE.md for design principles.

Project Structure

after-effects-mcp/
├── src/
│   ├── index.ts              # MCP server, tool definitions
│   ├── websocket-server.ts   # WebSocket server
│   ├── logger.ts             # Logging utility
│   ├── shared/
│   │   ├── commands.ts       # Command registry (single source of truth)
│   │   └── config.ts         # Configuration and timeouts
│   └── cep/                   # CEP extension
│       ├── CSXS/manifest.xml
│       ├── index.html
│       ├── js/main.js         # WebSocket client
│       └── jsx/modules/       # ExtendScript (modular)
│           ├── 00-polyfills.jsx
│           ├── 01-helpers.jsx
│           ├── 10-project.jsx
│           ├── 11-layer.jsx
│           ├── 12-keyframe.jsx
│           ├── 13-time.jsx
│           ├── 14-render.jsx
│           ├── 15-camera.jsx
│           ├── 16-mask.jsx
│           ├── 17-shape.jsx
│           ├── 18-selection.jsx
│           ├── 19-discovery.jsx
│           └── 99-dispatcher.jsx
├── scripts/
│   ├── install-cep.js
│   ├── build-jsx.ts          # Concatenates JSX modules
│   └── generate-cep-config.ts
├── tests/
├── justfile
└── package.json

License

MIT

Available Tools

10 tools
addToRenderQueueB

Add a composition to the render queue

ParametersJSON Schema
NameRequiredDescriptionDefault
compNameNoComposition name
compIndexNoComposition index
outputPathNoOutput file path
outputTemplateNoOutput module template name
renderSettingsNoRender settings template name

TDQS

B3.2/5.0
Behavior2/5

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 'add', implying a mutation, but does not explain side effects, error behavior, or whether the rendering is asynchronous. This is minimal and provides little beyond the obvious.

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, concise sentence with no redundant words or fluff. It is front-loaded and every word serves a purpose, making it highly efficient.

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?

The tool has 5 parameters, no annotations, and no output schema. The description only states the action and does not explain any prerequisites, return values, or behavior on success/failure. This is inadequate for a tool with optional parameters and no safety profile.

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?

The input schema has 100% description coverage for all 5 parameters, so the description does not need to explain each parameter. The description adds no additional meaning beyond the schema, which is the baseline expectation.

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 'Add a composition to the render queue' clearly identifies the action (adding) and the target resource (composition to render queue). It distinguishes from sibling tools like exportCompFrame, which exports a frame, and createComposition, which creates a composition.

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 provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or conditions. It simply states what it does without context or exclusions.

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

createCompositionB

Create a new After Effects composition

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesComposition name
widthNoWidth in pixels (default: 1920)
heightNoHeight in pixels (default: 1080)
durationNoDuration in seconds (default: 10)
frameRateNoFrame rate (default: 30)

TDQS

B3.1/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 of behavioral disclosure. The description only states 'Create' without mentioning side effects (e.g., adding to the current project), requirements (e.g., After Effects must be running), or return values. 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.

Conciseness4/5

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

The description is a single concise sentence that is easy to parse and front-loaded. It wastes no words, but it is under-specified for a tool with five parameters and no annotations, making it feel minimal rather than appropriately sized.

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?

Despite full schema coverage, the description lacks critical behavioral context such as what happens after creation, whether it affects the active project, or any prerequisites. With no output schema and no annotations, the description is incomplete for an agent to fully understand the tool's behavior and impact.

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?

The input schema covers 100% of the parameters with descriptions and defaults, so the schema already provides full parameter semantics. The description adds no additional meaning beyond the tool name, keeping the baseline of 3 because it neither enhances nor detracts from schema information.

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 clearly states the verb 'Create' and the resource 'After Effects composition', making it distinct from siblings like run-script or importFootage. It is specific enough to identify the tool's primary function, though it lacks explicit sibling differentiation or additional context like whether it creates in the active project.

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 implies usage: use this tool to create a new After Effects composition. However, it does not explicitly state when to use it versus alternatives or mention any prerequisites. Since the sibling tools are all different operations, the implied context is clear but not fully articulated.

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

exportCompFrameA

Export a single frame from a composition as PNG for visual verification. Use this after creating or modifying compositions to verify the result looks correct. Then use the Read tool on the returned path to view the image.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNoTime in seconds (default: current time)
qualityNoRender quality (default: draft)
compNameNoComposition name
compIndexNoComposition index (1-based)
outputPathNoOutput file path (default: /tmp/ae_preview_xxx.png)

TDQS

A4/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 burden of disclosure. It does mention the output is a PNG and that a path is returned, which is useful. However, it does not disclose potential side effects such as overwriting existing files at the output path, or any permissions or resource implications. The behavior is simple, but more could be said.

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 three sentences, all of which serve a purpose: stating the function, indicating when to use it, and providing the follow-up step. There is no fluff or repetition of schema information, making it concise and well-structured with the key information front-loaded.

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?

Given the tool's moderate complexity (5 parameters, no output schema), the description is largely complete. It explains the tool's purpose, when to use it, and the resulting workflow. It does not explicitly state the return type, but the mention of 'returned path' implies it. The description effectively completes the workflow without requiring additional explanation.

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?

The schema covers 100% of the parameters with descriptions, so the baseline is 3. The description does not add any additional meaning to the parameters themselves; it only mentions the general purpose. Since the schema adequately documents each parameter, the description's lack of parameter-level detail is acceptable.

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 the tool's function: 'Export a single frame from a composition as PNG for visual verification.' It specifies the action (export), the resource (a single frame from a composition), and the output format (PNG). This is distinct from sibling tools that create or modify compositions, making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'Use this after creating or modifying compositions to verify the result looks correct.' It also provides a follow-up workflow: 'Then use the Read tool on the returned path to view the image.' While it lacks explicit when-not-to-use scenarios or named alternatives, the context is clear enough for an agent to select it for visual verification tasks.

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

getHelpB

Get help on using the After Effects MCP integration

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior1/5

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

There are no annotations provided, so the description carries the full burden. It only says 'Get help' without disclosing what the help output looks like, whether it returns a list of commands, static text, or has any side effects. The description adds almost no behavioral context beyond the obvious purpose.

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, front-loaded sentence: 'Get help on using the After Effects MCP integration'. Every word earns its place; there is no fluff or redundancy. It is appropriately concise for the tool's simplicity.

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 tool with no parameters and no output schema, the description is minimally viable but leaves gaps. It doesn't mention what kind of help is provided (e.g., a list of tools, usage examples, or error explanations). Since there is no output schema, the description is the sole source of behavioral context, and it lacks sufficient detail to fully understand the tool's output.

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, so the schema coverage is 100% by default. With 0 params, the baseline is 4, and the description correctly adds no parameter-specific information because none exist. It doesn't need to compensate for any gaps.

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 the verb 'Get' and the resource 'help on using the After Effects MCP integration', which is distinct from all sibling tools that perform specific actions like creating compositions or setting keyframes. It is specific and not a tautology.

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 explicit guidance on when to use this tool vs alternatives. It only implies that it's for getting help, but does not say 'use this when you need instructions' or mention any exclusions. Sibling tools are all concrete operations, but no comparison or context is provided.

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

importFootageC

Import footage into the After Effects project

ParametersJSON Schema
NameRequiredDescriptionDefault
compNameNoSpecific composition name to add to
filePathYesAbsolute path to the file
sequenceNoImport as image sequence
addToCompNoAdd to active composition

TDQS

C2.9/5.0
Behavior2/5

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 basic action and does not mention side effects, handling of image sequences, whether it adds to a composition, or any error conditions. This is insufficient for a tool that mutates the project state.

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 that is front-loaded with the key action and resource. It contains no unnecessary words or redundancy, making it extremely concise and well-structured for quick parsing.

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?

The tool has four parameters, no output schema, and no annotations. The description is minimal and does not elaborate on how import works (e.g., what occurs when sequence is true, what happens if addToComp is false, or how this relates to other composition tools). While the schema covers parameter definitions, the overall context for selecting and using the tool is lacking, especially without any usage guidance.

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 four parameters are documented in the schema itself. The description adds no parameter information beyond what the schema already provides, so it meets the baseline but does not compensate or add extra semantic nuance.

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?

Description clearly states the action: 'Import footage into the After Effects project' with a specific verb and resource. It is unambiguous, though it does not explicitly differentiate from sibling tools like createComposition or run-script. Since the name itself is unique and the action is clear, it meets the 'clear but no sibling differentiation' level.

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?

No guidance is provided on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description simply states what it does, leaving the agent to infer usage from context and sibling tool names.

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

run-scriptB

Run a script command in After Effects. Use getHelp to see all available commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYesName of the script to run
parametersNoOptional parameters for the script

TDQS

B3.1/5.0
Behavior1/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 of behavioral disclosure. It only restates the action and points to getHelp, with no mention of side effects, project requirements, safety risks, or return value expectations.

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?

Two concise sentences, no fluff. The first sentence states the purpose, and the second gives a useful pointer to getHelp. Well-structured and front-loaded.

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?

For a generic and potentially powerful script execution tool, the description is minimal. It lacks behavioral caveats, error information, and context on what scripts can or cannot do, making it incomplete for safe and correct invocation.

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?

The input schema already documents both parameters with 100% coverage. The description adds no additional meaning beyond the schema, which is the baseline case.

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 clearly states the tool runs a script command in After Effects, using a specific verb and resource. It is somewhat generic but distinguishes itself from the more specific sibling tools by being the generic script execution entry point.

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

Usage Guidelines4/5

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

The description explicitly tells users to use getHelp to see available commands, providing useful prerequisite context. However, it does not explicitly contrast run-script with sibling tools or state when to use it over them.

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

setEffectKeyframesA

Set multiple keyframes on effect properties in a single call. More efficient for animating effects.

ParametersJSON Schema
NameRequiredDescriptionDefault
compNameNoComposition name
compIndexNoComposition index (1-based)
keyframesYesArray of keyframes
layerNameNoLayer name
effectNameNoEffect name
layerIndexNoLayer index (1-based)
effectIndexNoEffect index (1-based)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden. It mentions batching and efficiency but does not disclose behaviors like whether existing keyframes are overwritten, how targets are resolved, or error handling. This is insufficient for a mutation operation.

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?

Two sentences, front-loaded with the primary action. No redundant wording; every word earns its place.

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?

Given the complexity of 7 parameters including a nested keyframe structure, the description provides minimal high-level context. It does not explain the relationship between name/index selectors or the keyframe array structure, though the schema does. The lack of annotations and output schema leaves the description insufficient for a fully fluent agent.

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 descriptions cover all parameters (100%), so the baseline is 3. The description adds no additional parameter semantics beyond what is already in the schema, such as clarifications on property paths or selection by index vs name.

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 specifies the exact action (set multiple keyframes) and target (effect properties), using a clear verb and resource. It differentiates from siblings like setLayerKeyframes by explicitly mentioning effect properties.

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 'More efficient for animating effects' implies use for batch effect animation, but it does not explicitly discuss alternatives or when not to use it. No exclusion criteria are provided, so guidance is only implied.

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

setLayerExpressionB

Set an expression on a layer property

ParametersJSON Schema
NameRequiredDescriptionDefault
compIndexYesComposition index (1-based)
layerIndexYesLayer index (1-based)
propertyNameYesProperty name
expressionStringYesExpression code (empty string to remove)

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, the description carries full responsibility for behavioral disclosure. It does not mention whether the expression overwrites an existing one, what happens with invalid expressions, or whether properties must support expressions. This lack of context 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.

Conciseness4/5

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

The description is a single clear sentence with no redundancy. It gets directly to the point, though it could be enriched with more context. It earns its place but is minimal.

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?

The tool has four required parameters, no output schema, and no annotations. The description only states the core action, lacking details about return values, error conditions, prerequisites, or side effects. This is insufficient for a tool that modifies layer properties.

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?

The input schema provides descriptions for all four parameters, so the baseline is 3. The tool description adds no additional parameter semantics beyond the schema, but since coverage is 100%, the schema carries the burden.

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 uses a specific verb 'set' and identifies the resource 'expression on a layer property', which clearly differentiates it from sibling tools like setLayerKeyframe and setEffectKeyframes that deal with keyframes. This is a clear and distinct purpose.

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?

There is no guidance on when to use this tool versus alternatives like setLayerKeyframe or run-script. The description simply states the action without contextual usage scenarios or exclusions.

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. For multiple keyframes, use setLayerKeyframes instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoKeyframe value (number, array, etc.)
compIndexYesComposition index (1-based)
layerIndexYesLayer index (1-based)
propertyNameYesProperty name (e.g., 'Position', 'Opacity', 'Scale')
timeInSecondsYesTime in seconds

TDQS

A4/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 of behavioral disclosure. It only states the basic operation without mentioning side effects, such as whether it overwrites existing keyframes, requires permission, or mutates the composition. The description adds minimal context beyond the operation itself.

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 short sentences, front-loaded with the primary action, and every word earns its place. It is concise and well-structured without redundancy.

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?

The tool is relatively simple with no output schema and no annotations. The description covers the core purpose and the key alternative, but it doesn't elaborate on edge cases or return behavior. However, given the low complexity, it is sufficiently complete for most agent needs, meriting a 4.

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?

The schema provides 100% parameter coverage with descriptions for all five parameters, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already states, but that is acceptable given the high schema coverage.

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 the action ('Set a keyframe') and the target ('layer property'), and explicitly distinguishes from the sibling tool setLayerKeyframes by noting it's for a single keyframe. This makes 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.

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus the plural alternative: use this for a single keyframe, and setLayerKeyframes for multiple. This directly addresses the main alternative and gives clear usage direction.

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

setLayerKeyframesA

Set multiple keyframes in a single call. More efficient than repeated setLayerKeyframe calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
compNameNoComposition name
compIndexNoComposition index (1-based)
keyframesYesArray of keyframes
layerNameNoLayer name
layerIndexNoLayer index (1-based)

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 for behavioral disclosure. It states that the tool sets multiple keyframes but does not mention whether existing keyframes are overwritten, what the call returns, required permissions, or error behavior. For a mutation operation, 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.

Conciseness5/5

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

The description is two short sentences, front-loaded with the core purpose, and contains no redundant information. It is appropriately sized for the tool's simplicity.

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?

Despite having no output schema and no annotations, the description does not explain the effect of setting keyframes (e.g., replacement behavior), return values, or error cases. It also does not distinguish from setEffectKeyframes, which is a related sibling. The description is too thin for a tool that mutates layer state.

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% (all properties have descriptions), so the baseline is 3. The description adds no extra semantic context beyond what the schema already provides; it merely repeats that multiple keyframes are set.

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 the verb ('Set') and resource ('multiple keyframes') and explicitly differentiates from the singular sibling tool setLayerKeyframe by highlighting batch efficiency. This makes the purpose unambiguous and distinguishes it from the main alternative.

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

Usage Guidelines5/5

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

It explicitly says this is more efficient than repeated setLayerKeyframe calls, which tells the agent when to use this tool instead of the singular version. This is an explicit usage guideline with a named alternative.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a distinct purpose: keyframe tools are differentiated by single/multiple and layer/effect scope, and the rest target different operations (composition, import, render, export, help, script execution). No two tools are easily confused.

Naming Consistency4/5

Most tools follow a camelCase verbNoun pattern (createComposition, setLayerKeyframes, importFootage). The only exception is run-script, which uses lowercase with a hyphen, creating a minor inconsistency.

Tool Count5/5

With 10 tools, the set is well-scoped for After Effects automation—covering composition creation, footage import, animation, rendering, and frame export. Each tool earns its place without redundancy.

Completeness3/5

The toolset covers core workflows but misses common operations like adding layers, setting static layer properties, or managing project files. The run-script tool can mitigate these gaps, but it is a workaround rather than a dedicated interface.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brandkickagency/aftereffects-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server