ToolAssay

Normalise a glTF 2.0 binary (.glb) for a target engine and platform (scale, orie

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.

Answeringour last check, 2026-09-24
1 of 1checks answered this week
610 msmedian answer time
$0.1listed price per call
$0.1price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://asset.api.williamrobinson.dev/v1/asset/prepare

CategoryEverything else
Provider hostasset.api.williamrobinson.dev
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-09-24 valid payment request 402$0.1 610 ms

Example input (from the provider)

{
  "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": {
      "collision": "convex",
      "engine": "godot4",
      "origin": "floor",
      "platform": "desktop",
      "size": {
        "axis": "y",
        "metres": 1.5
      }
    }
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "$defs": {
            "axis": {
              "enum": [
                "y",
                "z"
              ],
              "type": "string"
            },
            "collision": {
              "enum": [
                "none",
                "convex",
                "convex+trimesh"
              ],
              "type": "string"
            },
            "size": {
              "additionalProperties": false,
              "properties": {
                "axis": {
                  "$ref": "#/properties/input/properties/body/$defs/sizeAxis"
                },
                "metres": {
                  "exclusiveMinimum": 0,
                  "maximum": 1000,
                  "type": "number"
                }
              },
              "required": [
                "axis",
                "metres"
              ],
              "type": "object"
            },
            "sizeAxis": {
              "enum": [
                "x",
                "y",
                "z",
                "max"
              ],
              "type": "string"
            },
            "target": {
              "additionalProperties": false,
              "properties": {
                "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."
                },
                "engine": {
                  "enum": [
                    "godot4",
                    "unity",
                    "unreal",
                    "gltf"
                  ],
                  "type": "string"
                },
                "maxTextureSize": {
                  "description": "Maximum texture edge in pixels; defaults per platform (mobile 1024, desktop 2048) when omitted.",
                  "maximum": 8192,
                  "minimum": 1,
                  "type": "integer"
                },
                "origin": {
                  "default": "keep",
                  "description": "Where the origin ends up: unchanged, the bounds centre, or the centre of the bottom face.",
                  "enum": [
                    "keep",
                    "center",
                    "floor"
                  ],
                  "type": "string"
                },
                "platform": {
                  "enum": [
                    "mobile",
                    "desktop"
                  ],
                  "type": "string"
                },
                "size": {
                  "$ref": "#/properties/input/properties/body/$defs/size",
                  "description": "Desired extent in metres along `axis` after normalisation; omitted keeps the source scale."
                },
                "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."
                }
              },
              "required": [
                "engine",
                "platform"
              ],
              "type": "object"
            }
          },
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "additionalProperties": false,
          "properties": {
            "asset": {
              "contentEncoding": "base64",
              "description": "Base64-encoded glTF 2.0 binary (.glb) with embedded textures only (external URIs are rejected); decoded size must not exceed 4194304 bytes.",
              "maxLength": 5592408,
              "minLength": 1,
              "type": "string"
            },
            "expect": {
              "additionalProperties": false,
              "properties": {
                "minAnimations": {
                  "maximum": 64,
                  "minimum": 0,
                  "type": "integer"
                },
                "rigged": {
                  "description": "Require a skeleton (skinned character) to be present.",
                  "type": "boolean"
                },
                "size": {
                  "additionalProperties": false,
                  "description": "Expected extent in metres along `axis`, checked within `tolerance` (a fraction).",
                  "properties": {
                    "axis": {
                      "$ref": "#/properties/input/properties/body/$defs/sizeAxis"
                    },
                    "metres": {
                      "exclusiveMinimum": 0,
                      "maximum": 1000,
                      "type": "number"
                    },
                    "tolerance": {
                      "default": 0.05,
                      "maximum": 0.5,
                      "minimum": 0,
                      "type": "number"
                    }
                  },
                  "required": [
                    "axis",
                    "metres"
                  ],
                  "type": "object"
                }
              },
              "type": "object"
            },
            "target": {
              "$ref": "#/properties/input/properties/body/$defs/target"
            }
          },
          "required": [
            "asset",
            "target"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
     

This page as JSON