Skip to main content
Glama

Rig 3D model

rigModel

Rig a 3D model: generate a skeleton and skin weights for an existing GLB so it can be animated. Accepts a URL or base64-encoded GLB in model (here model is the 3D asset file, not an AI model name - rigging has no model choice). The job result is a downloadable model_url for the rigged GLB. rig_type selects the skeleton prior - general (default, any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates for two-armed, two-legged characters: humanoid_template (standard 22-joint skeleton with named joints) and humanoid_template_hands (52 joints, five fingers per hand). Animation presets retarget onto any rig type, though not onto every model. joint_naming relabels the identified joints to a convention - smpl (default), mixamo, humanik, unreal, godot, rigify, or vroid - without changing the skeleton. Credits are held when the job is accepted and refunded if it fails or is cancelled. Rigging is non-destructive to geometry but replaces any prior skeleton, so animations made against an old rig no longer apply. Async generation job: returns {id, status} - poll getApiJob (job and credit contract: see the server instructions).

Credits: This endpoint consumes 1 credits per call.

Input Schema

NameRequiredDescriptionDefault
requestBodyYesPayload for rigging a 3D model with a skeleton

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"The 3D asset to rig, as a URL or base64-encoded GLB file (not an AI model name)."New value: +"The 3D asset to rig, as a URL or base64-encoded GLB file (not an AI model name). Up to 30MB; a larger file is rejected with HTTP 400."
  2. Changed1 schema field changed
    • addedInput schema / properties / requestBody / description
      Added value: +"Payload for rigging a 3D model with a skeleton"
  3. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / rig_type / description
      Previous value: -"Which skeleton to build. Pick humanoid_template (or humanoid_template_hands) if you intend to use animate3DModelPreset later - the default general rig cannot take presets. general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library - humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters. Default: \"general\"."New value: +"Which skeleton to build: general (default, any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints - humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters. Animation presets (animate3DModelPreset) retarget onto any rig type, though not onto every model. Default: \"general\"."
  4. Changed3 schema fields changed
    • changedInput schema / properties / requestBody / properties / model / description
      Previous value: -"URL or base64-encoded GLB to rig."New value: +"The 3D asset to rig, as a URL or base64-encoded GLB file (not an AI model name)."
    • 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 / rig_type / description
      Previous value: -"Which skeleton to build: general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library - humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters. Default: \"general\"."New value: +"Which skeleton to build. Pick humanoid_template (or humanoid_template_hands) if you intend to use animate3DModelPreset later - the default general rig cannot take presets. general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library - humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters. Default: \"general\"."
  5. Changed4 schema fields changed
    • removedInput schema / properties / requestBody / properties / joint_naming / default
      Removed value: -"smpl"
    • changedInput schema / properties / requestBody / properties / joint_naming / description
      Previous value: -"Bone naming convention for the identified joints: smpl (default), mixamo (Unity's humanoid auto-mapper), humanik (same names unprefixed - Maya/MotionBuilder/FBX), unreal (UE mannequin), godot (SkeletonProfileHumanoid), rigify (Blender) or vroid (VRM). Purely a relabel - the skeleton is identical."New value: +"Bone naming convention for the identified joints: smpl (default), mixamo (Unity's humanoid auto-mapper), humanik (same names unprefixed - Maya/MotionBuilder/FBX), unreal (UE mannequin), godot (SkeletonProfileHumanoid), rigify (Blender) or vroid (VRM). Purely a relabel - the skeleton is identical. Default: \"smpl\"."
    • removedInput schema / properties / requestBody / properties / rig_type / default
      Removed value: -"general"
    • changedInput schema / properties / requestBody / properties / rig_type / description
      Previous value: -"Which skeleton to build: general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library - humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters."New value: +"Which skeleton to build: general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library - humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters. Default: \"general\"."
  6. Changed2 schema fields changed
    • changedInput schema / properties / requestBody / properties / joint_naming / description
      Previous value: -"Bone naming convention for the identified joints: smpl (default), mixamo (Unity's humanoid auto-mapper), humanik (same names unprefixed — Maya/MotionBuilder/FBX), unreal (UE mannequin), godot (SkeletonProfileHumanoid), rigify (Blender) or vroid (VRM). Purely a relabel — the skeleton is identical."New value: +"Bone naming convention for the identified joints: smpl (default), mixamo (Unity's humanoid auto-mapper), humanik (same names unprefixed - Maya/MotionBuilder/FBX), unreal (UE mannequin), godot (SkeletonProfileHumanoid), rigify (Blender) or vroid (VRM). Purely a relabel - the skeleton is identical."
    • changedInput schema / properties / requestBody / properties / rig_type / description
      Previous value: -"Which skeleton to build: general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library — humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters."New value: +"Which skeleton to build: general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library - humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters."
  7. 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."
  8. 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,..."
  9. Changed3 schema fields changed
    • addedInput schema / properties / requestBody / properties / joint_naming
      Added value: +{
      +  "default": "smpl",
      +  "description": "Bone naming convention for the identified joints: smpl (default), mixamo (Unity's humanoid auto-mapper), humanik (same names unprefixed — Maya/MotionBuilder/FBX), unreal (UE mannequin), godot (SkeletonProfileHumanoid), rigify (Blender) or vroid (VRM). Purely a relabel — the skeleton is identical.",
      +  "enum": [
      +    "smpl",
      +    "mixamo",
      +    "humanik",
      +    "unreal",
      +    "godot",
      +    "rigify",
      +    "vroid"
      +  ],
      +  "example": "smpl",
      +  "type": "string"
      +}
    • changedInput schema / properties / requestBody / properties / rig_type / description
      Previous value: -"Rigging style prior: general (any asset), humanoid (anime-style characters), game (classic game-character rigs)."New value: +"Which skeleton to build: general (any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates with named joints required for the animation preset library — humanoid_template (22 joints) / humanoid_template_hands (52, five fingers per hand). Templates only suit two-armed, two-legged characters."
    • changedInput schema / properties / requestBody / properties / rig_type / enum
      Previous value: -[
      -  "general",
      -  "humanoid",
      -  "game"
      -]New value: +[
      +  "general",
      +  "humanoid",
      +  "game",
      +  "humanoid_template",
      +  "humanoid_template_hands"
      +]
  10. Added

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: credits are held at job acceptance and refunded on failure or cancellation, the operation is async with a poll contract, and rigging is non-destructive to geometry but replaces any prior skeleton so old animations no longer apply. That skeleton-replacement caveat is exactly the nuance a destructiveHint=false annotation does not convey on its own.

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?

Front-loaded with purpose, asset input, and rig types before the behavioral caveats. It is dense but nearly every sentence adds information; the enum lists partly duplicate the schema, which costs a point.

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?

With no output schema, the description still states the return shape ({id, status}), the eventual downloadable model_url, and the polling path via getApiJob. Credits, failure refunds, and rig-type retargeting limits are all covered, leaving no obvious gap for a single-parameter async mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents model, rig_type, joint_naming, and request_id in comparable detail. The description mostly restates those enum meanings, with only the 'model is not an AI model name' disambiguation adding marginal value (already present in the schema description). Baseline 3 is appropriate.

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+outcome: 'Rig a 3D model: generate a skeleton and skin weights for an existing GLB so it can be animated.' That clearly separates it from siblings that create geometry (create3DModel) or apply existing animation (animate3DModel/transferMotion).

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?

Explains the input asset requirement (URL or base64 GLB), which rig_type applies to which asset, and that animation presets retarget onto any rig type, though not onto every model. It also routes the agent to getApiJob for polling. It does not explicitly name the sibling to use when the goal is creating a model or animating instead, so it falls short of a 5.

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.