Skip to main content
Glama

animate3DModelPreset

Apply a curated animation preset to an already-rigged 3D model (retargeting). Pass the rigged GLB in model (URL or base64; the 3D asset file, not an AI model name) and a preset_id from the animation presets list (from listAnimationPresets) - only presets that expose a clip_url can be applied to a 3D model. The model must have a humanoid-template rig (rig it with rig_type humanoid_template or humanoid_template_hands). The job result is one retargeted animation - a standalone animation-only GLB in glb_url plus an mp4 preview_url - in the same animations envelope as the animate endpoint. crop_loop trims the clip to its seamlessly-looping span (omit to follow the preset's own loop flag); in_place removes net travel so the character moves on the spot, as game-engine locomotion expects (omit to keep the preset's own travel). Credits are held when the job is accepted and refunded if it fails or is cancelled. Async generation job: returns {id, status} - poll getApiJob (job and credit contract: see the server instructions).

Credits: This endpoint consumes 0.2 credits per call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestBodyYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / requestBody / properties / in_place / description
      Previous value: -"Remove the animation's net travel so the character moves on the spot (engine-driven locomotion). Omit to follow crop_loop."New value: +"Remove the animation's net travel so the character moves on the spot (engine-driven locomotion). Omit to keep the preset's own travel."
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"URL or base64-encoded already-rigged GLB (rig it with a humanoid_template rig_type first)."New value: +"The already-rigged 3D asset, as a URL or base64-encoded GLB file (not an AI model name). Rig it with rigModel using rig_type humanoid_template or humanoid_template_hands first."
    • 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."
  2. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / request_id / description
      Previous value: -"Optional client-provided id to retrieve the result later."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."
  3. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / example
      Previous value: -"<url> OR data:image/png;base64,..."New value: +"<url> OR data:model/gltf-binary;base64,..."
  4. Added

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden. It discloses the async job shape, polling via getApiJob, the exact output envelope, option effects, credit hold/refund behavior, and per-call cost. This is substantially more behavioral context than most tool descriptions provide.

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?

All sentences are information-dense and the purpose is front-loaded; the structure is a single paragraph rather than bullets, but every statement earns its place. It is longer than usual because it must compensate for low schema coverage and missing annotations.

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?

For a complex async generation tool with no output schema and no annotations, the description covers prerequisites, input constraints, output, option semantics, polling, and credit contract. An agent has enough information to select and invoke the tool correctly without opening sibling schemas.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds key semantics beyond the schema: model must be a URL or base64 GLB, preset_id must come from listAnimationPresets and expose a clip_url, and it explains the meaning and omission behavior of crop_loop and in_place. It does not describe request_id, though that parameter is optional and self-explanatory.

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 specific verb and resource: applying a curated animation preset to an already-rigged 3D model via retargeting. It also distinguishes this from other animation tools by requiring a preset_id from listAnimationPresets and by clarifying that model is a GLB asset, not an AI model name.

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?

It gives clear prerequisites: the model must already have a humanoid-template rig, and only presets exposing a clip_url are eligible. It names the presets source and the polling tool, but it does not explicitly contrast with animate3DModel or provide a when-not-to-use exclusion.

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.