Skip to main content
Glama

transferMotion

Transfer motion from a reference video or a named animation preset onto a static sprite image, producing an animated spritesheet that mimics the reference movement. Provide the sprite as image (URL or base64) plus either a video URL or a preset_id together with perspective and direction (all three from listAnimationPresets; if both video and preset_id are sent the video wins). The job result is the same sprite result as animateSprite: spritesheet_url, video_url, grid fields, optional GIF / frame / with-background URLs, and audio_url when the model is hydra. duration defaults to 1.5s where the chosen model offers it, otherwise to that model's shortest (hydra, the default, starts at 3s) - and a longer reference clip or preset is compressed to fit, so pass the preset's own duration (returned by listAnimationPresets) to keep its timing. It returns HTTP 400 if neither a video nor a complete preset_id/perspective/direction triple is supplied, if the named preset, perspective, or direction cannot be resolved, or if the model/duration combination is invalid. Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge) - the produced length follows the reference clip - and the difference (or everything, if the job fails or is cancelled) is refunded. Use this when you have an existing motion clip or preset to copy; prefer animateSprite to generate animation purely from a text prompt. Omit model to run on hydra (the default - most capable, and returns audio); pick forge for a cheaper run on simple motion, presets and matching poses; the model field lists rates. Pass an optional request_id to tag the result so you can retrieve 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 2/s (min charge 4 credits), Forge Pixel 2/s (min charge 4 credits), Tango 4/s (min charge 4 credits) [LEGACY]; [LEGACY] models are scheduled for removal - do not use them for new work; see this endpoint's full pricing table in the API docs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestBodyYesPayload for transferring motion from a video onto a static sprite image, producing an animated spritesheet.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields 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 all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\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 all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"hydra\"."
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"forge"New value: +"hydra"
  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): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\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 all-around model, generates audio\n- \"forge\" (Forge): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."
  3. Changed11 schema fields changed
    • 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 / image / description
      Previous value: -"Payload for generating an animated spritesheet from a static image. Input images can either be provided in base64 or URL. If the image was generated using Ludo, ideally it should be generated using the \"sprite\", \"sprite-vfx\" or \"ui_asset\" type."New value: +"The static sprite to animate, as a URL or base64 image. Ideally an image generated with the \"sprite\", \"sprite-vfx\" or \"ui_asset\" image type."
    • changedInput schema / properties / requestBody / properties / image / example
      Previous value: -"data:image/png;base64,..."New value: +"<url> OR data:image/png;base64,..."
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\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): 2 credits/s, min charge 4 credits · Cost-effective for simple motion. Works best with Presets and matching poses\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min charge 4 credits · Best for low-res pixel art animations\n- \"tango\" (Tango): 4 credits/s, min charge 4 credits · LEGACY - scheduled for removal, do not use for new work\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 / perspective / description
      Previous value: -"Perspective ID to use with the animation preset. When using a preset, `perspective` is required."New value: +"Camera perspective of the preset clip, by id (the `perspectives` list of listAnimationPresets, the same set for every preset): high = tactical steep top-down, horizon = side view at eye level, isometric = diagonal top-down with depth, low = hero low angle, top = directly overhead. Required when using a preset. Unrelated to the `perspective` of createImage, which is a free-text art direction."
    • addedInput schema / properties / requestBody / properties / perspective / enum
      Added value: +[
      +  "high",
      +  "horizon",
      +  "isometric",
      +  "low",
      +  "top"
      +]
    • addedInput schema / properties / requestBody / properties / perspective / example
      Added value: +"high"
    • changedInput schema / properties / requestBody / properties / preset_id / description
      Previous value: -"ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `perspective` and `direction` are required."New value: +"ID of an animation preset to use instead of a video URL. Use listAnimationPresets to list available presets. When using a preset, `perspective` and `direction` are required."
    • 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."
    • changedInput schema / properties / requestBody / properties / video / description
      Previous value: -"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `perspective` + `direction` must be provided."New value: +"URL of the video to use as motion source - the `video_url` of a spritesheet from animateSprite, or your own clip. Videos up to 4 seconds work best. Either `video` or `preset_id` + `perspective` + `direction` must be provided; when both are sent the video is used."
  4. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min 4\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 · LEGACY - scheduled for removal, do not use for new work\nModels marked LEGACY still work for existing integrations but will be removed; pick a current model for anything new. Default: \"forge\"."
  5. Changed6 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\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\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 1.5."New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. 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- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 1.5."
    • 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- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 Default: \"forge\"."New value: +"Model to use. Available models:\n- \"hydra\" (Hydra): 3 credits/s, min 4\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 Default: \"forge\"."
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "forge",
      -  "forge-pixel",
      -  "tango"
      -]New value: +[
      +  "hydra",
      +  "forge",
      +  "forge-pixel",
      +  "tango"
      +]
    • addedInput schema / properties / requestBody / properties / prompt
      Added value: +{
      +  "description": "Optional extra instructions for the motion transfer (e.g. \"keep the cape still\"), added to the model's own prompt.",
      +  "type": "string"
      +}
  6. Changed26 schema fields changed
    • 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: -1.5
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\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\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\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\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4 Default: 1.5."
    • 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. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0. 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 / 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."New value: +"Trim the animation at the beginning or end to create a seamless loop. Default: true."
    • removedInput schema / properties / requestBody / properties / margin_ratio / default
      Removed value: -0.15
    • 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. Defaults to 0.15 when no margin param is provided."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. Defaults to 0.15 when no margin value is given at all."
    • removedInput schema / properties / requestBody / properties / margin_ratio / example
      Removed value: -0.15
    • 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). Overrides the legacy margin_ratio on this axis."
    • removedInput schema / properties / requestBody / properties / margin_ratio_mode / default
      Removed value: -"manual"
    • 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. Defaults to \"manual\". Sending \"none\" explicitly together with a margin value fails with HTTP 400 (the value would be ignored). Default: \"manual\"."
    • 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). 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- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4 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."
  7. 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 / loop / default
      Added value: +true
    • addedInput schema / properties / requestBody / properties / loop / example
      Added value: +true
    • changedInput schema / properties / requestBody / properties / model / default
      Previous value: -"tango"New value: +"forge"
  8. Changed1 schema field changed
    • 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. Defaults to 0.15 when no margin param is provided."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. Defaults to 0.15 when no margin param is provided."
  9. 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."
  10. Changed3 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\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\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"forge-pixel\" (Forge Pixel): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "forge",
      -  "tango"
      -]New value: +[
      +  "forge",
      +  "forge-pixel",
      +  "tango"
      +]
  11. Changed7 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- forge: 1, 1.5, 2, 2.5, 3, 3.5, 4\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"
    • changedInput schema / properties / requestBody / properties / margin_ratio / description
      Previous value: -"Amount of padding around the sprite as a ratio (0.0 to 1.0). Only used when margin_ratio_mode is \"manual\"."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. Defaults to 0.15 when no margin param is provided."
    • addedInput schema / properties / requestBody / properties / margin_ratio_horizontal
      Added value: +{
      +  "description": "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.",
      +  "format": "float",
      +  "type": "number"
      +}
    • addedInput schema / properties / requestBody / properties / margin_ratio_vertical
      Added value: +{
      +  "description": "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.",
      +  "format": "float",
      +  "type": "number"
      +}
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"tango\" (Tango): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"forge\" (Forge): 2 credits/s, min 4\n- \"tango\" (Tango): 4 credits/s, min 4"
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "tango"
      -]New value: +[
      +  "forge",
      +  "tango"
      +]
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"tango"New value: +"forge"
  12. Changed3 schema fields changed
    • changedInput schema / properties / requestBody / properties / duration / default
      Previous value: -2New value: +1.5
    • changedInput schema / properties / requestBody / properties / duration / description
      Previous value: -"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 2, 3, 4"New value: +"Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 1.5, 2, 2.5, 3, 3.5, 4"
    • changedInput schema / properties / requestBody / properties / duration / example
      Previous value: -2New value: +1.5
  13. Changed5 schema fields changed
    • addedInput schema / properties / requestBody / properties / duration
      Added value: +{
      +  "default": 2,
      +  "description": "Duration in seconds. If the reference video is longer, it will be compressed to this duration. Available values depend on the model:\n- tango: 1, 2, 3, 4",
      +  "example": 2,
      +  "format": "float",
      +  "type": "number"
      +}
    • changedInput schema / properties / requestBody / properties / model / default
      Previous value: -"transfer"New value: +"tango"
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"Model to use. Available models:\n- \"transfer\" (Transfer): 4 credits/s, min 4"New value: +"Model to use. Available models:\n- \"tango\" (Tango): 4 credits/s, min 4"
    • changedInput schema / properties / requestBody / properties / model / enum
      Previous value: -[
      -  "transfer"
      -]New value: +[
      +  "tango"
      +]
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"transfer"New value: +"tango"
  14. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / model
      Added value: +{
      +  "default": "transfer",
      +  "description": "Model to use. Available models:\n- \"transfer\" (Transfer): 4 credits/s, min 4",
      +  "enum": [
      +    "transfer"
      +  ],
      +  "example": "transfer",
      +  "type": "string"
      +}
  15. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 192, 256, 384, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0."
  16. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 256, 384, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 192, 256, 384, 0."
  17. Changed2 schema fields changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 64, 128, 256, 0."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 32, 64, 128, 256, 384, 0."
    • changedInput schema / properties / requestBody / properties / frame_size / example
      Previous value: -64New value: +32
  18. Changed4 schema fields changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). 0 is for maximum resolution."New value: +"Size of each frame in pixels (width and height). 0 is for maximum resolution. Accepted values: 64, 128, 256, 0."
    • removedInput schema / properties / requestBody / properties / frame_size / enum
      Removed value: -[
      -  64,
      -  128,
      -  256,
      -  0
      -]
    • changedInput schema / properties / requestBody / properties / frames / description
      Previous value: -"Number of frames in the output spritesheet."New value: +"Number of frames in the output spritesheet. Accepted values: 4, 9, 16, 25, 36, 49, 64."
    • removedInput schema / properties / requestBody / properties / frames / enum
      Removed value: -[
      -  4,
      -  9,
      -  16,
      -  25,
      -  36,
      -  49,
      -  64
      -]
  19. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / request_id
      Added value: +{
      +  "description": "Optional client-provided identifier for this request. Use this to retrieve results later via the results endpoint.",
      +  "type": "string"
      +}
  20. Changed1 schema field changed
    • removedInput schema / properties / requestBody / properties / pixel_art_filter
      Removed value: -{
      -  "description": "Apply a pixelation filter to make the output look like pixel art.",
      -  "enum": [
      -    "none",
      -    "small",
      -    "medium",
      -    "large"
      -  ],
      -  "example": "none",
      -  "type": "string"
      -}
  21. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / default
      Previous value: -256New value: +0
  22. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / spritesheet_with_background
      Added value: +{
      +  "default": false,
      +  "description": "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.",
      +  "example": false,
      +  "type": "boolean"
      +}
  23. Changed6 schema fields changed
    • addedInput schema / properties / requestBody / properties / frame_size
      Added value: +{
      +  "default": 256,
      +  "description": "Size of each frame in pixels (width and height). 0 is for maximum resolution.",
      +  "enum": [
      +    64,
      +    128,
      +    256,
      +    0
      +  ],
      +  "example": 64,
      +  "format": "integer",
      +  "type": "number"
      +}
    • addedInput schema / properties / requestBody / properties / frames
      Added value: +{
      +  "default": 36,
      +  "description": "Number of frames in the output spritesheet.",
      +  "enum": [
      +    4,
      +    9,
      +    16,
      +    25,
      +    36,
      +    49,
      +    64
      +  ],
      +  "example": 4,
      +  "format": "integer",
      +  "type": "number"
      +}
    • addedInput schema / properties / requestBody / properties / margin_ratio / default
      Added value: +0.15
    • addedInput schema / properties / requestBody / properties / margin_ratio / example
      Added value: +0.15
    • removedInput schema / properties / requestBody / properties / num_frames
      Removed value: -{
      -  "description": "Number of frames in the output spritesheet.",
      -  "format": "integer",
      -  "type": "number"
      -}
    • removedInput schema / properties / requestBody / properties / target_frame_size
      Removed value: -{
      -  "description": "Size of each frame in pixels (width and height).",
      -  "format": "integer",
      -  "type": "number"
      -}
  24. Changed4 schema fields changed
    • changedInput schema / properties / requestBody / properties / direction / description
      Previous value: -"Direction for the animation preset."New value: +"Direction for the animation preset. When using a preset, `direction` is required."
    • changedInput schema / properties / requestBody / properties / perspective / description
      Previous value: -"Perspective ID to use with the animation preset. If not provided, the first available perspective is used."New value: +"Perspective ID to use with the animation preset. When using a preset, `perspective` is required."
    • changedInput schema / properties / requestBody / properties / preset_id / description
      Previous value: -"ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `direction` is required."New value: +"ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `perspective` and `direction` are required."
    • changedInput schema / properties / requestBody / properties / video / description
      Previous value: -"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `direction` must be provided."New value: +"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `perspective` + `direction` must be provided."
  25. Changed5 schema fields changed
    • addedInput schema / properties / requestBody / properties / direction
      Added value: +{
      +  "description": "Direction for the animation preset.",
      +  "enum": [
      +    "N",
      +    "NE",
      +    "E",
      +    "SE",
      +    "S",
      +    "SW",
      +    "W",
      +    "NW"
      +  ],
      +  "example": "N",
      +  "type": "string"
      +}
    • addedInput schema / properties / requestBody / properties / perspective
      Added value: +{
      +  "description": "Perspective ID to use with the animation preset. If not provided, the first available perspective is used.",
      +  "type": "string"
      +}
    • addedInput schema / properties / requestBody / properties / preset_id
      Added value: +{
      +  "description": "ID of an animation preset to use instead of a video URL. Use the animation-presets endpoint to list available presets. When using a preset, `direction` is required.",
      +  "type": "string"
      +}
    • changedInput schema / properties / requestBody / properties / video / description
      Previous value: -"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results."New value: +"URL of the video to use as motion source. You can use videos from the animateSprite endpoint or provide your own. Videos up to 4 seconds will produce better results. Either `video` or `preset_id` + `direction` must be provided."
    • changedInput schema / properties / requestBody / required
      Previous value: -[
      -  "image",
      -  "video"
      -]New value: +[
      +  "image"
      +]
  26. Added

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations present, the description carries the full behavioral burden and does so thoroughly. It discloses async job behavior, polling via getApiJob, HTTP 400 failure conditions, credit holding and refunds, duration compression, model defaults, and the shape of the result via the animateSprite reference.

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

Conciseness3/5

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

The description is front-loaded and well organized, but it is long and partly redundant with the input schema. The pricing and LEGACY table repeats information already present in the model field, and the duration rules are stated both in prose and in the schema.

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 has no output schema and no annotations, the description covers all essentials: input requirements, alternatives, result fields, async return shape, error conditions, credit implications, and model guidance. There is no missing context an agent would need to select and invoke it correctly.

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 coverage is 100%, so the baseline is 3, but the description goes beyond the schema by clarifying mutual exclusivity of video versus preset triple, the video-wins rule, duration defaults tied to model capability, and request_id result tagging. These aggregates add real decision-making value beyond individual parameter docs.

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 precise verb-resource pair: 'Transfer motion from a reference video or a named animation preset onto a static sprite image, producing an animated spritesheet.' It also contrasts with sibling tools by noting that text-prompt animation should go to animateSprite instead.

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 states when to use the tool: 'Use this when you have an existing motion clip or preset to copy; prefer animateSprite to generate animation purely from a text prompt.' It also gives concrete selection rules for model choice and the video-vs-preset precedence.

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.