Server definition
- Hash
- sha256:7c2ae415070a0edd4d3b9007e27bf4ae1ae99686357668df11c9b165d32c902f
- What it is
- What a remote MCP server returned when asked what it offers: 14 tools
The blob, as servednamed by its sha256
{
"instructions": "AXIS Avatar Foundry turns text prompts or reference images into production 3D assets (GLB + engine-target exports, 38-rule validated, SHA-256 provenance chain).\n\nFree tools: axis_list_capabilities, get_generation_status, tools/list — discovery and job polling never require payment.\n\nPaid tools (hosted /mcp endpoint, unauthenticated callers): priced per call in USDC via the x402 protocol (MCP transport). Call without payment to receive a tool result with isError true whose structuredContent is the x402 PaymentRequired object (exact price and requirements); sign an EIP-3009 USDC authorization and retry the identical call with the payment payload in params._meta[\"x402/payment\"]. Settlement proof returns in result._meta[\"x402/payment-response\"]. Plain x402 HTTP clients instead get HTTP 402 with a PAYMENT-REQUIRED header and retry with PAYMENT-SIGNATURE. An errored tool call is never charged. Generation tools (generate_avatar_from_text $5.00, generate_avatar_from_image $6.00) use DEFERRED settlement: you are charged only when the generation job actually completes — poll get_generation_status (free) for progress, settlement proof, and the download URL. A failed generation is never charged.\n\nAccount holders: authenticated callers (portal Bearer / API key) bypass x402 entirely and can also use POST /api/generate with token billing — same pipeline.",
"tools": [
{
"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.]",
"inputSchema": {
"examples": [
{
"file_a": "avatars/hero_v1.glb",
"file_b": "avatars/hero_v2.glb"
}
],
"properties": {
"file_a": {
"description": "Path to first mesh file",
"type": "string"
},
"file_b": {
"description": "Path to second mesh file",
"type": "string"
},
"sections": {
"description": "Limit comparison to specific contract sections",
"type": "array"
}
},
"required": [
"file_a",
"file_b"
],
"type": "object"
},
"name": "axis_compare",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"file_path": "avatars/hero.glb",
"platform": "godot"
}
],
"properties": {
"file_path": {
"description": "Path to mesh file",
"type": "string"
},
"platform": {
"description": "Target platform",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
],
"type": "string"
}
},
"required": [
"file_path",
"platform"
],
"type": "object"
},
"name": "axis_export",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"file_path": "avatars/hero.glb"
}
],
"properties": {
"file_path": {
"description": "Path to mesh file",
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"name": "axis_inspect",
"outputSchema": null
},
{
"description": "List all AXIS Foundry capabilities (input formats, export platforms, validation rules). [Free — no payment required.]",
"inputSchema": {
"examples": [
{
"kind": "export_platform"
}
],
"properties": {
"kind": {
"description": "Filter by capability kind",
"enum": [
"input_format",
"export_platform",
"validation_rule"
],
"type": "string"
}
},
"type": "object"
},
"name": "axis_list_capabilities",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"expected_hash": "…",
"manifest": {
"artifact_hash": "…",
"platform": "unity"
}
}
],
"properties": {
"expected_hash": {
"description": "Expected content hash for verification",
"type": "string"
},
"manifest": {
"description": "Export manifest JSON object",
"type": "object"
}
},
"required": [
"manifest"
],
"type": "object"
},
"name": "axis_manifest_verify",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"export": true,
"file_path": "avatars/hero.glb",
"platform": "unreal"
}
],
"properties": {
"export": {
"description": "Also export to the target platform",
"type": "boolean"
},
"file_path": {
"description": "Path to mesh file",
"type": "string"
},
"platform": {
"description": "Target platform",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
],
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"name": "axis_process",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"file_path": "avatars/hero.glb",
"platform": "unity",
"profile": "strict"
}
],
"properties": {
"file_path": {
"description": "Path to mesh file (.glb, .obj, .stl, etc.)",
"type": "string"
},
"platform": {
"description": "Target platform for platform-specific validation",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
],
"type": "string"
},
"profile": {
"description": "Validation strictness profile",
"enum": [
"default",
"strict",
"lenient"
],
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"name": "axis_validate",
"outputSchema": null
},
{
"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).]",
"inputSchema": {
"examples": [
{
"image_b64": "iVBORw0KGgo...",
"platform": "unity"
}
],
"properties": {
"asset_kind": {
"description": "Asset taxonomy",
"enum": [
"avatar",
"prop",
"vehicle",
"environment",
"creature",
"weapon_armor",
"character_accessory",
"generic"
],
"type": "string"
},
"idempotency_key": {
"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.",
"type": "string"
},
"image_b64": {
"description": "Base64-encoded reference image (PNG/JPEG)",
"type": "string"
},
"platform": {
"description": "Target engine (adds rigging + engine export)",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
],
"type": "string"
},
"polygon_tier": {
"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"
],
"type": "string"
},
"prompt": {
"description": "Optional style/subject hint alongside the image",
"type": "string"
},
"texture_size": {
"description": "Texture bake size in px (defaults per platform, else 2048)",
"type": "number"
}
},
"required": [
"image_b64"
],
"type": "object"
},
"name": "generate_avatar_from_image",
"outputSchema": null
},
{
"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).]",
"inputSchema": {
"examples": [
{
"platform": "unity",
"prompt": "a friendly adventurer character, fantasy game hero"
}
],
"properties": {
"asset_kind": {
"description": "Asset taxonomy",
"enum": [
"avatar",
"prop",
"vehicle",
"environment",
"creature",
"weapon_armor",
"character_accessory",
"generic"
],
"type": "string"
},
"idempotency_key": {
"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.",
"type": "string"
},
"platform": {
"description": "Target engine (adds rigging + engine export)",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
],
"type": "string"
},
"polygon_tier": {
"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"
],
"type": "string"
},
"prompt": {
"description": "What to generate (subject description)",
"type": "string"
},
"texture_size": {
"description": "Texture bake size in px (defaults per platform, else 2048)",
"type": "number"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "generate_avatar_from_text",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"job_id": "cd464f2f473a4b6e"
}
],
"properties": {
"idempotency_key": {
"description": "Alternate lookup key: the idempotency_key passed to the original generate call. Requires payer.",
"type": "string"
},
"job_id": {
"description": "Job id returned by a generate tool",
"type": "string"
},
"payer": {
"description": "x402 payer address the original generate call used — required when looking up by idempotency_key (scopes the key to its owner).",
"type": "string"
}
},
"type": "object"
},
"name": "get_generation_status",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"asset_kind": "avatar",
"glb_base64": "Z2xURgIAAAA...",
"platform": "roblox"
}
],
"properties": {
"asset_kind": {
"description": "Asset kind (skinning auto-on for avatar only)",
"enum": [
"avatar",
"prop",
"vehicle",
"environment",
"creature",
"weapon_armor",
"character_accessory",
"generic"
],
"type": "string"
},
"glb_base64": {
"description": "Base64-encoded raw binary GLB to post-process. Provide exactly one of glb_base64 or mesh_url.",
"type": "string"
},
"mesh_url": {
"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.",
"type": "string"
},
"platform": {
"description": "Target engine platform (adds export validation)",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
],
"type": "string"
},
"polygon_tier": {
"description": "Decimation tier for the output mesh",
"type": "string"
},
"run_skinning": {
"description": "Override skinning (default: avatars only)",
"type": "boolean"
}
},
"type": "object"
},
"name": "post_process_mesh",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"file_path": "raw_scans/statue.obj",
"scale_unit": "centimeters",
"up_axis": "Z"
}
],
"properties": {
"file_path": {
"description": "Path to mesh file",
"type": "string"
},
"fix_normals": {
"description": "Recalculate missing normals",
"type": "boolean"
},
"remove_degenerates": {
"description": "Remove zero-area triangles",
"type": "boolean"
},
"scale_unit": {
"description": "Source scale unit",
"enum": [
"meters",
"centimeters",
"millimeters",
"inches",
"feet"
],
"type": "string"
},
"up_axis": {
"description": "Source up axis",
"enum": [
"Y",
"Z",
"-Z",
"X",
"-Y"
],
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"name": "repair_mesh",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"clip_name": "walk_cycle",
"platform": "unreal"
}
],
"properties": {
"clip_name": {
"description": "Built-in clip name from animation library",
"type": "string"
},
"drop_unmapped": {
"description": "Drop channels not found in the target mapping",
"type": "boolean"
},
"platform": {
"description": "Target platform mapping",
"enum": [
"unity",
"unreal",
"godot",
"roblox",
"axis_engine"
],
"type": "string"
}
},
"required": [
"clip_name",
"platform"
],
"type": "object"
},
"name": "retarget_animation",
"outputSchema": null
},
{
"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.]",
"inputSchema": {
"examples": [
{
"file_path": "avatars/hero.glb"
}
],
"properties": {
"file_path": {
"description": "Path to mesh file",
"type": "string"
}
},
"required": [
"file_path"
],
"type": "object"
},
"name": "roblox_compliance_check",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:7c2ae415070a0edd4d3b9007e27bf4ae1ae99686357668df11c9b165d32c902f | sha256sum