Skip to main content
Glama
Hermoso

Hermoso

Official

Recast motion

recast_motion

Transfer a video's motion, camera, and timing to your own character, product, clothes, or place while keeping the original sound.

Instructions

Copy the motion of any video (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 + ONE photo of a person (saved, real or AI), 4-30s -> seedance (Seedance 2.5 through our face library, 720p: the clip's scene, beats and sound kept, the WHOLE person swapped) when the clip is one of our renders or faceRoute is set; otherwise kling-edit (Kling 4.0 Edit, the second tier: edits the clip itself, 3-30s, 720p, 1080p by asking); several photos (one per person) -> h3 (H3 Max Recast, ≤4 photos, 5-30s); no person in the clip -> seedance. By name: kling-edit; wan = Wan 3.0 (≤15s, keeps the set); wan-prime; h3; kling = Kling Motion Control (ONE picture, its background becomes the set). voice/language: the new performer gets a new voice (same timing) or speaks another language (lip-synced), in the same job and price. Billed per output second, ~5 min per 5s; dryRun quotes.

Input 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
voiceNoa NEW voice for the new performer: 'match' (a stock voice that fits them), 'female'/'male', or Aria, Sarah, Charlotte, George, Brian, Charlie. Omit = the clip's own sound. Never the original speaker's or a cloned voice
dryRunNoreturn the credits this exact job would hold and the engine auto picks, without rendering
engineNodefault auto
imagesNoseedance/wan: more pictures, @Image2…: a character, product, outfit or place
promptNooptional, e.g. 'same moves, new location: Tokyo at night'
languageNothe new voice speaks this language (e.g. 'Spanish'), lip-synced to the new words; voice defaults to 'match'
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.
resolutionNoa person swap defaults to 720p (seedance or kling-edit); otherwise seedance and wan default 1080p; h3 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. Changed2 schema fields changedv0.1.454
    • changedInput schema / properties / engine / enum
      Previous value: -[
      -  "auto",
      -  "h3",
      -  "seedance",
      -  "wan",
      -  "wan-prime",
      -  "kling"
      -]New value: +[
      +  "auto",
      +  "kling-edit",
      +  "h3",
      +  "seedance",
      +  "wan",
      +  "wan-prime",
      +  "kling"
      +]
    • changedInput schema / properties / resolution / description
      Previous value: -"seedance and wan default 1080p; h3 takes 720p or 1080p, default the clip’s own"New value: +"a person swap defaults to 720p (seedance or kling-edit); otherwise seedance and wan default 1080p; h3 720p or 1080p, default the clip’s own"
  2. Changed1 schema field changedv0.1.435
    • changedInput schema / properties / engine / enum
      Previous value: -[
      -  "auto",
      -  "h3",
      -  "seedance",
      -  "wan",
      -  "kling"
      -]New value: +[
      +  "auto",
      +  "h3",
      +  "seedance",
      +  "wan",
      +  "wan-prime",
      +  "kling"
      +]
  3. Changed3 schema fields changedv0.1.409
    • addedInput schema / properties / dryRun
      Added value: +{
      +  "description": "return the credits this exact job would hold and the engine auto picks, without rendering",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "the new voice speaks this language (e.g. 'Spanish'), lip-synced to the new words; voice defaults to 'match'",
      +  "type": "string"
      +}
    • addedInput schema / properties / voice
      Added value: +{
      +  "description": "a NEW voice for the new performer: 'match' (a stock voice that fits them), 'female'/'male', or Aria, Sarah, Charlotte, George, Brian, Charlie. Omit = the clip's own sound. Never the original speaker's or a cloned voice",
      +  "type": "string"
      +}
  4. 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"
  5. 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"
      +]
  6. 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."
  7. 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"
  8. 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"
      +}
  9. 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
  10. Addedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare non-read-only, open-world, non-idempotent, non-destructive, and the description adds cost/latency model ('billed per output second, ~5 min per 5s') and the dryRun escape hatch, which annotations cannot express. It also discloses output-side behavior: the clip's sound is kept, and the new performer gets a new voice or a lip-synced language. What it does not cover is what the call returns and that a long job must be polled (get_job exists as a sibling).

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?

Correctly front-loaded: the purpose is in the first clause, before any routing detail. But the body is one sprawling semicolon-chained paragraph that mixes purpose, engine routing, tiering, voice rules and billing at the same visual level, making it hard to parse on first read. Every sentence carries information, yet the structure costs more than the length does.

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 12-parameter, multi-tier, long-running job tool with no output schema, the description covers engine choice, resolution defaults, voice/language behavior, duration limits and billing well enough to call it correctly. The remaining gap is lifecycle: it never says the invocation enqueues a job or that progress is retrieved via get_job, which matters for a ~5-minute-per-5s render.

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, and the description goes beyond it where the schema is weakest — 'engine' has only 'default auto' in the schema, and the description supplies the full routing matrix. It also explains '@Image1/@Image2' prompt-referencing convention for image/images, which the schema does not. Marginal over baseline rather than transformative, since voice/resolution/dryRun semantics are largely restated from param descriptions.

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?

Opens with a specific verb + resource plus a parenthetical term of art: 'Copy the motion of any video (motion transfer): re-perform a clip's motion, camera and timing with YOUR character.' That framing cleanly separates it from siblings like edit_video, clone_video and restyle_video without needing to name them. An agent knows exactly which capability it is reaching for.

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?

Gives explicit selection logic for every engine: what 'auto' resolves to per input shape (one photo + person clip -> seedance under stated conditions, otherwise kling-edit; several photos -> h3; no person -> seedance), plus the by-name alternatives with their constraints (wan ≤15s, h3 ≤4 photos, kling = one picture). Also states when dryRun should be used to quote first. Nothing is left to inference.

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