Skip to main content
Glama

Set keyframes

ae_set_keyframes
DestructiveIdempotent

Creates keyframes on an After Effects property in one call, letting you set values by time or frame with interpolation and easing.

Instructions

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}]. A key at a time that already has one replaces it; other existing keys stay unless clearExisting. Returns the property's keyframes. For one static value use ae_set_property; to edit existing keys ae_edit_keyframes, for exact tables across many properties ae_set_keyframe_table (both via ae_call).

Input Schema

NameRequiredDescriptionDefault
compNoComposition: item id (number) or exact name. Omit (or "active") for the active/open composition.
pathYesProperty 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/Fill 1/Color".
layerYesLayer: 1-based index (number) or exact layer name.
easyEaseNoApply easy ease (33%) to all new keyframes that don't specify easing.
keyframesYesKeyframes to set, each with time or frame and a value.
clearExistingNoRemove existing keyframes first.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.1.3
    • addedInput schema / properties / keyframes / description
      Added value: +"Keyframes to set, each with time or frame and a value."
    • addedInput schema / properties / keyframes / items / properties / inInterpolation / description
      Added value: +"Incoming side only (overrides interpolation)."
    • addedInput schema / properties / keyframes / items / properties / outInterpolation / description
      Added value: +"Outgoing side only (overrides interpolation)."
  2. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true; the description adds valuable semantics beyond them: an existing key at the same time is replaced while other keys survive unless clearExisting, and the tool returns the property's keyframes. It never addresses failure modes (invalid path, locked property) or undo, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded with purpose, then behavior, then a compact concrete example, then sibling routing — no filler sentences. It is a dense single block of prose, but each clause (replacement semantics, return value, alternatives) 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 6-parameter destructive mutation with no output schema, the description covers selection of time vs frame, replacement/retention semantics, the return value, and routing. The main gap is no guidance on failure conditions or the need for ae_undo after destructive clears, but the core call is fully specified.

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 documents comp, path, layer, keyframes, ease, interpolation, and clearExisting in detail. The description's example illustrates the keyframe object shape (time/frame, value, easeIn) but adds no syntax or constraints the schema lacks, so baseline 3 applies.

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 opens with a specific verb+resource: 'Create keyframes on a property in one call'. It then distinguishes itself from ae_set_property, ae_edit_keyframes, and ae_set_keyframe_table by naming each and what they do differently, so an agent can route correctly without opening schemas.

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?

Explicit alternatives with conditions: static value → ae_set_property, editing existing keys → ae_edit_keyframes, exact tables across many properties → ae_set_keyframe_table. It also states the time vs frame placement choice and clearExisting behavior, leaving little to inference.

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