SkinTokens for Agents

Rig any 3D mesh. SkinTokens (ACM TOG 2026) on a ZeroGPU slice: send a glb, gltf, obj or fbx and one synchronous call returns the mesh with a predicted skeleton and skin weights as a rigged GLB, the rig as JSON, the weights and a preview.

REST + OpenAPIMCP serverGradio clientsZeroGPU, billed to the callerglb · gltf · obj · fbx

Give this to your agent

A one-sentence prompt for Claude, ChatGPT, Cursor or any agent with web access. Replace the placeholder with your task; the guide holds the endpoints, parameters and workflow. A rig costs tens of seconds of your ZeroGPU quota.
Read https://townbox-skintokens-for-agents.hf.space/llms.txt and use SkinTokens to <WHAT_TO_RIG_AND_WHAT_TO_DO_WITH_THE_FILES>. Use my configured Hugging Face token if available.

Connect over MCP

Streamable HTTP at https://townbox-skintokens-for-agents.hf.space/gradio_api/mcp/. Tools: rig, list_examples, get_result, view_rig, service_info, guide. The Authorization header makes ZeroGPU bill your own quota.
{
  "mcpServers": {
    "skintokens": {
      "url": "https://townbox-skintokens-for-agents.hf.space/gradio_api/mcp/",
      "headers": { "Authorization": "Bearer YOUR_HF_TOKEN" }
    }
  }
}
claude mcp add --transport http skintokens https://townbox-skintokens-for-agents.hf.space/gradio_api/mcp/ --header "Authorization: Bearer $HF_TOKEN"

Quick start

BASE=https://townbox-skintokens-for-agents.hf.space
# 1. rig a mesh (20-60 s; GPU time goes to your ZeroGPU quota)
curl -s -X POST "$BASE/api/rig?filename=robot.glb&num_beams=10&seed=7" -H "Authorization: Bearer $HF_TOKEN" \
  -H 'content-type: application/octet-stream' --data-binary @robot.glb

# or a bundled example / a URL
curl -s -X POST $BASE/api/rig -H "Authorization: Bearer $HF_TOKEN" -H 'content-type: application/json' \
  -d '{"example": "giraffe", "seed": 7}'

# 2. download the rigged mesh, the rig as JSON, the preview
curl -s -H "Authorization: Bearer $HF_TOKEN" -o rigged.glb "$BASE/api/jobs/<job_id>/files/rigged.glb"

Endpoints

POST /api/rig
The mesh as the raw body (?filename=), a multipart file, or JSON {example} / {mesh_url}, plus options. Returns the result with a URL per output file.
GET /api/jobs/{job_id}
A result again (kept 24 h). Files: /api/jobs/{job_id}/files/{name}.
GET /api/examples
The bundled meshes and the results above, with the request that reproduces each.
GET /api/identity
Who pays the GPU time for the headers you send.
GET /api, /api/health, /api/gpu_check
Parameters, limits, provenance; liveness; a 10 s GPU probe.

Parameters

num_beams
Beam-search width 1 to 20 (default 10). More beams, steadier skeletons, longer calls.
seed
Integer for reproducibility (default random). Rig again with another seed when the skeleton looks wrong.
keep_skeleton
Keep the armature already in the file and predict only the skin weights (default false).
preserve_original
Transfer the rig onto the untouched input mesh so materials, textures and world scale survive (default false: normalized frame).
postprocess
Voxel-based mask on the skin weights before normalization (default false).
influences
Bones kept per vertex in the GLB, 1 to 8 (default 4).
top_k, top_p, temperature, repetition_penalty
Decoder sampling (defaults 5, 0.95, 1.0, 2.0: the authors' settings).

Outputs

rigged.glb
Mesh + armature (bone_0 is the root) + skin weights, glTF 2.0. Opens in Blender, three.js, Unity, Godot.
rig.json
Joint names, parents, children, depth, rest positions (GLB frame and input units), skin statistics.
skin.npz
Vertices, faces, full (N × J) weights, joints, parents.
preview.png, preview.glb
Mesh with the skeleton drawn over it (front and side); the rigged mesh with visible bones and a procedural test motion.

Model and provenance

Skin Tokens: A Learned Compact Representation for Unified Autoregressive Rigging. Jia-peng Zhang, Cheng-Feng Pu, Meng-Hao Guo, Yan-Pei Cao, Shi-Min Hu. ACM Transactions on Graphics 2026. arXiv 2602.04805 · project page · code (MIT) · weights (MIT) · authors' Space

This service runs the released checkpoint articulation_xl_quantization_256_token_4/grpo_1400.ckpt (TokenRig: Michelangelo mesh encoder, Qwen3-0.6B-architecture decoder, skin-token FSQ-CVAE; 595M parameters) through the authors' own inference code, vendored from their Space at revision 1f4445ba (repository commit 273b691d) without changes to the model code. Blender 4.5 reads the input and writes the rigged GLB, as in the authors' demo. Details in PROVENANCE.md.

Code and weights are MIT; the example meshes keep their own licenses (listed by /api/examples). Every output of this service is generated live.