AXIS Avatar Foundry
3D avatar/asset foundry: text/image -> rigged, validated, engine-ready GLB via x402.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"axis-avatar-foundry": {
"url": "https://api.avatar.jonathanarvay.com/mcp"
}
}
}遠端端點
https://api.avatar.jonathanarvay.com/mcpstreamable-http它能做什麼
工具清單
工具(14)
🟢axis_list_capabilities(kind)
List all AXIS Foundry capabilities (input formats, export platforms, validation rules). [Free — no payment required.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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.]
輸入結構描述
{
"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).]
輸入結構描述
{
"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).]
輸入結構描述
{
"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.]
輸入結構描述
{
"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"
}
]
}社群
證據