Game-Asset Technical Artist

Normalise a glTF 2.0 binary (.glb) for a target engine and platform (scale, orientation, origin), generate two simplified LODs and convex/trimesh collision, and prove the result loads via a real Godot 4 headless import. Returns a report plus artifacts: normalised .glb LODs, collision data, a Godot scene, a multi-view preview, and the full JSON report. Claims are scoped to the Godot 4 import; Unity/Unreal receive glTF-convention output without import proof.

InferenceLiveeip155:8453Exactvia cdp
Game-assetsGltfGodot3d-modelsLod
Calls · 30d
1→ 0%
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 14 snapshots so far.
$2.45
Verified settled volume
23 settlements proven x402 by their on-chain EIP-3009 marker.
$0.100
Listed price
As published in the catalog. Always read the live 402 before paying.
1
Calls · 30d
Upstream's own call count for this endpoint, not ours.
1
Unique payers · 30d
Last called 2026-09-11 00:17Z
Upstream on-chain volume
Reported by the source catalog.
Paid to
0x26026370fe8b2bb17af9092a17691c76519366da

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.1USDC≈ $0.1 USD
on Base · exact scheme

Pay 0.1 USDC on Base to 0x2602…366da. The signed payment is good for 5 minutes.

USD Coin contract
0x8335…02913
Payment window
5 minutes
As published
100000 smallest units
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "version": "2"
    },
    "payTo": "0x26026370fe8b2bb17af9092a17691c76519366da",
    "amount": "100000",
    "scheme": "exact",
    "network": "eip155:8453",
    "maxTimeoutSeconds": 300
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "body": {
          "asset": "Z2xURgIAAACQCAAAlAQAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6ImdsVEYtVHJhbnNmb3JtIHY0LjUuMCIsInZlcnNpb24iOiIyLjAifSwiYWNjZXNzb3JzIjpbeyJ0eXBlIjoiVkVDMyIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMC41LDAuNSwwLjVdLCJtaW4iOlstMC41LC0wLjUsLTAuNV0sImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjB9LHsidHlwZSI6IlZFQzMiLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjEyfSx7InR5cGUiOiJWRUMyIiwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJidWZmZXJWaWV3IjoxLCJieXRlT2Zmc2V0IjoyNH0seyJ0eXBlIjoiU0NBTEFSIiwiY29tcG9uZW50VHlwZSI6NTEyMywiY291bnQiOjM2LCJidWZmZXJWaWV3IjoyLCJieXRlT2Zmc2V0IjowfV0sImJ1ZmZlclZpZXdzIjpbeyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjg0MCwiYnl0ZUxlbmd0aCI6MTUyfSx7ImJ1ZmZlciI6MCwiYnl0ZU9mZnNldCI6MCwiYnl0ZUxlbmd0aCI6NzY4LCJieXRlU3RyaWRlIjozMiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjc2OCwiYnl0ZUxlbmd0aCI6NzIsInRhcmdldCI6MzQ5NjN9XSwic2FtcGxlcnMiOlt7IndyYXBTIjoxMDQ5Nywid3JhcFQiOjEwNDk3fV0sInRleHR1cmVzIjpbeyJzb3VyY2UiOjAsInNhbXBsZXIiOjB9XSwiaW1hZ2VzIjpbeyJuYW1lIjoiY2hlY2tlciIsIm1pbWVUeXBlIjoiaW1hZ2UvcG5nIiwiYnVmZmVyVmlldyI6MH1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjo5OTJ9XSwibWF0ZXJpYWxzIjpbeyJuYW1lIjoiY3ViZS1tYXRlcmlhbCIsInBick1ldGFsbGljUm91Z2huZXNzIjp7InJvdWdobmVzc0ZhY3RvciI6MC44LCJtZXRhbGxpY0ZhY3RvciI6MCwiYmFzZUNvbG9yVGV4dHVyZSI6eyJpbmRleCI6MH19fV0sIm1lc2hlcyI6W3sibmFtZSI6ImN1YmUiLCJwcmltaXRpdmVzIjpbeyJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjowLCJOT1JNQUwiOjEsIlRFWENPT1JEXzAiOjJ9LCJtb2RlIjo0LCJtYXRlcmlhbCI6MCwiaW5kaWNlcyI6M31dfV0sIm5vZGVzIjpbeyJuYW1lIjoiY3ViZSIsIm1lc2giOjB9XSwic2NlbmVzIjpbeyJuYW1lIjoic2NlbmUiLCJub2RlcyI6WzBdfV0sInNjZW5lIjowfSAgIOADAABCSU4AAAAAPwAAAL8AAAC/AACAPwAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAPwAAAL8AAIA/AAAAAAAAAAAAAIA/AAAAAAAAAD8AAAA/AAAAPwAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAPwAAAL8AAAA/AACAPwAAAAAAAAAAAAAAAAAAgD8AAAC/AAAAvwAAAL8AAIC/AAAAAAAAAAAAAAAAAAAAAAAAAL8AAAA/AAAAvwAAgL8AAAAAAAAAAAAAgD8AAAAAAAAAvwAAAD8AAAA/AACAvwAAAAAAAAAAAACAPwAAgD8AAAC/AAAAvwAAAD8AAIC/AAAAAAAAAAAAAAAAAACAPwAAAL8AAAA/AAAAvwAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAvwAAAD8AAAA/AAAAAAAAgD8AAAAAAACAPwAAAAAAAAA/AAAAPwAAAD8AAAAAAACAPwAAAAAAAIA/AACAPwAAAD8AAAA/AAAAvwAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAvwAAAL8AAAC/AAAAAAAAgL8AAAAAAAAAAAAAAAAAAAC/AAAAvwAAAD8AAAAAAACAvwAAAAAAAIA/AAAAAAAAAD8AAAC/AAAAPwAAAAAAAIC/AAAAAAAAgD8AAIA/AAAAPwAAAL8AAAC/AAAAAAAAgL8AAAAAAAAAAAAAgD8AAAC/AAAAvwAAAD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAD8AAAC/AAAAPwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAPwAAAD8AAAA/AAAAAAAAAAAAAIA/AACAPwAAgD8AAAC/AAAAPwAAAD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAL8AAAC/AAAAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAPwAAAL8AAAC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAA/AAAAPwAAAL8AAAAAAAAAAAAAgL8AAIA/AACAPwAAAL8AAAA/AAAAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcACAAJAAoACAAKAAsADAANAA4ADAAOAA8AEAARABIAEAASABMAFAAVABYAFAAWABcAiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABlBMVEXWxKhcbHrpdFJRAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAAOElEQVR42u3UoQ0AAAgDMPj/aQyCIHEknZupmFhEJzvXDvgNGA8wYwt/YDyALQD+AOAPAP4AsIACFA8IAXCt1BQAAAAASUVORK5CYII=",
          "expect": {
            "size": {
              "axis": "y",
              "metres": 1.5,
              "tolerance": 0.05
            }
          },
          "target": {
            "size": {
              "axis": "y",
              "metres": 1.5
            },
            "engine": "godot4",
            "origin": "floor",
            "platform": "desktop",
            "collision": "convex"
          }
        },
        "type": "http",
        "method": "POST",
        "bodyType": "json"
      },
      "output": {
        "type": "json",
        "example": {
          "lods": [
            {
              "name": "asset.glb",
              "bytes": 2192,
              "error": 0,
              "ratio": 1,
              "vertices": 24,
              "triangles": 12
            },
            {
              "name": "asset-lod1.glb",
              "bytes": 2192,
              "error": 0,
              "ratio": 0.5,
              "vertices": 24,
              "triangles": 12
            },
            {
              "name": "asset-lod2.glb",
              "bytes": 2192,
              "error": 0,
              "ratio": 0.25,
              "vertices": 24,
              "triangles": 12
            }
          ],
          "tools": {
            "engine": "4.7.2.stable.official.ed1daf0bf",
            "transform": "@gltf-transform/core@4.5.0 meshoptimizer@0.24.0 sharp@0.34.5 resvg@2.6.2",
            "validator": "gltf-validator@2.0.0-dev.3.10"
          },
          "checks": [
            {
              "code": "structure_valid",
              "detail": "The glTF binary passed header, JSON, and gltf-validator structural checks.",
              "status": "passed"
            },
            {
              "code": "no_external_uris",
              "detail": "No buffer or image referenced an external (non-data:) URI.",
              "status": "passed"
            },
            {
              "code": "within_limits",
              "detail": "Triangle, material, texture, texture-pixel, and node counts are within configured limits.",
              "status": "passed"
            },
            {
              "code": "bounds_expected",
              "detail": "Expected extent along 'y' of 1.5 m; output measures 1.5000 m.",
              "status": "passed"
            },
            {
              "code": "rigged_expected",
              "detail": "No expect.rigged was declared.",
              "status": "not_checked"
            },
            {
              "code": "animations_expected",
              "detail": "No expect.minAnimations was declared.",
              "status": "not_checked"
            },
            {
              "code": "engine_loaded",
              "detail": "The output asset loaded and instantiated in Godot 4 headless.",
              "status": "passed"
            },
            {
              "code": "textures_within_budget",
              "detail": "Largest output texture edge is 64px against a 2048px budget.",
              "status": "passed"
            },
            {
              "code": "power_of_two_textures",
              "detail": "All output textures have power-of-two dimensions.",
              "status": "passed"
            },
            {
              "code": "lods_generated",
              "detail": "LOD1/LOD2 are identical to LOD0; the geometry is already below the simplifier's useful reduction threshold.",
              "status": "passed"
            },
            {
              "code": "collision_generated",
              "detail": "Convex hull has 8 vertices.",
              "status": "passed"
            }
          ],
          "output": {
            "bones": 0,
            "bytes": 2192,
            "nodes": 1,
            "skins": 0,
            "bounds": {
              "max": [
                0.75,
                1.5,
                0.75
              ],
              "min": [
                -0.75,
                0,
                -0.75
              ],
              "size": [
                1.5,
                1.5,
                1.5
              ]
            },
            "meshes": 1,
            "textures": 1,
            "vertices": 24,
            "materials": 1,
            "triangles": 12,
            "animations": 0,
            "primitives": 1,
            "maxTextureEdge": 64
          },
          "source": {
            "bones": 0,
            "bytes": 2192,
            "nodes": 1,
            "skins": 0,
            "bounds": {
              "max": [
                0.5,
                0.5,
                0.5
              ],
              "min": [
                -0.5,
                -0.5,
                -0.5
              ],
              "size": [
                1,
                1,
                1
              ]
            },
            "meshes": 1,
            "textures": 1,
            "vertices": 24,
            "materials": 1,
            "triangles": 12,
            "animations": 0,
            "primitives": 1,
            "maxTextureEdge": 64,
            "validatorErrors": 0,
            "validatorWarnings": 0
          },
          "status": "passed",
          "target": {
            "size": {
              "axis": "y",
              "metres": 1.5
            },
            "engine": "godot4",
            "origin": "floor",
            "platform": "desktop",
            "sourceUp": "y",
            "collision": "convex",
            "maxTextureSize": 2048
          },
          "repairs": [],
          "warnings": [
            "LOD simplifier could not reduce a mesh primitive below its LOD0 triangle count (12 triangles); the geometry is likely already below the simplifier's useful reduction threshold.",
            "LOD simplifier could not reduce a mesh primitive below its LOD0 triangle count (12 triangles); the geometry is likely already below the simplifier's useful reduction threshold."
          ],
          "artifacts": [
            {
              "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/asset.glb",
              "name": "asset.glb",
              "sha256": "2a0a6c99a17389b01c396387e77314d0e310b051a9d678615cf93466265a67f3",
              "mediaType": "model/gltf-binary",
              "sizeBytes": 2192
            },
            {
              "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/asset-lod1.glb",
              "name": "asset-lod1.glb",
              "sha256": "2a0a6c99a17389b01c396387e77314d0e310b051a9d678615cf93466265a67f3",
              "mediaType": "model/gltf-binary",
              "sizeBytes": 2192
            },
            {
              "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/asset-lod2.glb",
              "name": "asset-lod2.glb",
              "sha256": "2a0a6c99a17389b01c396387e77314d0e310b051a9d678615cf93466265a67f3",
              "mediaType": "model/gltf-binary",
              "sizeBytes": 2192
            },
            {
              "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/collision.json",
              "name": "collision.json",
              "sha256": "fdd3b75d3487097c27178cdca98bcac4eb4f11a543a4bcdd6ffc5be5344501a7",
              "mediaType": "application/json",
              "sizeBytes": 734
            },
            {
              "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/godot-scene.tscn",
              "name": "godot-scene.tscn",
              "sha256": "c1fb2c48896dad0573523724f75dccae20ee908ce9b4b781da13fa5d6008da49",
              "mediaType": "text/plain; charset=utf-8",
              "sizeBytes": 718
            },
            {
              "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/preview.png",
              "name": "preview.png",
              "sha256": "47b2fd78499eaa90802e7b6cb6975eb768d9265aa4e09f2f44b8e2b0dd265cb8",
              "mediaType": "image/png",
              "sizeBytes": 58228
            },
            {
              "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/report.json",
              "name": "report.json",
              "sha256": "a0cbca1d625aa46f23af80b57a8b98db3e1f77d424cce01643d0b8aec80ad853",
              "mediaType": "application/json",
              "sizeBytes": 5351
            }
          ],
          "collision": {
            "kind": "convex",
            "trimeshTriangles": 0,
            "convexHullVertices": 8
          },
          "expiresAt": "2026-01-04T03:04:05.000Z",
          "truncated": false,
          "validator": [],
          "engineLoad": {
            "nodes": 2,
            "engine": "4.7.2.stable.official.ed1daf0bf",
            "errors": [],
            "loaded": true,
            "materials": 1,
            "skeletons": 0,
            "animations": [],
            "meshInstances": 1
          },
          "limitations": [
            "No Unity or Unreal import is executed; for those engines the asset is normalised to standard glTF conventions their importers expect, not verified by running an actual Unity/Unreal import.",
            "Draco, EXT_meshopt_compression, and KTX2 (KHR_texture_basisu) inputs are rejected in v1; only embedded, uncompressed glTF geometry and PNG/JPEG textures are accepted.",
            "Normal-map and other non-colour texture colour space is not verified; textures are resized without reinterpreting their intended colour space.",
            "LOD error is the meshoptimizer geometric error bound actually reached (as a fraction of mesh radius), not a measure of visual/perceptual difference, and is not a proof the LODs are optimal.",
            "Godot's collision generation operates on the LOD0 mesh merged into one shape; per-part or compound collision shapes are not produced."
          ],
          "normalization": {
            "scale": 1.5,
            "translation": [
              0,
              0.75,
              0
            ],
            "rotationXDegrees": 0
          }
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method",
            "bodyType",
            "body"
          ],
          "properties": {
            "body": {
              "type": "object",
              "$defs": {
                "axis": {
                  "enum": [
                    "y",
                    "z"
                  ],
                  "type": "string"
                },
                "size": {
                  "type": "object",
                  "required": [
                    "axis",
                    "metres"
                  ],
                  "properties": {
                    "axis": {
                      "$ref": "#/properties/input/properties/body/$defs/sizeAxis"
                    },
                    "metres": {
                      "type": "number",
                      "maximum": 1000,
                      "exclusiveMinimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "target": {
                  "type": "object",
                  "required": [
                    "engine",
                    "platform"
                  ],
                  "properties": {
                    "size": {
                      "$ref": "#/properties/input/properties/body/$defs/size",
                      "description": "Desired extent in metres along `axis` after normalisation; omitted keeps the source scale."
                    },
                    "engine": {
                      "enum": [
                        "godot4",
                        "unity",
                        "unreal",
                        "gltf"
                      ],
                      "type": "string"
                    },
                    "origin": {
                      "enum": [
                        "keep",
                        "center",
                        "floor"
                      ],
                      "type": "string",
                      "default": "keep",
                      "description": "Where the origin ends up: unchanged, the bounds centre, or the centre of the bottom face."
                    },
                    "platform": {
                      "enum": [
                        "mobile",
                        "desktop"
                      ],
                      "type": "string"
                    },
                    "sourceUp": {
                      "$ref": "#/properties/input/properties/body/$defs/axis",
                      "default": "y",
                      "description": "The source's up axis when known to be Z-up (Blender/Max exports); glTF is Y-up by default."
                    },
                    "collision": {
                      "$ref": "#/properties/input/properties/body/$defs/collision",
                      "default": "convex",
                      "description": "Generate collision: none, a convex hull, or a convex hull plus a static trimesh."
                    },
                    "maxTextureSize": {
                      "type": "integer",
                      "maximum": 8192,
                      "minimum": 1,
                      "description": "Maximum texture edge in pixels; defaults per platform (mobile 1024, desktop 2048) when omitted."
                    }
                  },
                  "additionalProperties": false
                },
                "sizeAxis": {
                  "enum": [
                    "x",
                    "y",
                    "z",
                    "max"
                  ],
                  "type": "string"
                },
                "collision": {
                  "enum": [
                    "none",
                    "convex",
                    "convex+trimesh"
                  ],
                  "type": "string"
                }
              },
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "required": [
                "asset",
                "target"
              ],
              "properties": {
                "asset": {
                  "type": "string",
                  "maxLength": 5592408,
                  "minLength": 1,
                  "description": "Base64-encoded glTF 2.0 binary (.glb) with embedded textures only (external URIs are rejected); decoded size must not exceed 4194304 bytes.",
                  "contentEncoding": "base64"
                },
                "expect": {
                  "type": "object",
                  "properties": {
                    "size": {
                      "type": "object",
                      "required": [
                        "axis",
                        "metres"
                      ],
                      "properties": {
                        "axis": {
                          "$ref": "#/properties/input/properties/body/$defs/sizeAxis"
                        },
                        "metres": {
                          "type": "number",
                          "maximum": 1000,
                          "exclusiveMinimum": 0
                        },
                        "tolerance": {
                          "type": "number",
                          "default": 0.05,
                          "maximum": 0.5,
                          "minimum": 0
                        }
                      },
                      "description": "Expected extent in metres along `axis`, checked within `tolerance` (a fraction).",
                      "additionalProperties": false
                    },
                    "rigged": {
                      "type": "boolean",
                      "description": "Require a skeleton (skinned character) to be present."
                    },
                    "minAnimations": {
                      "type": "integer",
                      "maximum": 64,
                      "minimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "target": {
                  "$ref": "#/properties/input/properties/body/$defs/target"
                }
              },
              "additionalProperties": false
            },
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "POST"
              ],
              "type": "string"
            },
            "bodyType": {
              "enum": [
                "json",
                "form-data",
                "text"
              ],
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object",
              "$defs": {
                "lod": {
                  "type": "object",
                  "required": [
                    "name",
                    "ratio",
                    "triangles",
                    "vertices",
                    "bytes",
                    "error"
                  ],
                  "properties": {
                    "name": {
                      "enum": [
                        "asset.glb",
                        "asset-lod1.glb",
                        "asset-lod2.glb"
                      ],
                      "type": "string"
                    },
                    "bytes": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "error": {
                      "type": "number",
                      "minimum": 0
                    },
                    "ratio": {
                      "type": "number",
                      "maximum": 1,
                      "minimum": 0
                    },
                    "vertices": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "triangles": {
                      "type": "integer",
                      "maximum": 250000,
                      "minimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "check": {
                  "type": "object",
                  "required": [
                    "code",
                    "status",
                    "detail"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string",
                      "maxLength": 2048
                    },
                    "status": {
                      "enum": [
                        "passed",
                        "failed",
                        "not_checked"
                      ],
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "bounds": {
                  "type": "object",
                  "required": [
                    "min",
                    "max",
                    "size"
                  ],
                  "properties": {
                    "max": {
                      "$ref": "#/properties/output/properties/example/$defs/vector3"
                    },
                    "min": {
                      "$ref": "#/properties/output/properties/example/$defs/vector3"
                    },
                    "size": {
                      "$ref": "#/properties/output/properties/example/$defs/vector3"
                    }
                  },
                  "additionalProperties": false
                },
                "target": {
                  "type": "object",
                  "required": [
                    "engine",
                    "platform",
                    "sourceUp",
                    "origin",
                    "collision"
                  ],
                  "properties": {
                    "size": {
                      "type": "object",
                      "required": [
                        "axis",
                        "metres"
                      ],
                      "properties": {
                        "axis": {
                          "enum": [
                            "x",
                            "y",
                            "z",
                            "max"
                          ],
                          "type": "string"
                        },
                        "metres": {
                          "type": "number",
                          "maximum": 1000,
                          "exclusiveMinimum": 0
                        }
                      },
                      "additionalProperties": false
                    },
                    "engine": {
                      "enum": [
                        "godot4",
                        "unity",
                        "unreal",
                        "gltf"
                      ],
                      "type": "string"
                    },
                    "origin": {
                      "enum": [
                        "keep",
                        "center",
                        "floor"
                      ],
                      "type": "string"
                    },
                    "platform": {
                      "enum": [
                        "mobile",
                        "desktop"
                      ],
                      "type": "string"
                    },
                    "sourceUp": {
                      "enum": [
                        "y",
                        "z"
                      ],
                      "type": "string"
                    },
                    "collision": {
                      "$ref": "#/properties/output/properties/example/$defs/collision"
                    },
                    "maxTextureSize": {
                      "type": "integer",
                      "maximum": 8192,
                      "minimum": 1
                    }
                  },
                  "additionalProperties": false
                },
                "vector3": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  },
                  "maxItems": 3,
                  "minItems": 3
                },
                "artifact": {
                  "type": "object",
                  "required": [
                    "name",
                    "mediaType",
                    "sizeBytes",
                    "sha256",
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "type": "string",
                      "format": "uri"
                    },
                    "name": {
                      "enum": [
                        "asset.glb",
                        "asset-lod1.glb",
                        "asset-lod2.glb",
                        "collision.json",
                        "godot-scene.tscn",
                        "preview.png",
                        "report.json"
                      ],
                      "type": "string"
                    },
                    "sha256": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{64}$"
                    },
                    "mediaType": {
                      "type": "string",
                      "maxLength": 128,
                      "minLength": 1
                    },
                    "sizeBytes": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "collision": {
                  "enum": [
                    "none",
                    "convex",
                    "convex+trimesh"
                  ],
                  "type": "string"
                }
              },
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "required": [
                "status",
                "tools",
                "target",
                "source",
                "output",
                "normalization",
                "lods",
                "collision",
                "engineLoad",
                "repairs",
                "checks",
                "validator",
                "warnings",
                "limitations",
                "truncated",
                "expiresAt",
                "artifacts"
              ],
              "properties": {
                "lods": {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/output/properties/example/$defs/lod"
                  },
                  "maxItems": 3,
                  "minItems": 1
                },
                "tools": {
                  "type": "object",
                  "required": [
                    "validator",
                    "transform",
                    "engine"
                  ],
                  "properties": {
                    "engine": {
                      "type": "string"
                    },
                    "transform": {
                      "type": "string"
                    },
                    "validator": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "checks": {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/output/properties/example/$defs/check"
                  },
                  "maxItems": 32
                },
                "output": {
                  "type": "object",
                  "required": [
                    "triangles",
                    "vertices",
                    "primitives",
                    "meshes",
                    "nodes",
                    "materials",
                    "textures",
                    "maxTextureEdge",
                    "skins",
                    "bones",
                    "animations",
                    "bytes",
                    "bounds"
                  ],
                  "properties": {
                    "bones": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "bytes": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "nodes": {
                      "type": "integer",
                      "maximum": 2000,
                      "minimum": 0
                    },
                    "skins": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "bounds": {
                      "$ref": "#/properties/output/properties/example/$defs/bounds"
                    },
                    "meshes": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "textures": {
                      "type": "integer",
                      "maximum": 32,
                      "minimum": 0
                    },
                    "vertices": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "materials": {
                      "type": "integer",
                      "maximum": 32,
                      "minimum": 0
                    },
                    "triangles": {
                      "type": "integer",
                      "maximum": 250000,
                      "minimum": 0
                    },
                    "animations": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "primitives": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "maxTextureEdge": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "source": {
                  "type": "object",
                  "required": [
                    "triangles",
                    "vertices",
                    "primitives",
                    "meshes",
                    "nodes",
                    "materials",
                    "textures",
                    "maxTextureEdge",
                    "skins",
                    "bones",
                    "animations",
                    "bytes",
                    "bounds",
                    "validatorErrors",
                    "validatorWarnings"
                  ],
                  "properties": {
                    "bones": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "bytes": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "nodes": {
                      "type": "integer",
                      "maximum": 2000,
                      "minimum": 0
                    },
                    "skins": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "bounds": {
                      "$ref": "#/properties/output/properties/example/$defs/bounds"
                    },
                    "meshes": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "textures": {
                      "type": "integer",
                      "maximum": 32,
                      "minimum": 0
                    },
                    "vertices": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "materials": {
                      "type": "integer",
                      "maximum": 32,
                      "minimum": 0
                    },
                    "triangles": {
                      "type": "integer",
                      "maximum": 250000,
                      "minimum": 0
                    },
                    "animations": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "primitives": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "maxTextureEdge": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "validatorErrors": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "validatorWarnings": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "status": {
                  "enum": [
                    "passed",
                    "failed"
                  ],
                  "type": "string"
                },
                "target": {
                  "$ref": "#/properties/output/properties/example/$defs/target"
                },
                "repairs": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "code",
                      "detail"
                    ],
                    "properties": {
                      "code": {
                        "type": "string",
                        "maxLength": 128
                      },
                      "detail": {
                        "type": "string",
                        "maxLength": 2048
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxItems": 100
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 4096
                  },
                  "maxItems": 100
                },
                "artifacts": {
                  "type": "array",
                  "items": {
                    "$ref": "#/properties/output/properties/example/$defs/artifact"
                  },
                  "maxItems": 7
                },
                "collision": {
                  "type": "object",
                  "required": [
                    "kind",
                    "convexHullVertices",
                    "trimeshTriangles"
                  ],
                  "properties": {
                    "kind": {
                      "$ref": "#/properties/output/properties/example/$defs/collision"
                    },
                    "trimeshTriangles": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "convexHullVertices": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "expiresAt": {
                  "type": "string",
                  "format": "date-time"
                },
                "truncated": {
                  "type": "boolean"
                },
                "validator": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "severity",
                      "code",
                      "message",
                      "pointer"
                    ],
                    "properties": {
                      "code": {
                        "type": "string",
                        "maxLength": 128
                      },
                      "message": {
                        "type": "string",
                        "maxLength": 2048
                      },
                      "pointer": {
                        "type": "string",
                        "maxLength": 512
                      },
                      "severity": {
                        "enum": [
                          "error",
                          "warning",
                          "info"
                        ],
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxItems": 100
                },
                "engineLoad": {
                  "type": "object",
                  "required": [
                    "engine",
                    "loaded",
                    "nodes",
                    "meshInstances",
                    "materials",
                    "skeletons",
                    "animations",
                    "errors"
                  ],
                  "properties": {
                    "nodes": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "engine": {
                      "type": "string"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "maxLength": 2048
                      },
                      "maxItems": 64
                    },
                    "loaded": {
                      "type": "boolean"
                    },
                    "materials": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "skeletons": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "animations": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "maxLength": 256
                      },
                      "maxItems": 256
                    },
                    "meshInstances": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "additionalProperties": false
                },
                "limitations": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 4096
                  },
                  "maxItems": 16
                },
                "normalization": {
                  "type": "object",
                  "required": [
                    "scale",
                    "rotationXDegrees",
                    "translation"
                  ],
                  "properties": {
                    "scale": {
                      "type": "number"
                    },
                    "translation": {
                      "$ref": "#/properties/output/properties/example/$defs/vector3"
                    },
                    "rotationXDegrees": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          }
        }
      }
    }
  },
  "builder-code": {
    "info": {
      "s": [
        "cdp_sdk_server"
      ]
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "a": {
          "type": "string",
          "pattern": "^[a-z0-9_]{1,32}$",
          "description": "App builder code"
        },
        "s": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,32}$"
          },
          "maxItems": 11,
          "description": "Service builder codes"
        },
        "w": {
          "type": "string",
          "pattern": "^[a-z0-9_]{1,32}$",
          "description": "Wallet builder code"
        }
      },
      "additionalProperties": false
    }
  },
  "payment-identifier": {
    "info": {
      "required": true
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "required"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9_-]+$",
          "maxLength": 128,
          "minLength": 16
        },
        "required": {
          "type": "boolean"
        }
      }
    }
  },
  "eip2612GasSponsoring": {},
  "erc20ApprovalGasSponsoring": {}
}

Provenance

Seen in the source catalog
2026-09-11 00:17Z
Last indexed by Roundhouse
2026-09-24 12:50Z
Last enriched (probe, favicon, geo)
2026-09-11 00:45Z
x402 version
2
Max timeout
300s
Liveness probe
HTTP 404
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 14 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service Game-Asset Technical Artist and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=Game-Asset%20Technical%20Artist'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://asset.api.williamrobinson.dev/v1/asset/prepare, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402,
or use an organization key from https://roundhouseai.io/dashboard/team.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.