Skip to main content
Glama

animateSpriteKeyframes

Animate a sprite through up to three fixed keyframes - initial_image, middle_image and final_image (each a URL or base64) - producing a spritesheet that interpolates through the provided frames in order. At least one of initial_image or middle_image is required (a final_image alone has nothing to anchor the animation); any keyframe may be omitted. The motion_prompt is optional here - when omitted, the motion is derived purely from the keyframes. Runs on hydra (default; also returns audio_url), forge, or forge-pixel for pixel-art sprites - the models that support a middle keyframe; any other model returns HTTP 400. For just a start and end frame, animateSprite with final_image does the same job. The job result is the same sprite result as animateSprite (spritesheet_url, video_url, grid fields, optional GIF and frame URLs, audio_url on hydra). Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. Use animateSprite instead for the classic single-image + text-prompt animation. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type spritesheet). Async generation job: returns {id, status} - poll getApiJob (job and credit contract: see the server instructions).

Credits: credits/s × seconds, per model: Hydra 3/s (shortest duration 3s, so 9 credits minimum), Forge 1.5/s (min charge 4 credits), Forge Pixel 1.5/s (min charge 4 credits); see this endpoint's full pricing table in the API docs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestBodyYesPayload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on hydra (default), forge or forge-pixel - the models supporting a middle keyframe. Input images can be provided in base64 or URL. At least one of initial_image or middle_image must be provided.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / motion_prompt / description
      Previous value: -"Optional text description of the desired animation (e.g., \"walking\", \"attack slash\"). When omitted, the motion is derived purely from the keyframes."New value: +"Optional text description of the desired animation, e.g. \"walking\", \"attack slash\". When omitted, the motion is derived purely from the keyframes. When provided, describe exactly and unambiguously what the character should do. Specific or complex actions are fine; there is no need to simplify them. Do not over-describe, though: too much detail can harm the animation, and an action the model already knows should be named, not decomposed into its steps (\"walking\", never \"move the left foot forward, then the right foot\"). Do not restate what the keyframes already show (the character, its appearance and equipment, the art style, the background, the lighting, the camera), and leave frame count and timing to the frames and duration fields. Negative phrasing (\"no background\", \"do not move the camera\", \"without a weapon\") works only on hydra. On forge and forge-pixel it backfires: naming something you do not want makes it more likely to appear, so \"without a weapon\" tends to produce a weapon. On those models never phrase anything negatively; state only what should happen, and control everything else through the keyframes and the other fields."
  2. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable model, generates audio\n- \"forge\" (Forge): 1.5 credits/s, min charge 4 credits · Best for basic animations and relatively simple sprites\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min charge 4 credits · Best for low-res pixel art animations Default: \"hydra\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable all-around model, generates audio\n- \"forge\" (Forge): 1.5 credits/s, min charge 4 credits · Use only for basic animations and simple sprites. Multiple tries might be needed\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min charge 4 credits · Best for low-res pixel art animations Default: \"hydra\"."
  3. Changed8 schema fields changed
    • changedInput schema / properties / requestBody / description
      Previous value: -"Payload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on the Forge family - the only models supporting a middle keyframe. Input images can be provided in base64 or URL. At least one of initial_image or middle_image must be provided."New value: +"Payload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on hydra (default), forge or forge-pixel - the models supporting a middle keyframe. Input images can be provided in base64 or URL. At least one of initial_image or middle_image must be provided."
    • changedInput schema / properties / requestBody / properties / crop / description
      Previous value: -"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations. Default: false."New value: +"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations. Default: true."
    • changedInput schema / properties / requestBody / properties / crop / example
      Previous value: -falseNew value: +true
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. Available values depend on the model:\n- hydra: 3, 3.5, 4, 4.5, 5\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4 Default: 3."New value: +"Duration in seconds. Available values depend on the model:\n- hydra: 3, 3.5, 4, 4.5, 5\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5 Default: 3."
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\n- \"blitz\" (Blitz): 1.9 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\n- \"eagle\" (Eagle): 2.6 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\n- \"eagle-audio\" (Eagle with Audio): 3.1 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\nLegacy aliases: \"standard\" → blitz.\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, shortest duration 3s, so 9 credits minimum · Most capable model, generates audio\n- \"forge\" (Forge): 1.5 credits/s, min charge 4 credits · Best for basic animations and relatively simple sprites\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min charge 4 credits · Best for low-res pixel art animations Default: \"hydra\"."
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "hydra",
      -  "forge",
      -  "forge-pixel",
      -  "blitz",
      -  "standard",
      -  "eagle",
      -  "eagle-audio"
      -]New value: +[
      +  "hydra",
      +  "forge",
      +  "forge-pixel"
      +]
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"forge"New value: +"hydra"
    • changedInput schema / properties / requestBody / properties / request_id / description
      Previous value: -"Optional client-provided identifier, unique per request. Re-sending the same request_id returns the existing job instead of generating again. Also usable with the results endpoint."New value: +"Optional client-provided identifier, unique per request. Re-sending the same request_id returns the existing job instead of generating again. Also usable as the request_id filter of listGenerations."
  4. Changed3 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. Available values depend on the model:\n- hydra: 3, 3.5, 4, 4.5, 5\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5 Default: 3."New value: +"Duration in seconds. Available values depend on the model:\n- hydra: 3, 3.5, 4, 4.5, 5\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4 Default: 3."
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min 4\n- \"blitz\" (Blitz): 1.9 credits/s, min 4\n- \"eagle\" (Eagle): 2.6 credits/s, min 4\n- \"eagle-audio\" (Eagle with Audio): 3.1 credits/s, min 4\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\nLegacy aliases: \"standard\" → blitz. Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\n- \"blitz\" (Blitz): 1.9 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\n- \"eagle\" (Eagle): 2.6 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\n- \"eagle-audio\" (Eagle with Audio): 3.1 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\nLegacy aliases: \"standard\" → blitz.\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "hydra",
      -  "blitz",
      -  "standard",
      -  "eagle",
      -  "eagle-audio",
      -  "forge",
      -  "forge-pixel"
      -]New value: +[
      +  "hydra",
      +  "forge",
      +  "forge-pixel",
      +  "blitz",
      +  "standard",
      +  "eagle",
      +  "eagle-audio"
      +]
  5. Changed5 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. Available values depend on the model:\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 3."New value: +"Duration in seconds. Available values depend on the model:\n- hydra: 3, 3.5, 4, 4.5, 5\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5 Default: 3."
    • changedInput schema / properties / requestBody / properties / frame_size / example
      Previous value: -32New value: +0
    • changedInput schema / properties / requestBody / properties / frames / example
      Previous value: -4New value: +36
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"blitz\" (Blitz): Visual Quality: 4/10 · Motion Stability: 8/10 · 1.9 credits/s, min 4\n- \"eagle\" (Eagle): Visual Quality: 8/10 · Motion Stability: 5/10 · 2.6 credits/s, min 4\n- \"eagle-audio\" (Eagle with Audio): Visual Quality: 8/10 · Motion Stability: 5/10 · 3.1 credits/s, min 4\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\nLegacy aliases: \"standard\" → blitz. Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min 4\n- \"blitz\" (Blitz): 1.9 credits/s, min 4\n- \"eagle\" (Eagle): 2.6 credits/s, min 4\n- \"eagle-audio\" (Eagle with Audio): 3.1 credits/s, min 4\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\nLegacy aliases: \"standard\" → blitz. Default: \"forge\"."
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "blitz",
      -  "standard",
      -  "eagle",
      -  "eagle-audio",
      -  "forge",
      -  "forge-pixel"
      -]New value: +[
      +  "hydra",
      +  "blitz",
      +  "standard",
      +  "eagle",
      +  "eagle-audio",
      +  "forge",
      +  "forge-pixel"
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / augment_prompt / description
      Previous value: -"Augment the prompt behind the scenes. Disable to have more control. Default: true."New value: +"Augment the prompt behind the scenes. Disable to have more control. Incompatible with automatic framing: false requires margin_ratio_mode \"manual\" (with margin_ratio_horizontal and/or margin_ratio_vertical) or \"none\". Because margin_ratio_mode defaults to \"auto\", sending augment_prompt false on its own fails with HTTP 400. Default: true."
  7. Changed28 schema fields changed
    • removedInput schema / properties / requestBody / properties / augment_prompt / default
      Removed value: -true
    • changedInput schema / properties / requestBody / properties / augment_prompt / description
      Previous value: -"Augment the prompt behind the scenes. Disable to have more control."New value: +"Augment the prompt behind the scenes. Disable to have more control. Default: true."
    • removedInput schema / properties / requestBody / properties / crop / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / crop / description
      Previous value: -"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations."New value: +"Crop sprite frames to fit content. Results in smaller spritesheets but inconsistent frame sizes across different animations. Default: false."
    • removedInput schema / properties / requestBody / properties / duration / default
      Removed value: -3
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. Available values depend on the model:\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4"New value: +"Duration in seconds. Available values depend on the model:\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 3."
    • removedInput schema / properties / requestBody / properties / frame_size / default
      Removed value: -0
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. -1 is for AI 1.5x upscaling. -9 is for matching the size and position of the input frame. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0, -1, -9."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. -1 is for AI 1.5x upscaling. -9 is for matching the size and position of the input frame. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0, -1, -9. Default: 0."
    • removedInput schema / properties / requestBody / properties / frames / default
      Removed value: -36
    • changedInput schema / properties / requestBody / properties / frames / description
      Previous value: -"Number of frames in the output spritesheet. Accepted values: 4, 9, 16, 25, 36, 49, 64."New value: +"Number of frames in the output spritesheet. Accepted values: 4, 9, 16, 25, 36, 49, 64. Default: 36."
    • removedInput schema / properties / requestBody / properties / gif / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / gif / description
      Previous value: -"When true, generates an animated GIF from the spritesheet and returns it in gif_url. Disabled by default to reduce response time."New value: +"When true, generates an animated GIF from the spritesheet and returns it in gif_url. Disabled by default to reduce response time. Default: false."
    • removedInput schema / properties / requestBody / properties / image_type / default
      Removed value: -"sprite"
    • changedInput schema / properties / requestBody / properties / image_type / description
      Previous value: -"Type of sprite being animated. Affects generation parameters and styling."New value: +"Type of sprite being animated. Affects generation parameters and styling. Default: \"sprite\"."
    • removedInput schema / properties / requestBody / properties / individual_frames / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / individual_frames / description
      Previous value: -"When true, extracts each frame from the spritesheet as an individual image and returns the URLs in individual_frame_urls."New value: +"When true, extracts each frame from the spritesheet as an individual image and returns the URLs in individual_frame_urls. Default: false."
    • removedInput schema / properties / requestBody / properties / loop / default
      Removed value: -true
    • changedInput schema / properties / requestBody / properties / loop / description
      Previous value: -"Trim the animation at the beginning or end to create a seamless loop. Not guaranteed to produce a perfect loop."New value: +"Trim the animation at the beginning or end to create a seamless loop. Not guaranteed to produce a perfect loop. Default: true."
    • addedInput schema / properties / requestBody / properties / margin_ratio / deprecated
      Added value: +true
    • changedInput schema / properties / requestBody / properties / margin_ratio / description
      Previous value: -"Deprecated - prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0), applied to both axes (equivalent to setting both per-axis params to this value). Only used when margin_ratio_mode is \"manual\". Cannot be combined with the per-axis params: providing both fails with HTTP 400."New value: +"Deprecated: prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0). Sets both axes to this value. A per-axis value, when also given, overrides this for that axis. Supplying any margin value selects margin_ratio_mode \"manual\" unless margin_ratio_mode is set explicitly."
    • changedInput schema / properties / requestBody / properties / margin_ratio_horizontal / description
      Previous value: -"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\". Useful for animations that extend sideways (e.g., sword slashes, punches). Cannot be combined with the legacy margin_ratio param."New value: +"Horizontal padding around the sprite as a ratio (0.0 to 1.0). Useful for animations that extend sideways (e.g., sword slashes, punches). Supplying a value selects margin_ratio_mode \"manual\" unless margin_ratio_mode is set explicitly; overrides the legacy margin_ratio on this axis."
    • removedInput schema / properties / requestBody / properties / margin_ratio_mode / default
      Removed value: -"auto"
    • changedInput schema / properties / requestBody / properties / margin_ratio_mode / description
      Previous value: -"Controls how margins are applied around the sprite. \"manual\" requires margin_ratio_horizontal and/or margin_ratio_vertical (or the legacy margin_ratio); sending \"manual\" with no margin value fails with HTTP 400."New value: +"Controls how margins are applied around the sprite. Omit it and send margin_ratio_horizontal / margin_ratio_vertical to get \"manual\" automatically. \"manual\" requires margin_ratio_horizontal and/or margin_ratio_vertical (or the legacy margin_ratio); sending \"manual\" with no margin value fails with HTTP 400. Sending \"auto\" or \"none\" explicitly together with a margin value fails with HTTP 400 (the value would be ignored). Default: \"auto\"."
    • changedInput schema / properties / requestBody / properties / margin_ratio_vertical / description
      Previous value: -"Vertical padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\". Useful for animations that extend up or down (e.g., jumps). Cannot be combined with the legacy margin_ratio param."New value: +"Vertical padding around the sprite as a ratio (0.0 to 1.0). Useful for animations that extend up or down (e.g., jumps). Supplying a value selects margin_ratio_mode \"manual\" unless margin_ratio_mode is set explicitly; overrides the legacy margin_ratio on this axis."
    • removedInput schema / properties / requestBody / properties / model / default
      Removed value: -"forge"
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"blitz\" (Blitz): Visual Quality: 4/10 · Motion Stability: 8/10 · 1.9 credits/s, min 4\n- \"eagle\" (Eagle): Visual Quality: 8/10 · Motion Stability: 5/10 · 2.6 credits/s, min 4\n- \"eagle-audio\" (Eagle with Audio): Visual Quality: 8/10 · Motion Stability: 5/10 · 3.1 credits/s, min 4\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\nLegacy aliases: \"standard\" → blitz."New value: +"Model to use. Available models:\n- \"blitz\" (Blitz): Visual Quality: 4/10 · Motion Stability: 8/10 · 1.9 credits/s, min 4\n- \"eagle\" (Eagle): Visual Quality: 8/10 · Motion Stability: 5/10 · 2.6 credits/s, min 4\n- \"eagle-audio\" (Eagle with Audio): Visual Quality: 8/10 · Motion Stability: 5/10 · 3.1 credits/s, min 4\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\nLegacy aliases: \"standard\" → blitz. Default: \"forge\"."
    • removedInput schema / properties / requestBody / properties / spritesheet_with_background / default
      Removed value: -false
    • changedInput schema / properties / requestBody / properties / spritesheet_with_background / description
      Previous value: -"When true, also returns the spritesheet with background intact (before background removal). Useful for manually fixing background removal issues. The with-background spritesheet URL will be in spritesheet_with_background_url."New value: +"When true, also returns the spritesheet with background intact (before background removal). Useful for manually fixing background removal issues. The with-background spritesheet URL will be in spritesheet_with_background_url. Default: false."
  8. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / margin_ratio_mode / description
      Previous value: -"Controls how margins are applied around the sprite."New value: +"Controls how margins are applied around the sprite. \"manual\" requires margin_ratio_horizontal and/or margin_ratio_vertical (or the legacy margin_ratio); sending \"manual\" with no margin value fails with HTTP 400."
  9. Changed5 schema fields changed
    • addedInput schema / properties / requestBody / properties / crop / default
      Added value: +false
    • addedInput schema / properties / requestBody / properties / crop / example
      Added value: +false
    • addedInput schema / properties / requestBody / properties / duration / default
      Added value: +3
    • addedInput schema / properties / requestBody / properties / duration / example
      Added value: +3
    • addedInput schema / properties / requestBody / properties / image_type / default
      Added value: +"sprite"
  10. Changed2 schema fields changed
    • changedInput schema / properties / requestBody / description
      Previous value: -"Payload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on the Forge family — the only models supporting a middle keyframe. Input images can be provided in base64 or URL. At least one of initial_image or middle_image must be provided."New value: +"Payload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on the Forge family - the only models supporting a middle keyframe. Input images can be provided in base64 or URL. At least one of initial_image or middle_image must be provided."
    • changedInput schema / properties / requestBody / properties / margin_ratio / description
      Previous value: -"Deprecated — prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0), applied to both axes (equivalent to setting both per-axis params to this value). Only used when margin_ratio_mode is \"manual\". Cannot be combined with the per-axis params: providing both fails with HTTP 400."New value: +"Deprecated - prefer margin_ratio_horizontal / margin_ratio_vertical. Amount of padding around the sprite as a ratio (0.0 to 1.0), applied to both axes (equivalent to setting both per-axis params to this value). Only used when margin_ratio_mode is \"manual\". Cannot be combined with the per-axis params: providing both fails with HTTP 400."
  11. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / request_id / description
      Previous value: -"Optional client-provided identifier for this request. Use this to retrieve results later via the results endpoint."New value: +"Optional client-provided identifier, unique per request. Re-sending the same request_id returns the existing job instead of generating again. Also usable with the results endpoint."
  12. Changed4 schema fields changed
    • changedInput schema / properties / requestBody / description
      Previous value: -"Payload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs exclusively on the Forge model. Input images can be provided in base64 or URL. At least one of initial_image or middle_image must be provided."New value: +"Payload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on the Forge family — the only models supporting a middle keyframe. Input images can be provided in base64 or URL. At least one of initial_image or middle_image must be provided."
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Animation length in seconds. This endpoint always runs on the Forge model, so only Forge's durations apply — the source of truth is MODEL_PRICING (credits.js), surfaced via /credits/costs."New value: +"Duration in seconds. Available values depend on the model:\n- blitz: 1.2, 1.5, 2, 2.5, 3, 3.5, 4\n- eagle: 1, 2, 3, 4\n- eagle-audio: 1, 2, 3, 4\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- forge-pixel: 1, 1.5, 2, 2.5, 3, 3.5, 4"
    • changedInput schema / properties / requestBody / properties / image_type / enum
      Previous value: -[
      -  "sprite",
      -  "sprite-vfx",
      -  "ui_asset"
      -]New value: +[
      +  "sprite",
      +  "sprite-vfx",
      +  "item-icon",
      +  "ui_asset",
      +  "logo",
      +  "sprite-tiling-horizontal",
      +  "sprite-tiling-vertical",
      +  "parallax_layer",
      +  "tile",
      +  "texture",
      +  "portrait",
      +  "card-art"
      +]
    • addedInput schema / properties / requestBody / properties / model
      Added value: +{
      +  "default": "forge",
      +  "description": "Model to use. Available models:\n- \"blitz\" (Blitz): Visual Quality: 4/10 · Motion Stability: 8/10 · 1.9 credits/s, min 4\n- \"eagle\" (Eagle): Visual Quality: 8/10 · Motion Stability: 5/10 · 2.6 credits/s, min 4\n- \"eagle-audio\" (Eagle with Audio): Visual Quality: 8/10 · Motion Stability: 5/10 · 3.1 credits/s, min 4\n- \"forge\" (Forge): 1.5 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 1.5 credits/s, min 4\nLegacy aliases: \"standard\" → blitz.",
      +  "enum": [
      +    "blitz",
      +    "standard",
      +    "eagle",
      +    "eagle-audio",
      +    "forge",
      +    "forge-pixel"
      +  ],
      +  "example": "forge",
      +  "type": "string"
      +}
  13. Added

TDQS

A4.8/5.0
Behavior5/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 thoroughly covers async behavior ('returns {id, status} - poll getApiJob'), credit hold/refund mechanics, per-model pricing and minimum charges, model-specific limitations (negative phrasing only on hydra, audio_url on hydra), and the result structure. It even documents failure modes like HTTP 400 for unsupported models and augment_prompt/margin_ratio_mode conflicts.

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 long but well-structured, front-loading the core purpose and keyframe requirement before covering models, alternatives, results, and pricing. Each section adds distinct value, though some redundancy exists (e.g., mentioning animateSprite twice and repeating pricing). It is appropriately sized for the tool's complexity and avoids tangential information.

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

Completeness5/5

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

Given the tool's complexity (nested requestBody, many parameters, async job, credit system, model variations) and the absence of an output schema, the description is remarkably complete. It covers the return fields ('spritesheet_url, video_url, grid fields, optional GIF and frame URLs, audio_url on hydra'), prerequisite conditions, model-specific behavior, and pricing details. Nothing essential for correct invocation is missing.

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?

Schema description coverage is 100%, so baseline is 3. The description adds meaningful guidance beyond the schema by explaining the keyframe anchoring requirement, providing detailed motion_prompt phrasing advice (e.g., 'Do not over-describe', negative phrasing warnings on forge/forge-pixel), and clarifying the interplay between augment_prompt and margin_ratio_mode. This is more than repetition of schema descriptions, though some redundant details exist.

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 purpose: 'Animate a sprite through up to three fixed keyframes... producing a spritesheet that interpolates through the provided frames in order.' It uses specific verbs and resources and explicitly differentiates from the sibling animateSprite tool, mentioning 'For just a start and end frame, animateSprite with final_image does the same job' and 'Use animateSprite instead for the classic single-image + text-prompt animation.'

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 gives explicit when-to-use and when-not-to-use guidance. It states the prerequisite ('At least one of initial_image or middle_image is required'), model constraints ('any other model returns HTTP 400'), and directly points to the alternative tool for simpler animations. It also clarifies the optional motion_prompt behavior and when to omit it. All usage conditions are clearly spelled out.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.