Surehand MCP for Adobe After Effects
MCPB · SUREHAND-MCP.MCPB
Your AI works in Adobe After Effects and proves what it did: change reports, pixel proofs, QC.
Available components
Last scanned (22 hours ago)
Scores higher than 76% of MCPB servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 13 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 6103 tokens (~179/item across 34 items; 29 tools + 5 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
- Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 77% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 31 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Checks we ran (13)
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
- Capabilities
Checks we could not complete (4)
These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Malware scan in Supply Chain Security (scores 0 for this)No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
- Known CVEs in Supply Chain Security (scores 0 for this)Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
- Install scripts in Supply Chain Security (scores 0 for this)Install-script risk not yet assessed.
- Dependency health in Supply Chain Security (scores 0 for this)Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 40
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed mcpb/https://github.com/ConformLabs/surehand-mcp/releases/download/v1.4.1/Surehand-MCP.mcpb
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ae_add_layer Add layer ~424
Add a layer to a composition: solid, text, shape (empty, use ae_add_shape to draw), null, adjustment, camera, light, or an existing project item (footage/comp).
| Name | Type | Req | Description |
|---|---|---|---|
| allCaps | boolean | – | – |
| boxSize | array | – | Paragraph (box) text size [w,h]; omit for point text. |
| color | – | – | Solid/adjustment color, or light color. |
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| direction | string | – | Paragraph direction (AE 24+). Default: text without Hebrew/Arabic characters is set left to right whatever the user's AE type preference is. |
| duration | number | – | Layer duration in seconds (default comp duration). |
| fauxBold | boolean | – | – |
| fauxItalic | boolean | – | – |
| fillColor | – | – | Color as "#rrggbb" or [r,g,b] (0-1 or 0-255). |
| font | string | – | PostScript font name, e.g. "Arial-BoldMT", "Helvetica", "Montserrat-Bold". |
| fontSize | number | – | – |
| height | integer | – | – |
| item | – | – | For type 'item': project item to add. |
| justification | string | – | – |
| leading | number | – | – |
| lightType | string | – | – |
| moveToIndex | integer | – | Move the new layer to this 1-based index (new layers are added on top). |
| name | string | – | – |
| position | array | – | – |
| startTime | number | – | – |
| strokeColor | – | – | Color as "#rrggbb" or [r,g,b] (0-1 or 0-255). |
| strokeWidth | number | – | – |
| text | string | – | For text layers. |
| threeD | boolean | – | – |
| tracking | number | – | – |
| type | string | yes | – |
| width | integer | – | Solid size (default comp size). |
No output schema declared.
No examples provided.
ae_add_shape Add shape ~287
Draw a shape (rectangle, ellipse, polygon, star, or custom path) with fill and/or stroke, on a new shape layer or an existing one. Positions are relative to the layer (new layers are centered in the comp).
| Name | Type | Req | Description |
|---|---|---|---|
| closed | boolean | – | – |
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| fill | – | – | Fill color; omit for no fill (unless no stroke either: defaults to white). |
| inTangents | array | – | – |
| innerRadius | number | – | – |
| layer | – | – | Existing shape layer; omit to create a new one. |
| name | string | – | – |
| outTangents | array | – | – |
| outerRadius | number | – | – |
| points | number | – | Polygon/star points. |
| position | array | – | Shape position within the layer (default [0,0]). |
| roundness | number | – | Rectangle corner roundness. |
| shape | string | yes | – |
| size | array | – | [w,h] for rectangle/ellipse (default 400x400). |
| stroke | – | – | Color as "#rrggbb" or [r,g,b] (0-1 or 0-255). |
| strokeWidth | number | – | – |
| vertices | array | – | For 'path': [[x,y],...]. |
No output schema declared.
No examples provided.
ae_apply_effect Apply effect ~171
Apply an effect to a layer by match name (preferred, e.g. "ADBE Gaussian Blur 2", "ADBE Fill", "ADBE Glo2", "ADBE Drop Shadow") or display name, optionally setting parameters. Returns the effect's parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| effect | string | yes | – |
| layer | – | yes | Layer: 1-based index (number) or exact layer name. |
| name | string | – | Rename the effect instance. |
| params | object | – | Effect parameters by display name or match name, e.g. {"Blurriness": 20, "Repeat Edge Pixels": true} or {"Color": "#ff0000"}. |
No output schema declared.
No examples provided.
ae_batch Batch edits ~204
Run many steps in ONE call: each step is a tool with its arguments (any project/comp/layer/property/keyframe/effect/text/footage tool) or {tool: "ae_run_script", args: {code}}. All steps form a single undo step and return one change report. Atomic by default: if any step fails, everything is undone and you get the error of the failing step. Use it for repetitive or multi-part edits (e.g. style 30 layers, build a scene) to save round trips.
| Name | Type | Req | Description |
|---|---|---|---|
| atomic | boolean | – | Undo everything if a step fails (default true). false = keep successful steps and continue. |
| checkpoint | boolean | – | Save a project checkpoint before running (see ae_checkpoint). |
| name | string | – | Undo step name shown in After Effects (default "Surehand MCP Batch"). |
| steps | array | yes | – |
| verbose | boolean | – | Return each step's full result (default: short summaries). |
No output schema declared.
No examples provided.
ae_call Run any tool ~91
Run any After Effects tool by name with its arguments, e.g. tools listed by ae_tools that aren't loaded in this chat. Same validation, permissions, change report and activity log as calling the tool directly. Get the parameters with ae_tools {describe: [name]}.
| Name | Type | Req | Description |
|---|---|---|---|
| args | object | – | The tool's arguments. |
| tool | string | yes | Tool name, e.g. "ae_set_camera". |
No output schema declared.
No examples provided.
ae_checkpoint Project checkpoints ~126
Safety copies of the project: save (saves the open project, then keeps a timestamped copy), list the checkpoints of this project, or restore one (opens it as a NEW file next to the original; neither the original nor an earlier restore is ever overwritten). Use before large or risky changes.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| discardChanges | boolean | – | Restore even if the open project has unsaved changes (they are discarded). |
| id | string | – | Checkpoint id to restore (from list). |
| label | string | – | Short label for a new checkpoint. |
No output schema declared.
No examples provided.
ae_create_comp Create composition ~142
Create a new composition and (by default) open it in the viewer.
| Name | Type | Req | Description |
|---|---|---|---|
| bgColor | – | – | Color as "#rrggbb" or [r,g,b] (0-1 or 0-255). |
| duration | number | – | Seconds, default 10. |
| folder | – | – | Project item id (number) or exact name. |
| frameRate | number | – | Default 30. |
| height | integer | – | Default 1080. |
| name | string | yes | – |
| open | boolean | – | Open in viewer (default true). |
| pixelAspect | number | – | Default 1. |
| width | integer | – | Default 1920. |
No output schema declared.
No examples provided.
ae_find_properties Find properties ~175
Search every layer of a comp (or one layer) for properties whose name or match name contains the query, e.g. "opacity", "blur", "Source Text", "ADBE Fill Color". Returns ready-to-use paths. Filter to animated or expression properties.
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| layer | – | – | Layer: 1-based index (number) or exact layer name. |
| limit | integer | – | Default 100. |
| onlyAnimated | boolean | – | Only properties with keyframes. |
| onlyExpressions | boolean | – | Only properties with an expression. |
| query | string | – | Case-insensitive text to match in the property name or match name. Omit to list all matches of the filters. |
No output schema declared.
No examples provided.
ae_get_comp_info Get composition info ~127
Composition settings plus a summary of its layers (index, id, name, type, timing, parent, switches). Large comps are paged: use layerOffset/layerLimit (see totalLayers / nextLayerOffset in the result).
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| includeLayers | boolean | – | Default true. |
| layerLimit | integer | – | Max layers to return (default 150). |
| layerOffset | integer | – | Skip this many layers (default 0). |
No output schema declared.
No examples provided.
ae_get_comp_map Composition structure map ~107
Overview of how a composition is built: the tree of nested precomps (with how many times each is used), parenting chains, track mattes, and which layers/comps each expression references. Use it to understand an unfamiliar project before editing.
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| depth | integer | – | How deep to follow nested precomps (default 4). |
No output schema declared.
No examples provided.
ae_get_effect_params Inspect effect parameters ~145
List an effect's parameters (names, match names, value types, defaults, min/max) WITHOUT changing your layers, so you know the exact parameter names for ae_apply_effect / ae_set_effect_params. Pass comp+layer to inspect an effect already applied (current values).
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| effect | – | yes | Match name (e.g. "ADBE Glo2") or display name ("Glow"); with comp+layer, also an index in the stack. |
| layer | – | – | Inspect the effect on this layer instead of a fresh default instance. |
No output schema declared.
No examples provided.
ae_get_layer_bounds Layer bounds ~227
Exact on-screen bounding boxes of layers in composition pixels at a time, after all transforms, parenting, 3D and the active camera (via AE's own toComp()). Also reports whether each layer is visible at that time, fully/partly/not in frame, and inside action-safe (5% margin) and title-safe (10% margin). Use it to check alignment, spacing, overlaps and safe areas with numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| frame | integer | – | Whole frame number from the comp's start (frame 0 = time 0), instead of time. |
| includeExtents | boolean | – | Include stroke widths, effects and other extents (default false = content box). |
| layers | array | – | Layers to measure (default: all layers, up to 300). |
| selectedOnly | boolean | – | Measure only the layers selected in After Effects. |
| time | number | – | Seconds (default: the comp's current time). |
No output schema declared.
No examples provided.
ae_get_layer_info Get layer info ~89
Full info for one layer: switches, timing, parent, source, transform values, effects, masks count, markers, text, and every animated/expression property.
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| layer | – | yes | Layer: 1-based index (number) or exact layer name. |
No output schema declared.
No examples provided.
ae_get_project_info Get project info ~35
Summary of the open project: file path, dirty state, item counts, bit depth, render queue size, active item.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ae_get_properties Get properties ~148
Inspect the property tree of a layer (or a sub-group via path): names, match names, values, keyframe counts, expressions. Use this to discover property paths before setting values.
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| depth | integer | – | Group depth to expand (default 2). |
| includeHidden | boolean | – | Include NO_VALUE properties. |
| keyframes | boolean | – | Include keyframe details. |
| layer | – | yes | Layer: 1-based index (number) or exact layer name. |
| path | – | – | Start at this group/property (default: the whole layer). |
No output schema declared.
No examples provided.
ae_get_scripting_guide ExtendScript guide ~40
Returns the After Effects ExtendScript cheat sheet (ES3 rules, helpers, common match names). Read before writing complex ae_run_script code.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ae_get_selection Get selection ~33
What the user has selected: project items, and in the active comp the selected layers and selected properties (with paths).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ae_list_scripts List scripts ~70
List the user's own After Effects scripts: AE's Scripts folder (and ScriptUI Panels) plus folders configured as "scriptFolders" in ~/.surehand/ae/config.json, with each script's description from its header comment. Run one with ae_run_script_file.
| Name | Type | Req | Description |
|---|---|---|---|
| nameContains | string | – | – |
No output schema declared.
No examples provided.
ae_prove_identical Prove the render is unchanged ~422
Prove a structural change (un-precompose, bake expressions, reorder effects, simplify a rig) left the render unchanged, or show which frames and areas differ. capture: render reference frames (default: active comp, 5 frames over the work area), returns a proof id. compare: render them again and compare pixel by pixel (verdict, per-frame max difference, changed pixels, ΔE, area, difference image). run: capture, ae_batch steps, compare, in one call. For un-precompose, prove the parent comp. Only the sampled video frames are compared (alpha included; not audio, the comp background color or times between samples; 32 bpc values above 1.0 are clamped).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| atomic | boolean | – | run: as ae_batch (default true: a failed step undoes everything, and nothing is compared). |
| checkpoint | boolean | – | run: save a project checkpoint before the edits. |
| comps | array | – | capture/run: comps to prove (item id or exact name; default the active comp). |
| frames | integer | – | capture/run: number of frames spread over each comp's work area (default 5). |
| id | string | – | compare: the proof id from capture (default the latest proof). |
| maxSize | integer | – | capture/run: longest rendered side in pixels (default 1920; larger comps are scaled down). |
| name | string | – | run: undo step name. |
| steps | array | – | run: the edits, as ae_batch steps. |
| times | array | – | capture/run: exact times in seconds (snapped to frames) instead of evenly spaced frames. |
| tolerance | number | – | compare/run: allowed difference per channel, 0-255 (default 0.5: less than one 8-bit step, so only 16/32 bpc rounding is allowed; 0 = bit-identical). |
| verbose | boolean | – | run: full result of each step. |
No output schema declared.
No examples provided.
ae_render_contact_sheet Preview animation (contact sheet) ~224
Render several frames of a composition into ONE image (a grid, each cell labelled with its time and frame number), so you can judge motion, timing and easing, not just a single frame. Defaults to 9 frames spread over the work area.
| Name | Type | Req | Description |
|---|---|---|---|
| columns | integer | – | Grid columns (default: square-ish). |
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| end | number | – | End time in seconds (default: work area end). |
| frames | integer | – | Number of evenly spaced frames (default 9). |
| outputPath | string | – | Optional absolute path to also save the PNG to. |
| overwrite | boolean | – | Replace an existing file at outputPath (default false: refuse). |
| start | number | – | Start time in seconds (default: work area start). |
| times | array | – | Exact times (seconds) instead of evenly spaced frames. |
| width | integer | – | Width of the returned image in pixels (default 1600). |
No output schema declared.
No examples provided.
ae_render_frame Preview frame ~280
Render a frame of a composition and return it as an image, so you can SEE the result. Inspection options: zoom into a region, render only some layers, show transparency on a checkerboard or a color, and compare against another time or comp as a difference image (black = identical). Large frames are downscaled to maxSize.
| Name | Type | Req | Description |
|---|---|---|---|
| background | string | – | "checkerboard" to show transparency, or a color like "#808080" behind the comp. |
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| compareWith | object | – | Difference image against another time and/or comp (black where identical). |
| layers | array | – | Render only these layers (others are hidden for the render and restored). |
| maxSize | integer | – | Longest side in pixels of the returned image (default 1280). |
| outputPath | string | – | Optional absolute path to also save the PNG to. |
| overwrite | boolean | – | Replace an existing file at outputPath (default false: refuse). |
| region | array | – | Zoom into [x, y, width, height] in comp pixels (scaled up to maxSize, at most 8x). |
| time | number | – | Time in seconds (default: the comp's current time). |
No output schema declared.
No examples provided.
ae_run_script Run ExtendScript ~511
Execute JavaScript inside After Effects (its ExtendScript scripting API) and return the result. This is the most powerful tool: anything in the After Effects scripting API is available (app, app.project, CompItem, layers, properties, render queue, File/Folder, system.callSystem...). - The code runs as the body of a function: use `return value` to send data back. Returned AE objects (comps, layers, properties, items) are summarized to JSON automatically. - `args` (the JSON you pass in `args`) and `log(...)` are available; log output is returned too. - Modern JavaScript is fine: let/const, arrow functions, template strings, destructuring, spread, classes, ?. and ??, for...of, plus map/filter/forEach/find/includes, Object.keys/assign and JSON (converted for AE automatically). Not available: async/await, Promise, Map/Set, generators. - The `aemcp` helper library is available: aemcp.findComp(idOrName), aemcp.findLayer(comp, indexOrName), aemcp.findItem(ref), aemcp.resolveProp(layer, 'Transform/Position'), aemcp.color('#ff0000'), aemcp.compInfo(comp, true), aemcp.layerInfo(layer, true), aemcp.propInfo(prop, {depth:2}), aemcp.projectInfo(). - Collections are 1-based: app.project.item(1), comp.layer(1), prop.property(1). - The whole script is one undo step. Errors come back with the failing line and code around it. ae_get_scripting_guide has an API cheat sheet.
| Name | Type | Req | Description |
|---|---|---|---|
| args | object | – | JSON object exposed to the script as `args`. |
| code | string | yes | JavaScript source; a function body, use `return` to return data. |
| depth | integer | – | How deep to serialize the returned value (default 4). |
| report | boolean | – | List what the script changed in the project (default true). Set false for read-only queries on huge projects. |
| timeoutSeconds | number | – | Max seconds to wait for the result (default 120). |
| transpile | boolean | – | Convert modern JS for ExtendScript (default true). Set false to send the code exactly as written. |
| undoGroup | string | – | Undo step name (default "Surehand MCP Script"). Pass "" to skip the undo group. |
No output schema declared.
No examples provided.
ae_run_script_file Run JSX file ~94
Run an existing .jsx/.jsxbin script file from disk inside After Effects (like File > Scripts > Run Script File). `args` is exposed to the script as the global AEMCP_ARGS. Returns the value of the script's last expression.
| Name | Type | Req | Description |
|---|---|---|---|
| args | object | – | – |
| path | string | yes | Absolute path to the .jsx / .jsxbin file. |
| timeoutSeconds | number | – | – |
No output schema declared.
No examples provided.
ae_set_expression Set expression ~154
Set (or clear with an empty string) an expression on a property. Returns any expression error AE reports.
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| enabled | boolean | – | – |
| expression | string | yes | – |
| layer | – | yes | Layer: 1-based index (number) or exact layer name. |
| path | – | yes | Property path from the layer, "/"-separated display names or match names, e.g. "Transform/Position", "Effects/Gaussian Blur/Blurriness", "ADBE Transform Group/ADBE Opacity", "Contents/Rectangle 1/Fil… |
No output schema declared.
No examples provided.
ae_set_keyframes Set keyframes ~236
Create keyframes on a property in one call, with optional interpolation (linear/bezier/hold) and temporal easing. Place keys by time (seconds) or frame (whole frames). Example: path "Transform/Position", keyframes [{time:0,value:[0,540]},{frame:24,value:[960,540],easeIn:80}].
| Name | Type | Req | Description |
|---|---|---|---|
| clearExisting | boolean | – | Remove existing keyframes first. |
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| easyEase | boolean | – | Apply easy ease (33%) to all new keyframes that don't specify easing. |
| keyframes | array | yes | – |
| layer | – | yes | Layer: 1-based index (number) or exact layer name. |
| path | – | yes | Property path from the layer, "/"-separated display names or match names, e.g. "Transform/Position", "Effects/Gaussian Blur/Blurriness", "ADBE Transform Group/ADBE Opacity", "Contents/Rectangle 1/Fil… |
No output schema declared.
No examples provided.
ae_set_property Set property value ~245
Set the value of any property (transform, effect parameter, shape attribute, text...). If `time` is given (or the property already has keyframes) a keyframe is set at that time. Examples: path "Transform/Opacity" value 50; "Transform/Position" [960,540]; "Transform/Scale" [50,50]; "Effects/Fill/Color" "#ff0000".
| Name | Type | Req | Description |
|---|---|---|---|
| comp | – | – | Composition: item id (number) or exact name. Omit (or "active") for the active/open composition. |
| layer | – | yes | Layer: 1-based index (number) or exact layer name. |
| path | – | yes | Property path from the layer, "/"-separated display names or match names, e.g. "Transform/Position", "Effects/Gaussian Blur/Blurriness", "ADBE Transform Group/ADBE Opacity", "Contents/Rectangle 1/Fil… |
| time | number | – | – |
| value | – | yes | Value: number, array ([x,y] / [x,y,z] / color), string for text, or object for text style / shape path. |
No output schema declared.
No examples provided.
ae_status After Effects status ~118
Check the connection to After Effects: app version, OS, open project, active item, permission mode, and whether AE is busy. Lists every running After Effects instance when several are open; pass `instance` (e.g. "2025", "2026" or a port) to choose which one this session controls. Call this first if unsure AE is reachable.
| Name | Type | Req | Description |
|---|---|---|---|
| instance | string | – | Switch to another running After Effects: "2026", "26.5", or a bridge port. Omit to keep the current one. |
No output schema declared.
No examples provided.
ae_tools More tools ~124
Discover every After Effects tool, including ones not loaded in this chat: list them by category (one line each), or describe chosen tools (full parameters). Then run any of them with ae_call. Categories: status & app, scripts, project, comps, layers, properties & keyframes, effects, shapes & masks, text, 3D, audio, footage, files & export, checks, see & measure, essential graphics, render.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Only list this category. |
| describe | array | – | Tool names to get full parameter details for. |
No output schema declared.
No examples provided.
ae_undo Undo ~30
Undo the last action(s) in After Effects (Edit > Undo).
| Name | Type | Req | Description |
|---|---|---|---|
| steps | integer | – | – |
No output schema declared.
No examples provided.
How do I install the Surehand MCP for Adobe After Effects server?
Surehand MCP for Adobe After Effects ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, ee7482e810f3c8dcda25a1862315f1575d652842c9ce999618cb7bfc6153bd71; the commands to do that are on this page. If it does not match, do not open it.
mcpb · Surehand-MCP.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
ee7482e810f3c8dcda25a1862315f1575d652842c9ce999618cb7bfc6153bd71
macOS / Linux
echo "ee7482e810f3c8dcda25a1862315f1575d652842c9ce999618cb7bfc6153bd71 Surehand-MCP.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\Surehand-MCP.mcpb).Hash -eq "ee7482e810f3c8dcda25a1862315f1575d652842c9ce999618cb7bfc6153bd71"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the Surehand MCP for Adobe After Effects server?
Surehand MCP for Adobe After Effects is listed in the public MCP registry as io.github.ConformLabs/surehand-mcp. Your AI works in Adobe After Effects and proves what it did: change reports, pixel proofs, QC. This page covers its MCPB bundle (https://github.com/ConformLabs/surehand-mcp/releases/download/v1.4.1/Surehand-MCP.mcpb).
Is the Surehand MCP for Adobe After Effects server safe to use?
Surehand MCP for Adobe After Effects scores 45 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Surehand MCP for Adobe After Effects server expose?
Surehand MCP for Adobe After Effects exposes 29 tools: ae_run_script, ae_run_script_file, ae_status, ae_render_frame, ae_render_contact_sheet, and 24 more. Their descriptions and schemas cost roughly 5,079 tokens of context every time the server is loaded.
What licence is the Surehand MCP for Adobe After Effects server under?
Surehand MCP for Adobe After Effects declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the Surehand MCP for Adobe After Effects server?
VerifyMCP ran 13 checks on Surehand MCP for Adobe After Effects, covering Source repository, Provenance, License, Maintenance and 9 more. 4 items could not be completed, a gap on our side rather than a finding about Surehand MCP for Adobe After Effects: Malware scan, Known CVEs, Install scripts and Dependency health. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to an MCPB bundle, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.