AXIS Avatar Foundry
3D avatar/asset foundry: text/image -> rigged, validated, engine-ready GLB via x402.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"axis-avatar-foundry": {
"url": "https://api.avatar.jonathanarvay.com/mcp"
}
}
}Puntos de conexión remotos
https://api.avatar.jonathanarvay.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (14)
🟢axis_list_capabilities(kind)
List all AXIS Foundry capabilities (input formats, export platforms, validation rules). [Free — no payment required.]
Esquema de entrada
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"description": "Filter by capability kind",
"enum": [
"input_format",
"export_platform",
"validation_rule"
]
}
},
"examples": [
{
"kind": "export_platform"
}
]
}🟢axis_validate(file_path, platform, profile)
Validate an avatar mesh file. Returns pass/warn/fail counts and detailed rule results. [Paid: $0.25 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "Path to mesh file (.glb, .obj, .stl, etc.)"
},
"platform": {
"type": "string",
"description": "Target platform for platform-specific validation",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
]
},
"profile": {
"type": "string",
"description": "Validation strictness profile",
"enum": [
"default",
"strict",
"lenient"
]
}
},
"required": [
"file_path"
],
"examples": [
{
"file_path": "avatars/hero.glb",
"platform": "unity",
"profile": "strict"
}
]
}🟢axis_inspect(file_path)
Inspect an avatar's contract state and provenance chain (stage, bone/vertex counts, provenance step count, chain_valid + any broken links). Does not return a quality grade — use axis_validate for pass/warn/fail rule results. [Paid: $0.10 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "Path to mesh file"
}
},
"required": [
"file_path"
],
"examples": [
{
"file_path": "avatars/hero.glb"
}
]
}🟢axis_compare(file_a, file_b, sections)
Compare two avatar contracts. Returns similarity score and section-level diffs. [Paid: $0.10 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"file_a": {
"type": "string",
"description": "Path to first mesh file"
},
"file_b": {
"type": "string",
"description": "Path to second mesh file"
},
"sections": {
"type": "array",
"description": "Limit comparison to specific contract sections"
}
},
"required": [
"file_a",
"file_b"
],
"examples": [
{
"file_a": "avatars/hero_v1.glb",
"file_b": "avatars/hero_v2.glb"
}
]
}🟢axis_process(file_path, platform, export)
Run the full AXIS avatar pipeline (classify → normalize → rig → skin → validate). Returns contract summary. [Paid: $1.50 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "Path to mesh file"
},
"platform": {
"type": "string",
"description": "Target platform",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
]
},
"export": {
"type": "boolean",
"description": "Also export to the target platform"
}
},
"required": [
"file_path"
],
"examples": [
{
"file_path": "avatars/hero.glb",
"platform": "unreal",
"export": true
}
]
}🟢post_process_mesh(glb_base64, mesh_url, asset_kind, platform, polygon_tier, ...)
Post-process a RAW generated mesh (normalize → mesh-repair → rig/skin → validate → export) and return the finished, validated GLB as base64. The inline counterpart of axis_process (which needs a server file path) — the generation post-process step, callable by an LLM/agent that holds the mesh bytes (e.g. fresh TRELLIS output) or a URL to them. Provide the mesh EXACTLY one of two ways: inline as base64 (glb_base64) or as an HTTPS URL (mesh_url) — the URL's host must be on this server's operator-configured allowlist (off by default; an unconfigured allowlist refuses every mesh_url call, it is never open to an arbitrary host). Providing both or neither is a real input error. [Paid: $1.50 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"glb_base64": {
"type": "string",
"description": "Base64-encoded raw binary GLB to post-process. Provide exactly one of glb_base64 or mesh_url."
},
"mesh_url": {
"type": "string",
"description": "HTTPS URL to fetch the raw GLB from instead of inline base64 (e.g. a presigned storage URL) — the host must be on this server's configured allowlist (off by default). Provide exactly one of glb_base64 or mesh_url."
},
"asset_kind": {
"type": "string",
"description": "Asset kind (skinning auto-on for avatar only)",
"enum": [
"avatar",
"prop",
"vehicle",
"environment",
"vfx",
"weapon_armor",
"character_accessory",
"generic"
]
},
"platform": {
"type": "string",
"description": "Target engine platform (adds export validation)",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
]
},
"polygon_tier": {
"type": "string",
"description": "Decimation tier for the output mesh"
},
"run_skinning": {
"type": "boolean",
"description": "Override skinning (default: avatars only)"
}
},
"examples": [
{
"glb_base64": "Z2xURgIAAAA...",
"asset_kind": "avatar",
"platform": "roblox"
}
]
}🟢axis_export(file_path, platform)
Export an avatar to a target engine platform with validation and HMAC-signed manifest. [Paid: $0.50 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "Path to mesh file"
},
"platform": {
"type": "string",
"description": "Target platform",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
]
}
},
"required": [
"file_path",
"platform"
],
"examples": [
{
"file_path": "avatars/hero.glb",
"platform": "godot"
}
]
}🟢axis_manifest_verify(manifest, expected_hash)
Verify an export manifest's integrity and optionally check content hash. [Paid: $0.10 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"manifest": {
"type": "object",
"description": "Export manifest JSON object"
},
"expected_hash": {
"type": "string",
"description": "Expected content hash for verification"
}
},
"required": [
"manifest"
],
"examples": [
{
"manifest": {
"platform": "unity",
"artifact_hash": "…"
},
"expected_hash": "…"
}
]
}🟢repair_mesh(file_path, scale_unit, up_axis, remove_degenerates, fix_normals)
Repair a mesh into AXIS canonical frame (scale/axis/degenerates/normals) and return repair metrics. [Paid: $0.75 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "Path to mesh file"
},
"scale_unit": {
"type": "string",
"description": "Source scale unit",
"enum": [
"meters",
"centimeters",
"millimeters",
"inches",
"feet"
]
},
"up_axis": {
"type": "string",
"description": "Source up axis",
"enum": [
"Y",
"Z",
"-Z",
"X",
"-Y"
]
},
"remove_degenerates": {
"type": "boolean",
"description": "Remove zero-area triangles"
},
"fix_normals": {
"type": "boolean",
"description": "Recalculate missing normals"
}
},
"required": [
"file_path"
],
"examples": [
{
"file_path": "raw_scans/statue.obj",
"scale_unit": "centimeters",
"up_axis": "Z"
}
]
}🟢retarget_animation(clip_name, platform, drop_unmapped)
Retarget a built-in animation clip to a platform mapping and report coverage + deterministic hashes. [Paid: $0.75 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"clip_name": {
"type": "string",
"description": "Built-in clip name from animation library"
},
"platform": {
"type": "string",
"description": "Target platform mapping",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
]
},
"drop_unmapped": {
"type": "boolean",
"description": "Drop channels not found in the target mapping"
}
},
"required": [
"clip_name",
"platform"
],
"examples": [
{
"clip_name": "walk_cycle",
"platform": "unreal"
}
]
}🟢roblox_compliance_check(file_path)
Run Roblox R15 compliance checks against a mesh using canonical pipeline outputs. [Paid: $0.25 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; settled only on a successful (non-error) result.]
Esquema de entrada
{
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "Path to mesh file"
}
},
"required": [
"file_path"
],
"examples": [
{
"file_path": "avatars/hero.glb"
}
]
}🟡generate_avatar_from_text(prompt, platform, polygon_tier, texture_size, asset_kind, ...)
PAID (x402, 5 USDC): generate a production 3D avatar from a text prompt — xAI concept image → TRELLIS.2 GPU mesh → full canonical post-process (repair/validate/export). Payment settles ONLY when generation completes; a failed generation is never charged. Returns a job_id — poll with the free get_generation_status tool (typical runtime 5-15 minutes). Pass idempotency_key when a retry is possible (timeout/5xx) — replaying the same key returns the original job_id instead of a second GPU job/charge. [Paid: $5.00 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; DEFERRED settlement — charged only when the generation job completes, a failed job is never charged. Poll get_generation_status (free).]
Esquema de entrada
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "What to generate (subject description)"
},
"platform": {
"type": "string",
"description": "Target engine (adds rigging + engine export)",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
]
},
"polygon_tier": {
"type": "string",
"description": "Quality tier (defaults to the platform's configured tier)",
"enum": [
"mobile_light",
"mobile_standard",
"web_vr",
"desktop_standard",
"desktop_high",
"film_vfx",
"ultra_hd"
]
},
"texture_size": {
"type": "number",
"description": "Texture bake size in px (defaults per platform, else 2048)"
},
"asset_kind": {
"type": "string",
"description": "Asset taxonomy",
"enum": [
"avatar",
"prop",
"vehicle",
"environment",
"vfx",
"weapon_armor",
"character_accessory",
"generic"
]
},
"idempotency_key": {
"type": "string",
"description": "Optional caller-chosen dedup key (<=200 chars, [A-Za-z0-9_.:-]). Replaying the same key (per payer) returns the original job_id — no new GPU job, no new charge. Use on any retry after a timeout/5xx."
}
},
"required": [
"prompt"
],
"examples": [
{
"prompt": "a friendly adventurer character, fantasy game hero",
"platform": "unity"
}
]
}🟡generate_avatar_from_image(image_b64, prompt, platform, polygon_tier, texture_size, ...)
PAID (x402, 6 USDC): generate a production 3D avatar from a reference photo (base64) — xAI A-pose normalize → TRELLIS.2 GPU mesh → full canonical post-process. Payment settles ONLY when generation completes; a failed generation is never charged. Returns a job_id — poll with the free get_generation_status tool (typical runtime 5-15 minutes). Pass idempotency_key when a retry is possible (timeout/5xx) — replaying the same key returns the original job_id instead of a second GPU job/charge. [Paid: $6.00 USDC via x402 for unauthenticated calls on the hosted /mcp endpoint; DEFERRED settlement — charged only when the generation job completes, a failed job is never charged. Poll get_generation_status (free).]
Esquema de entrada
{
"type": "object",
"properties": {
"image_b64": {
"type": "string",
"description": "Base64-encoded reference image (PNG/JPEG)"
},
"prompt": {
"type": "string",
"description": "Optional style/subject hint alongside the image"
},
"platform": {
"type": "string",
"description": "Target engine (adds rigging + engine export)",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
]
},
"polygon_tier": {
"type": "string",
"description": "Quality tier (defaults to the platform's configured tier)",
"enum": [
"mobile_light",
"mobile_standard",
"web_vr",
"desktop_standard",
"desktop_high",
"film_vfx",
"ultra_hd"
]
},
"texture_size": {
"type": "number",
"description": "Texture bake size in px (defaults per platform, else 2048)"
},
"asset_kind": {
"type": "string",
"description": "Asset taxonomy",
"enum": [
"avatar",
"prop",
"vehicle",
"environment",
"vfx",
"weapon_armor",
"character_accessory",
"generic"
]
},
"idempotency_key": {
"type": "string",
"description": "Optional caller-chosen dedup key (<=200 chars, [A-Za-z0-9_.:-]). Replaying the same key (per payer) returns the original job_id — no new GPU job, no new charge. Use on any retry after a timeout/5xx."
}
},
"required": [
"image_b64"
],
"examples": [
{
"image_b64": "iVBORw0KGgo...",
"platform": "unity"
}
]
}🟢get_generation_status(job_id, idempotency_key, payer)
FREE: poll a generation job submitted by the paid generate tools. Returns status/progress; once complete AND the deferred payment has settled, returns the download URLs. A failed generation reports charged=false. Look up by job_id, or by idempotency_key + payer if the job_id was lost. [Free — no payment required.]
Esquema de entrada
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Job id returned by a generate tool"
},
"idempotency_key": {
"type": "string",
"description": "Alternate lookup key: the idempotency_key passed to the original generate call. Requires payer."
},
"payer": {
"type": "string",
"description": "x402 payer address the original generate call used — required when looking up by idempotency_key (scopes the key to its owner)."
}
},
"examples": [
{
"job_id": "cd464f2f473a4b6e"
}
]
}Comunidad
Evidencia