Skip to main content
Glama

clear_keyframes

Destructive

Remove keyframes from an animated parameter and restore it to a single static value, optionally using a specified value or the first keyframe's value. No-op if already static.

Instructions

Collapse a param's animation back to a single Static value. value (optional) is the value to hold, typed by param_key — a number, or {r,g,b,a} (integers 0..255) for "color"; when omitted, defaults to the first keyframe's value. No-op on an already-Static track.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
valueNoThe value to hold, typed by `param_key`; omit for the first keyframe's value.
layer_idYesLayer id.
param_keyYesAnimatable param: visual kinds x, y (path_progress in Path mode), scale_x, scale_y, rotation_deg, anchor_x, anchor_y, opacity; Text and Color color; Audio gain_db, pan; or an effect param as effects[<effect_id>].params[<key>].

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.1.9
    • addedInput schema / properties / layer_id / description
      Added value: +"Layer id."
    • addedInput schema / properties / param_key / anyOf
      Added value: +[
      +  {
      +    "enum": [
      +      "x",
      +      "y",
      +      "path_progress",
      +      "scale_x",
      +      "scale_y",
      +      "rotation_deg",
      +      "anchor_x",
      +      "anchor_y",
      +      "opacity",
      +      "color",
      +      "gain_db",
      +      "pan"
      +    ]
      +  },
      +  {
      +    "pattern": "^effects\\[[0-9a-fA-F-]{36}\\]\\.params\\[[A-Za-z0-9_]+\\]$"
      +  }
      +]
    • addedInput schema / properties / param_key / description
      Added value: +"Animatable param: visual kinds x, y (path_progress in Path mode), scale_x, scale_y, rotation_deg, anchor_x, anchor_y, opacity; Text and Color color; Audio gain_db, pan; or an effect param as effects[<effect_id>].params[<key>]."
    • changedInput schema / properties / value / description
      Previous value: -"Typed by `param_key`: a number for every scalar param (x, y, path_progress, scale_x, scale_y, rotation_deg, anchor_x, anchor_y, opacity, gain_db, pan, effect params); an {r,g,b,a} colour (integers 0..255) for \"color\" — the Text and Color layers' colour. Path mode rejects independent x/y writes; use path_progress (a fraction, not a percentage); XY mode has no path_progress. A mismatch is refused naming the type the param takes."New value: +"The value to hold, typed by `param_key`; omit for the first keyframe's value."
    • removedInput schema / properties / value / oneOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "properties": {
      -      "a": {
      -        "type": "integer"
      -      },
      -      "b": {
      -        "type": "integer"
      -      },
      -      "g": {
      -        "type": "integer"
      -      },
      -      "r": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "r",
      -      "g",
      -      "b",
      -      "a"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedInput schema / properties / value / type
      Previous value: -[
      -  "number",
      -  "object",
      -  "null"
      -]New value: +[
      +  "number",
      +  "object"
      +]
  2. First observedv0.1.8

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already include destructiveHint=true, and the description does not contradict this. It adds useful behavioral detail beyond the annotation: it collapses animation, defaults to the first keyframe's value when `value` is omitted, and no-ops on Static tracks. It does not elaborate on reversibility, but the destructive hint covers that concern.

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 sentences with the core operation first and supporting details after. There is no filler; each sentence contributes either the action, parameter semantics, or a relevant edge case.

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 destructive tool with no output schema, the description covers purpose, value typing, defaults, and the already-Static case. Required parameters are documented in the schema, so an agent has what it needs to call the tool correctly. Return-value behavior is not described, which is a minor gap in the absence of an output schema.

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 schema already documents all parameters with 100% coverage. The description adds cross-parameter semantics that the schema alone does not fully express: `value` is typed by `param_key`, color uses {r,g,b,a} with integers 0..255, and omission means using the first keyframe's value. This helps an agent construct a correct call.

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 states a specific action on a clear resource: 'Collapse a param's animation back to a single Static value.' It clearly signals that this is about removing animation rather than setting or editing keyframes, which distinguishes it from sibling tools like set_keyframe, delete_keyframe, and smooth_keyframes.

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 conveys when this tool is appropriate: when an animated param should become a single Static value. It also gives an explicit edge case, noting it is a no-op on already-Static tracks. It does not name alternative tools, but the usage context is clear enough.

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

Deploy Server

Other Tools