{"name":"com.jonathanarvay/axis-avatar-foundry","slug":"jonathanarvay-axis-avatar-foundry","title":"AXIS Avatar Foundry","description":"3D avatar/asset foundry: text/image -> rigged, validated, engine-ready GLB via x402.","url":"https://mcp.market/server/jonathanarvay-axis-avatar-foundry","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"media","tags":["media"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T06:21:28.519Z","last_ok_at":"2026-09-24T06:21:28.519Z","latency_ms":381},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://avatar.jonathanarvay.com","version":"0.4.0","remotes":[{"type":"streamable-http","url":"https://api.avatar.jonathanarvay.com/mcp"}],"packages":[],"tools":[{"name":"axis_compare","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"axis_export","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"axis_inspect","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"file_path":{"type":"string","description":"Path to mesh file"}},"required":["file_path"],"examples":[{"file_path":"avatars/hero.glb"}]}},{"name":"axis_list_capabilities","description":"List all AXIS Foundry capabilities (input formats, export platforms, validation rules). [Free — no payment required.]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"kind":{"type":"string","description":"Filter by capability kind","enum":["input_format","export_platform","validation_rule"]}},"examples":[{"kind":"export_platform"}]}},{"name":"axis_manifest_verify","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"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":"…"}]}},{"name":"axis_process","description":"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.]","write_action":true,"price_micros":0,"input_schema":{"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}]}},{"name":"axis_validate","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"generate_avatar_from_image","description":"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).]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"generate_avatar_from_text","description":"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).]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"get_generation_status","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"post_process_mesh","description":"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.]","write_action":true,"price_micros":0,"input_schema":{"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"}]}},{"name":"repair_mesh","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"retarget_animation","description":"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.]","write_action":false,"price_micros":0,"input_schema":{"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"}]}},{"name":"roblox_compliance_check","description":"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.]","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"file_path":{"type":"string","description":"Path to mesh file"}},"required":["file_path"],"examples":[{"file_path":"avatars/hero.glb"}]}}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-24T05:04:16.948Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:04:16.936Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 722ms"]},"poisoning":{"score":15,"max":15,"notes":["14 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://api.avatar.jonathanarvay.com/mcp","reachable":true,"authRequired":false,"latencyMs":722,"serverInfo":{"name":"axis-foundry","version":"0.4.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://jonathanarvay.com/favicon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}