Skip to main content
Glama
hermoso-ai

Hermoso

Official

Recast motion

recast_motion

Transfer a reference video's motion, camera, and timing to your character, product, outfit, or location while keeping its original sound.

Instructions

Motion transfer: re-perform a clip's motion, camera and timing with YOUR character, product, clothes or place; sound kept. image (+ images, @Image1, @Image2… in prompt) = who and what. engine auto (default), a person clip recast with people: ≤15s carried by one face (talking/close-up, one person, one photo) or an AI person made from words -> wan (follows every blink and mouth shape); dance, full-body, a group or >15s -> h3 (H3 Max Recast: ≤4 photos, one per person, 5-30s, no shot over 15s, keeps set, light, cuts); otherwise seedance (Seedance 2.5, ≤9 pictures, 4-30s, keeps set and beats; a person clip only if our render or faceRoute, else wan/kling). kling = Kling Motion Control (ONE picture, its background becomes the set, 3-30s); wan = Wan 3.0 Prime (≤9 pictures, keeps the set, ≤15s). Billed per output second, ~5 min per 5s; dryRun quotes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tierNokling only: 'pro' (default): 1080p and real hand-object interaction. 'standard': about 25% fewer credits and faster, but 720p, and it tends to mime a held object with empty hands. hermoso_capabilities lists the exact credits for both
imageNowho performs it: the actor/character image URL (@Image1). Required on kling. No one yet: generate_image a portrait of an AI person from words (no reference photo) and pass its url, or a saved / preset creator’s portrait (list_creators). Using a real person’s face, likeness or voice confirms you are them or have their consent, take full, unlimited responsibility for its use and will cover any claim against Hermoso (hermoso.ai/terms). Paid plan only; recorded.
videoYesthe reference video whose motion to re-perform
engineNodefault auto
imagesNoseedance/wan: more pictures, @Image2…: a character, product, outfit or place
promptNooptional, e.g. 'same moves, new location: Tokyo at night'
faceRouteNo'face_lane' = the user's "I own the rights to this face" for a real person in the source clip (paid plans). Only on the user's say-so, never on your own.
resolutionNoseedance and wan default 1080p; h3 takes 720p or 1080p, default the clip’s own
orientationNokling only: which aspect to keep: the video's (default) or the image's

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.1.398
    • changedInput schema / properties / engine / enum
      Previous value: -[
      -  "auto",
      -  "seedance",
      -  "wan",
      -  "kling"
      -]New value: +[
      +  "auto",
      +  "h3",
      +  "seedance",
      +  "wan",
      +  "kling"
      +]
    • changedInput schema / properties / image / description
      Previous value: -"who performs it: the actor/character image URL (@Image1). Required on kling. Using a real person’s face, likeness or voice confirms you are them or have their consent, take full, unlimited responsibility for its use and will cover any claim against Hermoso (hermoso.ai/terms). Paid plan only; recorded."New value: +"who performs it: the actor/character image URL (@Image1). Required on kling. No one yet: generate_image a portrait of an AI person from words (no reference photo) and pass its url, or a saved / preset creator’s portrait (list_creators). Using a real person’s face, likeness or voice confirms you are them or have their consent, take full, unlimited responsibility for its use and will cover any claim against Hermoso (hermoso.ai/terms). Paid plan only; recorded."
    • changedInput schema / properties / resolution / description
      Previous value: -"seedance and wan; default 1080p"New value: +"seedance and wan default 1080p; h3 takes 720p or 1080p, default the clip’s own"
  2. Changed9 schema fields changedv0.1.374
    • addedInput schema / properties / engine
      Added value: +{
      +  "description": "default auto",
      +  "enum": [
      +    "auto",
      +    "seedance",
      +    "wan",
      +    "kling"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / faceRoute
      Added value: +{
      +  "description": "'face_lane' = the user's \"I own the rights to this face\" for a real person in the source clip (paid plans). Only on the user's say-so, never on your own.",
      +  "enum": [
      +    "face_lane"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / image / description
      Previous value: -"the actor/character image URL (who should appear). Using a real person’s face, likeness or voice confirms you are them or have their consent, take full, unlimited responsibility for its use and will cover any claim against Hermoso (hermoso.ai/terms). Paid plan only; recorded."New value: +"who performs it: the actor/character image URL (@Image1). Required on kling. Using a real person’s face, likeness or voice confirms you are them or have their consent, take full, unlimited responsibility for its use and will cover any claim against Hermoso (hermoso.ai/terms). Paid plan only; recorded."
    • addedInput schema / properties / images
      Added value: +{
      +  "description": "seedance/wan: more pictures, @Image2…: a character, product, outfit or place",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 8,
      +  "type": "array"
      +}
    • changedInput schema / properties / orientation / description
      Previous value: -"which aspect to keep: the video's (default) or the image's"New value: +"kling only: which aspect to keep: the video's (default) or the image's"
    • changedInput schema / properties / prompt / description
      Previous value: -"optional scene/style guidance"New value: +"optional, e.g. 'same moves, new location: Tokyo at night'"
    • addedInput schema / properties / resolution
      Added value: +{
      +  "description": "seedance and wan; default 1080p",
      +  "enum": [
      +    "480p",
      +    "720p",
      +    "1080p"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / tier / description
      Previous value: -"'pro' (default): 1080p and real hand-object interaction. 'standard': about 25% fewer credits and faster, but 720p, and it tends to mime a held object with empty hands. hermoso_capabilities lists the exact credits for both"New value: +"kling only: 'pro' (default): 1080p and real hand-object interaction. 'standard': about 25% fewer credits and faster, but 720p, and it tends to mime a held object with empty hands. hermoso_capabilities lists the exact credits for both"
    • changedInput schema / required
      Previous value: -[
      -  "image",
      -  "video"
      -]New value: +[
      +  "video"
      +]
  3. Changed1 schema field changedv0.1.366
    • changedInput schema / properties / image / description
      Previous value: -"the actor/character image URL (who should appear); a real person’s photo confirms their likeness consent"New value: +"the actor/character image URL (who should appear). Using a real person’s face, likeness or voice confirms you are them or have their consent, take full, unlimited responsibility for its use and will cover any claim against Hermoso (hermoso.ai/terms). Paid plan only; recorded."
  4. Changed1 schema field changedv0.1.285
    • changedInput schema / properties / image / description
      Previous value: -"the actor/character image URL (who should appear)"New value: +"the actor/character image URL (who should appear); a real person’s photo confirms their likeness consent"
  5. Changed1 schema field changedv0.1.256
    • addedInput schema / properties / tier
      Added value: +{
      +  "description": "'pro' (default): 1080p and real hand-object interaction. 'standard': about 25% fewer credits and faster, but 720p, and it tends to mime a held object with empty hands. hermoso_capabilities lists the exact credits for both",
      +  "enum": [
      +    "pro",
      +    "standard"
      +  ],
      +  "type": "string"
      +}
  6. Changed1 schema field changedv0.1.161
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "http://json-schema.org/draft-07/schema#",
      -  "additionalProperties": false,
      -  "properties": {
      -    "jobId": {
      -      "description": "the render job id — poll get_job with this id to resume or inspect",
      -      "type": "string"
      -    },
      -    "model": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "the product-facing label of the model that rendered it"
      -    },
      -    "raw": {
      -      "description": "the raw job result payload (e.g. images[] for carousel template ads)"
      -    },
      -    "stillRendering": {
      -      "description": "true when the render is still in progress — keep polling get_job with jobId",
      -      "type": "boolean"
      -    },
      -    "url": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "the served URL of the finished media (absent/null while still rendering)"
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  7. Addedv0.1.0

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, openWorld=true, idempotent=false): it discloses per-output-second billing, ~5 min per 5s latency, dryRun quoting, paid-plan-only gating, and consent/terms responsibility for real-person likeness. It is also consistent with the non-readOnly, non-destructive annotation profile.

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 purpose is front-loaded, but the body is a single run-on sentence packed with arrows, abbreviations and routing branches that are hard to parse. Every clause is arguably useful, yet the density hurts scannability.

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 9-parameter, no-output-schema generation tool with high schema coverage, the description supplies the missing operational context: engine selection, duration limits, photo counts, billing, and consent. Only minor gaps remain, such as what a dryRun response returns or how to handle failures.

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 baseline is 3, but the description adds real meaning: the engine enum's routing logic (schema only says 'default auto'), image as 'who performs it', and images/@Image2 as additional character/product/outfit/place references. It meaningfully enriches the highest-stakes parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Motion transfer: re-perform a clip's motion, camera and timing with YOUR character... sound kept' — which is a distinctive capability an agent can separate from generic siblings like edit_video or restyle_video. It does not explicitly name a sibling it is not, so it falls short of a 5.

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?

Gives dense conditional guidance on which engine fits which input (one-face talking clips -> wan, dance/group/>15s -> h3, else seedance, kling = one picture), effectively telling the agent when each mode applies. It never states when to prefer recast_motion over sibling tools like clone_video or edit_video, so no explicit exclusions.

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