{"api":"v1","generated_at":"2026-09-15T18:53:00.247Z","licence":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/","attribution":"TOLL, with a link to the page cited"},"page":"https://tollindex.com/e/asset-api-williamrobinson-dev-v1-asset-prepare-756fc8","pinned_page":"https://tollindex.com/e/asset-api-williamrobinson-dev-v1-asset-prepare-756fc8/at/2026-09-15T16-57Z","pinned":false,"method":"https://tollindex.com/ledger/method","snapshot_at":"2026-09-15T16:57:44.360Z","snapshot_stamp":"2026-09-15T16-57Z","endpoint":{"slug":"asset-api-williamrobinson-dev-v1-asset-prepare-756fc8","canonical_url":"https://asset.api.williamrobinson.dev/v1/asset/prepare","resource":"https://asset.api.williamrobinson.dev/v1/asset/prepare","http_method":"POST","type":"http","x402_version":2,"registries":["cdp"],"primary_registry":"cdp","curated_by_coinbase":false,"description":"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.","service_name":"Game-Asset Technical Artist","declared_category":null,"declared_tags":["game-assets","gltf","godot","3d-models","lod"],"route_template":null,"registry_updated":"2026-09-11T00:17:09.980Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"asset prepare","category":"inference","first_observed_by_toll":"2026-09-11T03:04:09.041Z","last_observed_by_toll":"2026-09-15T16:57:44.360Z","observation_began":"2026-09-10"},"presence":{"listed_now":true,"first_absent_at":null,"delisting_confirmed_at":null,"events":[{"registry":"cdp","at":"2026-09-11T03:04:09.041Z","event":"listed"}]},"accepts":[{"registry":"cdp","ordinal":0,"network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","asset_name":"USD Coin","symbol":"USDC","decimals":6,"amount_display":"0.1 USDC","amount_units":0.1,"decimals_known":true,"pay_to":"0x26026370fe8b2bb17af9092a17691c76519366da","scheme":"exact"}],"counters":{"observed_at":"2026-09-15T16:57:44.360Z","calls_30d":1,"unique_payers_30d":1,"last_called_at":"2026-09-11T00:17:09.409Z"},"validation":{"latest":{"observed_at":"2026-09-15T05:32:00.642Z","state":"pass","failed_checks":[],"endpoint_http_status":402,"run_id":"daily-2026-09-15"},"uptime":[{"days":7,"observed":5,"passed":5,"ratio":1},{"days":30,"observed":5,"passed":5,"ratio":1},{"days":90,"observed":5,"passed":5,"ratio":1}],"history_90d":[{"observed_at":"2026-09-15T05:32:00.642Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-15","state_changed":false},{"observed_at":"2026-09-14T05:05:37.927Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-14","state_changed":false},{"observed_at":"2026-09-13T05:02:06.209Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-13","state_changed":false},{"observed_at":"2026-09-12T07:18:08.990Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-12","state_changed":false},{"observed_at":"2026-09-11T10:59:14.354Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-11","state_changed":true}]},"seller":{"wallet":"0x26026370fe8b2bb17af9092a17691c76519366da","page":"https://tollindex.com/seller/0x26026370fe8b2bb17af9092a17691c76519366da","endpoints":12,"hosts":12},"reports":0,"registry_record":{"cdp":[{"tags":["game-assets","gltf","godot","3d-models","lod"],"type":"http","accepts":[{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","version":"2"},"payTo":"0x26026370fe8b2bb17af9092a17691c76519366da","amount":"100000","scheme":"exact","network":"eip155:8453","maxTimeoutSeconds":300}],"quality":{"lastCalledAt":"2026-09-11T00:17:09.409Z","l30DaysTotalCalls":1,"l30DaysUniquePayers":1},"resource":"https://asset.api.williamrobinson.dev/v1/asset/prepare","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":{}},"description":"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.","lastUpdated":"2026-09-11T00:17:09.98Z","serviceName":"Game-Asset Technical Artist","x402Version":2}]}}