Rengi Forge
Gamedev tools for AI agents: level design, renders, sprites, GLB optimizer. Pay per call with x402.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (3)
- LOWin forge_help
- LOWin level_design_revise
- LOWin level_design_revise_2d
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"rengi-forge": {
"url": "https://rengi.dev/mcp"
}
}
}Remote-Endpunkte
https://rengi.dev/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (36)
⚪forge_help
What Rengi Forge offers, prices and how payment works. Free.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪level_design_catalog(assets, upAxis)
Ingest your prop catalog: footprint, height, pivot and category computed from each GLB. Returns a catalogId for place. Price: $0.50 USDC via x402, charged only on success. Part of Level design: Level dressing for 3D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"assets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Your prefab / asset name. Placements refer to it."
},
"glb": {
"type": "string",
"description": "Base64 GLB. Footprint, height and pivot are computed from the mesh."
},
"glbUrl": {
"type": "string",
"format": "uri",
"description": "URL of a GLB, used when glb is not given."
},
"bounds": {
"type": "object",
"properties": {
"min": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
]
},
"max": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
]
}
},
"required": [
"min",
"max"
],
"additionalProperties": false,
"description": "Meters, model space, Y up. Used only when no mesh is given."
},
"category": {
"type": "string",
"enum": [
"house",
"tree",
"rock",
"bush",
"fence",
"wall",
"prop",
"light",
"path",
"water",
"other"
],
"description": "Overrides automatic classification."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 20
}
},
"required": [
"id"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 300
},
"upAxis": {
"type": "string",
"enum": [
"y",
"z"
],
"default": "y"
}
},
"required": [
"assets"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪level_design_place(catalogId, catalog, layout, heightmap, brief, ...)
Dress a level: placements for every zone, previews and a 3D viewer link. Price: $1.00 USDC via x402, charged only on success. Part of Level design: Level dressing for 3D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"catalogId": {
"type": "string"
},
"catalog": {
"type": "object",
"properties": {
"assets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Your prefab / asset name. Placements refer to it."
},
"glb": {
"type": "string",
"description": "Base64 GLB. Footprint, height and pivot are computed from the mesh."
},
"glbUrl": {
"type": "string",
"format": "uri",
"description": "URL of a GLB, used when glb is not given."
},
"bounds": {
"type": "object",
"properties": {
"min": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
]
},
"max": {
"type": "array",
"minItems": 3,
"maxItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
]
}
},
"required": [
"min",
"max"
],
"additionalProperties": false,
"description": "Meters, model space, Y up. Used only when no mesh is given."
},
"category": {
"type": "string",
"enum": [
"house",
"tree",
"rock",
"bush",
"fence",
"wall",
"prop",
"light",
"path",
"water",
"other"
],
"description": "Overrides automatic classification."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 20
}
},
"required": [
"id"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 300
},
"upAxis": {
"type": "string",
"enum": [
"y",
"z"
],
"default": "y"
}
},
"required": [
"assets"
],
"additionalProperties": false
},
"layout": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "zones"
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 400,
"description": "World size along x, meters."
},
"depth": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 400,
"description": "World size along z, meters."
},
"zones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"kind": {
"type": "string",
"enum": [
"road",
"plaza",
"water",
"forest",
"field",
"building-lot",
"keep-clear",
"spawn",
"open"
]
},
"polygon": {
"type": "array",
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number"
},
{
"type": "number"
}
]
},
"minItems": 3,
"maxItems": 400,
"description": "World meters (x, z). x right, z down on a top-down map."
},
"polyline": {
"type": "array",
"items": {
"$ref": "#/properties/layout/anyOf/0/properties/zones/items/properties/polygon/items"
},
"minItems": 2,
"maxItems": 400,
"description": "For roads and rivers: centerline plus width."
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"kind"
],
"additionalProperties": false
},
"maxItems": 200
},
"requiredPoints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"x": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"id",
"x",
"z"
],
"additionalProperties": false
},
"maxItems": 20,
"default": []
}
},
"required": [
"kind",
"width",
"depth",
"zones"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"image": {
"type": "string",
"description": "Base64 PNG of a top-down sketch or map."
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 400
},
"depth": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 400
},
"requiredPoints": {
"type": "array",
"items": {
"$ref": "#/properties/layout/anyOf/0/properties/requiredPoints/items"
},
"maxItems": 20,
"default": []
}
},
"required": [
"kind",
"width",
"depth"
],
"additionalProperties": false
}
]
},
"heightmap": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Base64 grayscale PNG covering the whole map."
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"minHeight": {
"type": "number",
"default": 0
},
"maxHeight": {
"type": "number"
}
},
"required": [
"maxHeight"
],
"additionalProperties": false
},
"brief": {
"type": "string",
"maxLength": 4000,
"default": ""
},
"preset": {
"type": "string",
"enum": [
"fantasy-village"
],
"default": "fantasy-village"
},
"density": {
"type": "number",
"minimum": 0,
"maximum": 1,
"default": 0.5
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string",
"maxLength": 64
}
],
"default": 1
},
"targetEngine": {
"type": "string",
"enum": [
"unity",
"threejs"
],
"default": "unity"
},
"plan": {
"type": "object",
"properties": {
"zones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"zoneId": {
"type": "string"
},
"rules": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "scatter"
},
"assets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Asset ids."
},
"categories": {
"type": "array",
"items": {
"$ref": "#/properties/catalog/properties/assets/items/properties/category"
},
"description": "Pick from the catalog by category."
},
"density": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"minSpacing": {
"type": "number",
"minimum": 0,
"maximum": 50
},
"falloff": {
"type": "object",
"properties": {
"from": {
"type": "string",
"enum": [
"edge",
"point"
]
},
"point": {
"$ref": "#/properties/layout/anyOf/0/properties/zones/items/properties/polygon/items"
},
"strength": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"from",
"strength"
],
"additionalProperties": false
}
},
"required": [
"kind",
"density"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "cluster"
},
"assets": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/categories"
},
"clusters": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 1
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 60
},
"radius": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 60
},
"center": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"const": "centroid"
},
{
"$ref": "#/properties/layout/anyOf/0/properties/zones/items/properties/polygon/items"
}
]
},
{
"type": "string",
"const": "random"
}
],
"default": "random"
}
},
"required": [
"kind",
"count",
"radius"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "along"
},
"assets": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/categories"
},
"offset": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number",
"minimum": 0
},
{
"type": "number",
"minimum": 0
}
],
"description": "Distance inside the zone edge, meters [min, max]."
},
"spacing": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "number",
"exclusiveMinimum": 0
}
]
},
"facing": {
"type": "string",
"enum": [
"along",
"toward",
"away",
"random"
],
"default": "along"
}
},
"required": [
"kind",
"offset",
"spacing"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "ring"
},
"assets": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/categories"
},
"center": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/1/properties/center/anyOf/0",
"default": "centroid"
},
"radius": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 80
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 60
},
"facing": {
"type": "string",
"enum": [
"inward",
"outward"
],
"default": "inward"
}
},
"required": [
"kind",
"radius",
"count"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "lot"
},
"assets": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/categories"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "anchor"
},
"asset": {
"type": "string"
},
"category": {
"$ref": "#/properties/catalog/properties/assets/items/properties/category"
},
"at": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/1/properties/center/anyOf/0",
"default": "centroid"
},
"yawDeg": {
"type": "number"
}
},
"required": [
"kind"
],
"additionalProperties": false
}
]
},
"maxItems": 12
}
},
"required": [
"zoneId",
"rules"
],
"additionalProperties": false
},
"maxItems": 200
},
"notes": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"zones"
],
"additionalProperties": false,
"description": "Optional: skip the planner and solve this plan exactly."
}
},
"required": [
"layout"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡level_design_revise(jobId, instruction, edits)
Change a placed level with an instruction or structured zone edits; untouched zones keep their exact transforms. Price: $0.50 USDC via x402, charged only on success. Part of Level design: Level dressing for 3D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"jobId": {
"type": "string"
},
"instruction": {
"type": "string",
"maxLength": 2000
},
"edits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"zoneId": {
"type": "string"
},
"rules": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "scatter"
},
"assets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Asset ids."
},
"categories": {
"type": "array",
"items": {
"type": "string",
"enum": [
"house",
"tree",
"rock",
"bush",
"fence",
"wall",
"prop",
"light",
"path",
"water",
"other"
]
},
"description": "Pick from the catalog by category."
},
"density": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"minSpacing": {
"type": "number",
"minimum": 0,
"maximum": 50
},
"falloff": {
"type": "object",
"properties": {
"from": {
"type": "string",
"enum": [
"edge",
"point"
]
},
"point": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number"
},
{
"type": "number"
}
]
},
"strength": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"from",
"strength"
],
"additionalProperties": false
}
},
"required": [
"kind",
"density"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "cluster"
},
"assets": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/categories"
},
"clusters": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 1
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 60
},
"radius": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 60
},
"center": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"const": "centroid"
},
{
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/falloff/properties/point"
}
]
},
{
"type": "string",
"const": "random"
}
],
"default": "random"
}
},
"required": [
"kind",
"count",
"radius"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "along"
},
"assets": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/categories"
},
"offset": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number",
"minimum": 0
},
{
"type": "number",
"minimum": 0
}
],
"description": "Distance inside the zone edge, meters [min, max]."
},
"spacing": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "number",
"exclusiveMinimum": 0
}
]
},
"facing": {
"type": "string",
"enum": [
"along",
"toward",
"away",
"random"
],
"default": "along"
}
},
"required": [
"kind",
"offset",
"spacing"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "ring"
},
"assets": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/categories"
},
"center": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/1/properties/center/anyOf/0",
"default": "centroid"
},
"radius": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 80
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 60
},
"facing": {
"type": "string",
"enum": [
"inward",
"outward"
],
"default": "inward"
}
},
"required": [
"kind",
"radius",
"count"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "lot"
},
"assets": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/assets"
},
"categories": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/categories"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "anchor"
},
"asset": {
"type": "string"
},
"category": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/categories/items"
},
"at": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/1/properties/center/anyOf/0",
"default": "centroid"
},
"yawDeg": {
"type": "number"
}
},
"required": [
"kind"
],
"additionalProperties": false
}
]
},
"maxItems": 12
}
},
"required": [
"zoneId",
"rules"
],
"additionalProperties": false
},
"maxItems": 50
}
},
"required": [
"jobId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪level_design_place_2d(tileset, tileRoles, layout, brief, preset, ...)
Fill a 2D tilemap: terrain with proper corner transitions, decorations, obstacles and multi-tile stamps; Tiled .tmj, Unity Tilemap JSON and a preview. Price: $1.00 USDC via x402, charged only on success. Part of Level design: Level dressing for 3D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"tileset": {
"type": "object",
"properties": {
"image": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"tileWidth": {
"type": "integer",
"minimum": 1,
"maximum": 512
},
"tileHeight": {
"type": "integer",
"minimum": 1,
"maximum": 512
},
"margin": {
"type": "integer",
"minimum": 0,
"default": 0
},
"spacing": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [
"tileWidth",
"tileHeight"
],
"additionalProperties": false
},
"tileRoles": {
"type": "object",
"properties": {
"terrains": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"tiles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 0
},
"weight": {
"type": "number",
"exclusiveMinimum": 0,
"default": 1
}
},
"required": [
"id"
],
"additionalProperties": false
},
"minItems": 1,
"description": "Plain fill tiles; weighted variants keep ground from looking stamped."
},
"walkable": {
"type": "boolean",
"default": true
}
},
"required": [
"name",
"tiles"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 12
},
"sets": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "corner16"
},
"over": {
"type": "string"
},
"under": {
"type": "string"
},
"firstTile": {
"type": "integer",
"minimum": 0
}
},
"required": [
"kind",
"over",
"under",
"firstTile"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "blob47"
},
"over": {
"type": "string"
},
"under": {
"type": "string"
},
"tiles": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0
},
"minItems": 47,
"maxItems": 47
}
},
"required": [
"kind",
"over",
"under",
"tiles"
],
"additionalProperties": false
}
]
},
"maxItems": 40,
"default": []
},
"decorations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 0
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"layer": {
"type": "string",
"enum": [
"detail",
"obstacle"
],
"description": "detail: walkable ground clutter; obstacle: blocks walking"
},
"on": {
"type": "array",
"items": {
"type": "string"
},
"description": "Terrains it may stand on (default: any walkable)."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"default": []
}
},
"required": [
"id",
"name",
"layer"
],
"additionalProperties": false
},
"maxItems": 200,
"default": []
},
"stamps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"width": {
"type": "integer",
"minimum": 1,
"maximum": 16
},
"height": {
"type": "integer",
"minimum": 1,
"maximum": 16
},
"tiles": {
"type": "array",
"items": {
"type": "integer",
"minimum": -1
},
"description": "Row-major tile ids, width x height; -1 leaves a cell empty."
},
"walkable": {
"type": "boolean",
"default": false
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"default": []
}
},
"required": [
"name",
"width",
"height",
"tiles"
],
"additionalProperties": false
},
"maxItems": 60,
"default": []
},
"terrainFor": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"default": {}
}
},
"required": [
"terrains"
],
"additionalProperties": false
},
"layout": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "zones"
},
"width": {
"type": "integer",
"minimum": 4,
"maximum": 400,
"description": "Map width in tiles."
},
"height": {
"type": "integer",
"minimum": 4,
"maximum": 400,
"description": "Map height in tiles."
},
"zones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"kind": {
"type": "string",
"enum": [
"road",
"plaza",
"water",
"forest",
"field",
"building-lot",
"keep-clear",
"spawn",
"open"
]
},
"polygon": {
"type": "array",
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number"
},
{
"type": "number"
}
]
},
"minItems": 3,
"maxItems": 400,
"description": "Tile units: x right, y down."
},
"polyline": {
"type": "array",
"items": {
"$ref": "#/properties/layout/anyOf/0/properties/zones/items/properties/polygon/items"
},
"minItems": 2,
"maxItems": 400
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 50
}
},
"required": [
"kind"
],
"additionalProperties": false
},
"maxItems": 200
},
"requiredPoints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"x": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"id",
"x",
"z"
],
"additionalProperties": false
},
"maxItems": 20,
"default": []
}
},
"required": [
"kind",
"width",
"height",
"zones"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"image": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"width": {
"type": "integer",
"minimum": 4,
"maximum": 400
},
"height": {
"type": "integer",
"minimum": 4,
"maximum": 400
},
"requiredPoints": {
"type": "array",
"items": {
"$ref": "#/properties/layout/anyOf/0/properties/requiredPoints/items"
},
"maxItems": 20,
"default": []
}
},
"required": [
"kind",
"width",
"height"
],
"additionalProperties": false
}
]
},
"brief": {
"type": "string",
"maxLength": 4000,
"default": ""
},
"preset": {
"type": "string",
"enum": [
"fantasy-village",
"dungeon",
"forest"
],
"default": "fantasy-village"
},
"density": {
"type": "number",
"minimum": 0,
"maximum": 1,
"default": 0.5
},
"seed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string",
"maxLength": 64
}
],
"default": 1
},
"plan": {
"type": "object",
"properties": {
"zones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"zoneId": {
"type": "string"
},
"rules": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "scatter"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"density": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"kind",
"density"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "along"
},
"names": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/names"
},
"tags": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/tags"
},
"inset": {
"type": "integer",
"minimum": 0,
"maximum": 10,
"default": 0
},
"spacing": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 1
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "cluster"
},
"names": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/names"
},
"tags": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/tags"
},
"clusters": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 1
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 60
},
"radius": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 40
}
},
"required": [
"kind",
"count",
"radius"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "stamp"
},
"names": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/names"
},
"tags": {
"$ref": "#/properties/plan/properties/zones/items/properties/rules/items/anyOf/0/properties/tags"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 1,
"description": "Stamps per zone; building lots usually take 1."
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "anchor"
},
"name": {
"type": "string"
},
"at": {
"anyOf": [
{
"type": "string",
"const": "centroid"
},
{
"$ref": "#/properties/layout/anyOf/0/properties/zones/items/properties/polygon/items"
}
],
"default": "centroid"
}
},
"required": [
"kind",
"name"
],
"additionalProperties": false
}
]
},
"maxItems": 12
}
},
"required": [
"zoneId",
"rules"
],
"additionalProperties": false
},
"maxItems": 200
},
"notes": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"zones"
],
"additionalProperties": false
}
},
"required": [
"tileset",
"tileRoles",
"layout"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡level_design_revise_2d(jobId, instruction, edits)
Change a 2D map by instruction or zone edits; untouched zones keep their tiles. Price: $0.30 USDC via x402, charged only on success. Part of Level design: Level dressing for 3D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"jobId": {
"type": "string"
},
"instruction": {
"type": "string",
"maxLength": 2000
},
"edits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"zoneId": {
"type": "string"
},
"rules": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "scatter"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"density": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"kind",
"density"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "along"
},
"names": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/names"
},
"tags": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/tags"
},
"inset": {
"type": "integer",
"minimum": 0,
"maximum": 10,
"default": 0
},
"spacing": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 1
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "cluster"
},
"names": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/names"
},
"tags": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/tags"
},
"clusters": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 1
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 60
},
"radius": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 40
}
},
"required": [
"kind",
"count",
"radius"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "stamp"
},
"names": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/names"
},
"tags": {
"$ref": "#/properties/edits/items/properties/rules/items/anyOf/0/properties/tags"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 1,
"description": "Stamps per zone; building lots usually take 1."
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "anchor"
},
"name": {
"type": "string"
},
"at": {
"anyOf": [
{
"type": "string",
"const": "centroid"
},
{
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{
"type": "number"
},
{
"type": "number"
}
]
}
],
"default": "centroid"
}
},
"required": [
"kind",
"name"
],
"additionalProperties": false
}
]
},
"maxItems": 12
}
},
"required": [
"zoneId",
"rules"
],
"additionalProperties": false
},
"maxItems": 50
}
},
"required": [
"jobId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪asset_render_views(glb, glbUrl, upAxis, size, background)
Render a GLB model to four PNG views (three-quarter, front, side, top) for thumbnails and previews, plus mesh stats and size. Price: $0.10 USDC via x402, charged only on success. Part of Asset render: Pictures of a 3D model for agents that cannot see: catalog views, a turntable GIF, and isometric sprite sheets for 2.5D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string",
"description": "Base64 GLB."
},
"glbUrl": {
"type": "string",
"format": "uri"
},
"upAxis": {
"type": "string",
"enum": [
"auto",
"y",
"z"
],
"default": "auto"
},
"size": {
"type": "number",
"enum": [
256,
512,
1024
],
"default": 512
},
"background": {
"type": "string",
"enum": [
"neutral",
"transparent"
],
"default": "neutral"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪asset_render_turntable(glb, glbUrl, upAxis, size, frames)
Render a GLB model as a looping turntable GIF, one full revolution, plus mesh stats. Price: $0.25 USDC via x402, charged only on success. Part of Asset render: Pictures of a 3D model for agents that cannot see: catalog views, a turntable GIF, and isometric sprite sheets for 2.5D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string",
"description": "Base64 GLB."
},
"glbUrl": {
"type": "string",
"format": "uri"
},
"upAxis": {
"type": "string",
"enum": [
"auto",
"y",
"z"
],
"default": "auto"
},
"size": {
"type": "number",
"enum": [
256,
512
],
"default": 256
},
"frames": {
"type": "integer",
"minimum": 12,
"maximum": 72,
"default": 36
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪asset_render_sprites(glb, glbUrl, upAxis, directions, cellSize, ...)
Transparent isometric sprite sheet, 4 or 8 directions in one row (south first, clockwise), with frame JSON. Price: $0.40 USDC via x402, charged only on success. Part of Asset render: Pictures of a 3D model for agents that cannot see: catalog views, a turntable GIF, and isometric sprite sheets for 2.5D games.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string",
"description": "Base64 GLB."
},
"glbUrl": {
"type": "string",
"format": "uri"
},
"upAxis": {
"type": "string",
"enum": [
"auto",
"y",
"z"
],
"default": "auto"
},
"directions": {
"type": "number",
"enum": [
4,
8
],
"default": 8
},
"cellSize": {
"type": "integer",
"minimum": 32,
"maximum": 512,
"default": 128
},
"elevationDeg": {
"type": "number",
"minimum": 0,
"maximum": 89,
"default": 30
},
"pixelArt": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪sprite_tools_slice(image, imageUrl, mode, cols, rows, ...)
Cut a sprite sheet into frames by grid or by transparent gaps; frame PNGs plus a ZIP. Price: $0.05 USDC via x402, charged only on success. Part of Sprite tools: 2D sprite jobs for games: cut sprites out of their background (exact for one-color backgrounds, AI for busy ones), turn animation videos into aligned sprite sheets, make normal maps for 2D lights, build 47-tile autotile sets with Tiled, Godot and Unity rules, slice a sheet into frames, pack frames into an atlas with TexturePacker and Unity metadata, and turn upscaled or AI-generated pixel art into real pixel art on its true grid with a limited palette..
Eingabe-Schema
{
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Base64 PNG, JPEG or WebP."
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"mode": {
"type": "string",
"enum": [
"grid",
"auto"
],
"default": "auto"
},
"cols": {
"type": "integer",
"minimum": 1,
"maximum": 256
},
"rows": {
"type": "integer",
"minimum": 1,
"maximum": 256
},
"cellWidth": {
"type": "integer",
"minimum": 1,
"maximum": 4096
},
"cellHeight": {
"type": "integer",
"minimum": 1,
"maximum": 4096
},
"margin": {
"type": "integer",
"minimum": 0,
"maximum": 512,
"default": 0
},
"spacing": {
"type": "integer",
"minimum": 0,
"maximum": 512,
"default": 0
},
"minArea": {
"type": "integer",
"minimum": 1,
"default": 4,
"description": "auto mode: ignore islands smaller than this many pixels"
},
"mergeDistance": {
"type": "integer",
"minimum": 0,
"maximum": 64,
"default": 1,
"description": "auto mode: islands closer than this merge into one sprite"
},
"trim": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪sprite_tools_pack(frames, maxSize, padding, extrude, trim, ...)
Pack frames into one atlas (MaxRects) with padding and edge extrusion; TexturePacker JSON and Unity JSON. Price: $0.05 USDC via x402, charged only on success. Part of Sprite tools: 2D sprite jobs for games: cut sprites out of their background (exact for one-color backgrounds, AI for busy ones), turn animation videos into aligned sprite sheets, make normal maps for 2D lights, build 47-tile autotile sets with Tiled, Godot and Unity rules, slice a sheet into frames, pack frames into an atlas with TexturePacker and Unity metadata, and turn upscaled or AI-generated pixel art into real pixel art on its true grid with a limited palette..
Eingabe-Schema
{
"type": "object",
"properties": {
"frames": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"image": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 2048
},
"maxSize": {
"type": "integer",
"minimum": 64,
"maximum": 8192,
"default": 2048
},
"padding": {
"type": "integer",
"minimum": 0,
"maximum": 32,
"default": 2
},
"extrude": {
"type": "integer",
"minimum": 0,
"maximum": 8,
"default": 1
},
"trim": {
"type": "boolean",
"default": true
},
"powerOfTwo": {
"type": "boolean",
"default": false
}
},
"required": [
"frames"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sprite_tools_pixelate(image, imageUrl, scale, palette, colors, ...)
Clean pixel art: find the true pixel grid, downscale to it, snap to a palette, hard alpha. Price: $0.10 USDC via x402, charged only on success. Part of Sprite tools: 2D sprite jobs for games: cut sprites out of their background (exact for one-color backgrounds, AI for busy ones), turn animation videos into aligned sprite sheets, make normal maps for 2D lights, build 47-tile autotile sets with Tiled, Godot and Unity rules, slice a sheet into frames, pack frames into an atlas with TexturePacker and Unity metadata, and turn upscaled or AI-generated pixel art into real pixel art on its true grid with a limited palette..
Eingabe-Schema
{
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Base64 PNG, JPEG or WebP."
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"scale": {
"type": "integer",
"minimum": 1,
"maximum": 64,
"description": "Size of one art pixel in image pixels; detected when omitted."
},
"palette": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 256,
"description": "Hex colors to snap to."
},
"colors": {
"type": "integer",
"minimum": 2,
"maximum": 64,
"default": 16
},
"alphaThreshold": {
"type": "integer",
"minimum": 1,
"maximum": 255,
"default": 128
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴sprite_tools_remove_bg(image, imageUrl, mode, keep, trim, ...)
Cut a sprite, prop or character out of its background: exact keying for one-color backgrounds (text and holes too), AI segmentation for busy ones; clean edges with no halo, trimmed, with a pivot. AI mode handles one main subject, not text on photos. Price: $0.05 USDC via x402, charged only on success. Part of Sprite tools: 2D sprite jobs for games: cut sprites out of their background (exact for one-color backgrounds, AI for busy ones), turn animation videos into aligned sprite sheets, make normal maps for 2D lights, build 47-tile autotile sets with Tiled, Godot and Unity rules, slice a sheet into frames, pack frames into an atlas with TexturePacker and Unity metadata, and turn upscaled or AI-generated pixel art into real pixel art on its true grid with a limited palette..
Eingabe-Schema
{
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Base64 PNG, JPEG or WebP."
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"mode": {
"type": "string",
"enum": [
"auto",
"flat",
"ai"
],
"default": "auto",
"description": "auto: flat key when the border is one color, AI segmentation otherwise."
},
"keep": {
"type": "string",
"enum": [
"auto",
"main",
"all"
],
"default": "auto",
"description": "main: only the main subject and what touches it; all: everything that is not background. auto: all for flat backgrounds, main after AI."
},
"trim": {
"type": "boolean",
"default": true
},
"padding": {
"type": "integer",
"minimum": 0,
"maximum": 256,
"default": 2
},
"pivot": {
"type": "string",
"enum": [
"bottom",
"center"
],
"default": "bottom"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪sprite_tools_video_to_sheet(video, videoUrl, fps, start, end, ...)
Turn an animation video or GIF (from Kling, Veo, Sora or a capture) into a sprite sheet: frames at your fps, background removed, every frame aligned to one box and pivot so it does not jitter, the best loop point, TexturePacker JSON, Godot SpriteFrames and a GIF preview. Price: $0.15 USDC via x402, charged only on success. Part of Sprite tools: 2D sprite jobs for games: cut sprites out of their background (exact for one-color backgrounds, AI for busy ones), turn animation videos into aligned sprite sheets, make normal maps for 2D lights, build 47-tile autotile sets with Tiled, Godot and Unity rules, slice a sheet into frames, pack frames into an atlas with TexturePacker and Unity metadata, and turn upscaled or AI-generated pixel art into real pixel art on its true grid with a limited palette..
Eingabe-Schema
{
"type": "object",
"properties": {
"video": {
"type": "string",
"description": "Base64 MP4, WebM, MOV or GIF."
},
"videoUrl": {
"type": "string",
"format": "uri"
},
"fps": {
"type": "number",
"minimum": 1,
"maximum": 60,
"default": 12
},
"start": {
"type": "number",
"minimum": 0,
"default": 0
},
"end": {
"type": "number",
"exclusiveMinimum": 0
},
"maxFrames": {
"type": "integer",
"minimum": 1,
"maximum": 120,
"default": 48
},
"background": {
"type": "string",
"enum": [
"auto",
"keep",
"flat",
"ai"
],
"default": "auto",
"description": "auto: keep the video's own transparency, key a one-color background, or use AI (max 24 frames)."
},
"frameSize": {
"type": "integer",
"minimum": 16,
"maximum": 1024,
"default": 256,
"description": "Longest side of one frame."
},
"pixelArt": {
"type": "boolean",
"default": false,
"description": "Scale with nearest neighbour."
},
"columns": {
"type": "integer",
"minimum": 1,
"maximum": 64
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪sprite_tools_normal_map(image, imageUrl, bevel, strength, detail, ...)
Normal map for a sprite or sprite sheet, for 2D lights in Unity URP 2D and Godot: a rounded bevel from the silhouette plus surface detail, alpha kept, OpenGL or DirectX; a height map and a preview lit by a moving light. Price: $0.05 USDC via x402, charged only on success. Part of Sprite tools: 2D sprite jobs for games: cut sprites out of their background (exact for one-color backgrounds, AI for busy ones), turn animation videos into aligned sprite sheets, make normal maps for 2D lights, build 47-tile autotile sets with Tiled, Godot and Unity rules, slice a sheet into frames, pack frames into an atlas with TexturePacker and Unity metadata, and turn upscaled or AI-generated pixel art into real pixel art on its true grid with a limited palette..
Eingabe-Schema
{
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Base64 PNG sprite or sheet with transparency."
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"bevel": {
"type": "number",
"minimum": 1,
"maximum": 256,
"description": "Rim width in pixels; from the sprite size when omitted."
},
"strength": {
"type": "number",
"minimum": 0.1,
"maximum": 8,
"default": 1
},
"detail": {
"type": "number",
"minimum": 0,
"maximum": 2,
"default": 0.5,
"description": "How much surface detail from the colors goes into the bumps."
},
"convention": {
"type": "string",
"enum": [
"opengl",
"directx"
],
"default": "opengl",
"description": "opengl (green up) for Unity and Godot."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡sprite_tools_autotile(base, baseUrl, top, topUrl, tileSize, ...)
Two terrain textures (grass over dirt, sand over water) to a full 47-tile autotile set with natural, seamless edges, outer and inner corners, plus ready rules: Tiled wang set, Godot 4 TileSet terrains, Unity Rule Tile (editor script), JSON, and a painted preview map. Price: $0.15 USDC via x402, charged only on success. Part of Sprite tools: 2D sprite jobs for games: cut sprites out of their background (exact for one-color backgrounds, AI for busy ones), turn animation videos into aligned sprite sheets, make normal maps for 2D lights, build 47-tile autotile sets with Tiled, Godot and Unity rules, slice a sheet into frames, pack frames into an atlas with TexturePacker and Unity metadata, and turn upscaled or AI-generated pixel art into real pixel art on its true grid with a limited palette..
Eingabe-Schema
{
"type": "object",
"properties": {
"base": {
"type": "string",
"description": "Base terrain texture (what is underneath: dirt, water), base64 PNG/JPEG/WebP."
},
"baseUrl": {
"type": "string",
"format": "uri"
},
"top": {
"type": "string",
"description": "Top terrain texture (what you paint: grass, sand), base64."
},
"topUrl": {
"type": "string",
"format": "uri"
},
"tileSize": {
"type": "integer",
"minimum": 8,
"maximum": 256,
"default": 32
},
"edge": {
"type": "string",
"enum": [
"soft",
"crisp"
],
"default": "soft",
"description": "soft for painted styles, crisp for pixel art."
},
"rim": {
"type": "boolean",
"default": false,
"description": "crisp only: a dark 1 px outline on the top terrain's edge."
},
"edgeWidth": {
"type": "number",
"minimum": 0.1,
"maximum": 0.45,
"default": 0.18,
"description": "How deep the transition sits into a tile, as a fraction of the tile."
},
"roughness": {
"type": "number",
"minimum": 0,
"maximum": 1,
"default": 0.5,
"description": "0 = straight edges, 1 = very irregular."
},
"seed": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 1
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪glb_optimizer_optimize(glb, glbUrl, preset, maxTextureSize, simplifyRatio, ...)
Shrink a GLB (up to 10 MB) for web or mobile: dedup, join draw calls, gentle simplify, textures to WebP at a max size, meshopt or Draco compression; before/after renders, size report and loader notes for three.js and Unity. Price: $0.20 USDC via x402, charged only on success. Part of GLB optimizer: Make a GLB small and fast for the web or mobile: dedup, instance, join, weld, simplify, resize and re-encode textures, meshopt or draco compression.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string",
"description": "Base64 GLB."
},
"glbUrl": {
"type": "string",
"format": "uri"
},
"preset": {
"type": "string",
"enum": [
"web",
"mobile",
"preview"
],
"default": "web"
},
"maxTextureSize": {
"type": "integer",
"minimum": 64,
"maximum": 8192
},
"simplifyRatio": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Target share of triangles to keep (0 = only the error bound decides)."
},
"compression": {
"type": "string",
"enum": [
"meshopt",
"draco",
"none"
],
"default": "meshopt"
},
"textureFormat": {
"type": "string",
"enum": [
"webp",
"png",
"keep"
],
"default": "webp"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪glb_optimizer_optimize_large(glb, glbUrl, preset, maxTextureSize, simplifyRatio, ...)
Shrink a large GLB (up to 50 MB) for web or mobile, same pipeline as optimize: dedup, join, simplify, WebP textures, meshopt or Draco. Price: $0.50 USDC via x402, charged only on success. Part of GLB optimizer: Make a GLB small and fast for the web or mobile: dedup, instance, join, weld, simplify, resize and re-encode textures, meshopt or draco compression.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string",
"description": "Base64 GLB."
},
"glbUrl": {
"type": "string",
"format": "uri"
},
"preset": {
"type": "string",
"enum": [
"web",
"mobile",
"preview"
],
"default": "web"
},
"maxTextureSize": {
"type": "integer",
"minimum": 64,
"maximum": 8192
},
"simplifyRatio": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Target share of triangles to keep (0 = only the error bound decides)."
},
"compression": {
"type": "string",
"enum": [
"meshopt",
"draco",
"none"
],
"default": "meshopt"
},
"textureFormat": {
"type": "string",
"enum": [
"webp",
"png",
"keep"
],
"default": "webp"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢glb_optimizer_inspect(glb, glbUrl)
Inspect a GLB without changing it: triangles, draw calls, materials, texture memory, animations, glTF validator errors, and concrete suggestions to make it lighter. Price: $0.05 USDC via x402, charged only on success. Part of GLB optimizer: Make a GLB small and fast for the web or mobile: dedup, instance, join, weld, simplify, resize and re-encode textures, meshopt or draco compression.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string"
},
"glbUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪glb_optimizer_convert(file, fileUrl, fileName, upAxis, unitScale)
Convert FBX, OBJ (zip with .mtl and textures), glTF (zip), STL, PLY, DAE or 3DS to one GLB: Y-up, in meters, materials and FBX animations kept. Returns the GLB, a report, a validator pass and a preview render. Price: $0.15 USDC via x402, charged only on success. Part of GLB optimizer: Make a GLB small and fast for the web or mobile: dedup, instance, join, weld, simplify, resize and re-encode textures, meshopt or draco compression.
Eingabe-Schema
{
"type": "object",
"properties": {
"file": {
"type": "string",
"description": "Model file as base64: FBX, GLB, STL, PLY, DAE, 3DS, or a ZIP holding an OBJ/glTF with its .mtl/.bin and textures."
},
"fileUrl": {
"type": "string",
"format": "uri"
},
"fileName": {
"type": "string",
"maxLength": 200,
"description": "Original file name, helps tell the format apart."
},
"upAxis": {
"type": "string",
"enum": [
"auto",
"y",
"z"
],
"default": "auto",
"description": "auto trusts FBX/glTF/DAE metadata, assumes Y-up for OBJ and Z-up for STL/PLY/3DS."
},
"unitScale": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000
}
],
"default": "auto",
"description": "Multiply sizes by this to get meters; auto reads FBX units and treats large STLs as millimeters."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪glb_optimizer_lod(glb, glbUrl, ratios, lockBorder)
Generate a LOD chain from a GLB (default 100/50/25/10% of triangles) with locked borders so UV seams and silhouettes hold; one GLB per level, a side-by-side render and Unity LODGroup transition heights. Price: $0.20 USDC via x402, charged only on success. Part of GLB optimizer: Make a GLB small and fast for the web or mobile: dedup, instance, join, weld, simplify, resize and re-encode textures, meshopt or draco compression.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string"
},
"glbUrl": {
"type": "string",
"format": "uri"
},
"ratios": {
"type": "array",
"items": {
"type": "number",
"minimum": 0.01,
"maximum": 1
},
"minItems": 2,
"maxItems": 6,
"default": [
1,
0.5,
0.25,
0.1
]
},
"lockBorder": {
"type": "boolean",
"default": true,
"description": "Keep open edges and UV seams in place (recommended)."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡glb_optimizer_colliders(glb, glbUrl, engine, maxHulls, resolution, ...)
Collision for a model: a set of convex hulls that hug the shape (V-HACD), ready for Godot (-convcolonly nodes), Unreal (UCX_ names) and Unity (convex MeshColliders via an editor script), plus hulls.json for any engine and a see-through overlay to check. Price: $0.15 USDC via x402, charged only on success. Part of GLB optimizer: Make a GLB small and fast for the web or mobile: dedup, instance, join, weld, simplify, resize and re-encode textures, meshopt or draco compression.
Eingabe-Schema
{
"type": "object",
"properties": {
"glb": {
"type": "string"
},
"glbUrl": {
"type": "string",
"format": "uri"
},
"engine": {
"type": "string",
"enum": [
"all",
"godot",
"unreal",
"unity"
],
"default": "all"
},
"maxHulls": {
"type": "integer",
"minimum": 1,
"maximum": 64,
"default": 16,
"description": "Upper limit; the fewest hulls that fit the shape (within 3% of the volume the limit gives) are used."
},
"resolution": {
"type": "integer",
"minimum": 10000,
"maximum": 1000000,
"default": 100000,
"description": "Voxels used to read the shape; higher follows small details."
},
"maxVerticesPerHull": {
"type": "integer",
"minimum": 8,
"maximum": 255,
"default": 64,
"description": "64 keeps every hull valid for Unity convex MeshColliders (255 polygons)."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪texture_tools_seamless(image, imageUrl, delight, blendWidth)
Make a texture tile without visible seams: removes baked lighting, hides the seam along the path where the image already matches. Returns the tile and a 2x2 preview. Price: $0.10 USDC via x402, charged only on success. Part of Texture tools: Turn a picture into a game-ready material: seamless tiling without visible seams or light bands, PBR maps (normal for Unity and Unreal, height, roughness, AO) from one image, channel packing for Unreal ORM and Unity masks, and texture atlases with mip-safe gutters.
Eingabe-Schema
{
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Texture as base64 (PNG, JPEG or WebP)."
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "Texture as a URL."
},
"delight": {
"type": "boolean",
"default": true,
"description": "Remove baked light/dark gradients first so the tile does not show bands."
},
"blendWidth": {
"type": "number",
"minimum": 0.04,
"maximum": 0.3,
"default": 0.12,
"description": "Overlap used to hide the seam, as a fraction of the size. The tile is smaller by this much."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪texture_tools_pbr(image, imageUrl, height, delight, normalStrength, ...)
PBR maps from one albedo image: normal (OpenGL for Unity/three.js and DirectX for Unreal), 16-bit height, roughness and ambient occlusion, plus a lit preview. Price: $0.15 USDC via x402, charged only on success. Part of Texture tools: Turn a picture into a game-ready material: seamless tiling without visible seams or light bands, PBR maps (normal for Unity and Unreal, height, roughness, AO) from one image, channel packing for Unreal ORM and Unity masks, and texture atlases with mip-safe gutters.
Eingabe-Schema
{
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Albedo (base color) texture as base64 (PNG, JPEG or WebP)."
},
"imageUrl": {
"type": "string",
"format": "uri",
"description": "Albedo (base color) texture as a URL."
},
"height": {
"type": "object",
"properties": {
"image": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Optional height map you already have."
},
"delight": {
"type": "boolean",
"default": false
},
"normalStrength": {
"type": "number",
"minimum": 0.1,
"maximum": 10,
"default": 2
},
"invertHeight": {
"type": "boolean",
"default": false,
"description": "Set when dark areas are raised (e.g. light grout between dark stones)."
},
"roughness": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "number",
"minimum": 0,
"maximum": 1
}
],
"default": "auto"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢texture_tools_pack(preset, ao, roughness, smoothness, metallic, ...)
Pack grayscale maps into one texture for an engine preset: Unreal ORM, Unity URP metallic/smoothness, Unity HDRP mask map. Missing maps get sensible constants. Price: $0.05 USDC via x402, charged only on success. Part of Texture tools: Turn a picture into a game-ready material: seamless tiling without visible seams or light bands, PBR maps (normal for Unity and Unreal, height, roughness, AO) from one image, channel packing for Unreal ORM and Unity masks, and texture atlases with mip-safe gutters.
Eingabe-Schema
{
"type": "object",
"properties": {
"preset": {
"type": "string",
"enum": [
"unreal-orm",
"unity-urp-metallic",
"unity-hdrp-mask"
]
},
"ao": {
"type": "object",
"properties": {
"image": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
},
"roughness": {
"$ref": "#/properties/ao"
},
"smoothness": {
"$ref": "#/properties/ao",
"description": "Give roughness or smoothness; the other is derived (smoothness = 1 - roughness)."
},
"metallic": {
"$ref": "#/properties/ao"
},
"detail": {
"$ref": "#/properties/ao"
},
"size": {
"type": "integer",
"minimum": 16,
"maximum": 4096,
"description": "Output side; default is the largest input."
}
},
"required": [
"preset"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪texture_tools_atlas(textures, padding, powerOfTwo, maxSize)
Pack textures into one atlas with edge-filled gutters so mipmaps do not bleed; UV rects for bottom-left (Unity, OpenGL) and top-left (DirectX, Unreal) origins. Price: $0.05 USDC via x402, charged only on success. Part of Texture tools: Turn a picture into a game-ready material: seamless tiling without visible seams or light bands, PBR maps (normal for Unity and Unreal, height, roughness, AO) from one image, channel packing for Unreal ORM and Unity masks, and texture atlases with mip-safe gutters.
Eingabe-Schema
{
"type": "object",
"properties": {
"textures": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"image": {
"type": "string"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 256
},
"padding": {
"type": "integer",
"minimum": 0,
"maximum": 64,
"default": 8,
"description": "Gutter around each texture, filled with its edge pixels so mipmaps do not bleed."
},
"powerOfTwo": {
"type": "boolean",
"default": true
},
"maxSize": {
"type": "integer",
"minimum": 64,
"maximum": 8192,
"default": 4096
}
},
"required": [
"textures"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡audio_tools_clean(audio, audioUrl, format, kind, targetLufs, ...)
Trim silence, normalize loudness to a LUFS target with a -1 dBTP ceiling, add anti-click fades and convert (ogg, wav, mp3; mono for SFX). Returns the file, a waveform and measured stats. Price: $0.05 USDC via x402, charged only on success. Part of Audio tools: Make generated or recorded sounds game-ready: trim silence and match loudness (LUFS with a true-peak ceiling), seamless loops for music and ambience with loop points, and SFX variations.
Eingabe-Schema
{
"type": "object",
"properties": {
"audio": {
"type": "string",
"description": "Audio file as base64 (wav, mp3, ogg, flac, m4a)."
},
"audioUrl": {
"type": "string",
"format": "uri",
"description": "Audio file URL."
},
"format": {
"type": "string",
"enum": [
"ogg",
"wav",
"mp3"
],
"default": "ogg"
},
"kind": {
"type": "string",
"enum": [
"sfx",
"music",
"ambience",
"voice"
],
"default": "sfx",
"description": "Sets the loudness target and channel default: sfx -16 LUFS mono, music -18 stereo, ambience -20 stereo, voice -16 mono."
},
"targetLufs": {
"type": "number",
"minimum": -40,
"maximum": -6
},
"trimSilence": {
"type": "boolean",
"default": true
},
"silenceThresholdDb": {
"type": "number",
"minimum": -90,
"maximum": -20,
"default": -50
},
"mono": {
"type": "boolean"
},
"sampleRate": {
"type": "number",
"enum": [
22050,
44100,
48000
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪audio_tools_loop(audio, audioUrl, format, startSec, endSec, ...)
Turn music or ambience into a seamless loop: cuts at zero crossings and crossfades the end into the start with an equal-power curve. Returns the loop, a 3x preview and loop points in samples. Price: $0.10 USDC via x402, charged only on success. Part of Audio tools: Make generated or recorded sounds game-ready: trim silence and match loudness (LUFS with a true-peak ceiling), seamless loops for music and ambience with loop points, and SFX variations.
Eingabe-Schema
{
"type": "object",
"properties": {
"audio": {
"type": "string",
"description": "Audio file as base64 (wav, mp3, ogg, flac, m4a)."
},
"audioUrl": {
"type": "string",
"format": "uri",
"description": "Audio file URL."
},
"format": {
"type": "string",
"enum": [
"ogg",
"wav",
"mp3"
],
"default": "ogg"
},
"startSec": {
"type": "number",
"minimum": 0
},
"endSec": {
"type": "number",
"minimum": 0
},
"crossfadeMs": {
"type": "number",
"minimum": 5,
"maximum": 2000,
"default": 120
},
"mono": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪audio_tools_variations(audio, audioUrl, format, count, pitchSemitones, ...)
Make 2-12 variations of one sound effect with small pitch and volume changes, so repeated footsteps or hits do not sound copy-pasted. Returns each file and a ZIP. Price: $0.10 USDC via x402, charged only on success. Part of Audio tools: Make generated or recorded sounds game-ready: trim silence and match loudness (LUFS with a true-peak ceiling), seamless loops for music and ambience with loop points, and SFX variations.
Eingabe-Schema
{
"type": "object",
"properties": {
"audio": {
"type": "string",
"description": "Audio file as base64 (wav, mp3, ogg, flac, m4a)."
},
"audioUrl": {
"type": "string",
"format": "uri",
"description": "Audio file URL."
},
"format": {
"type": "string",
"enum": [
"ogg",
"wav",
"mp3"
],
"default": "ogg"
},
"count": {
"type": "integer",
"minimum": 2,
"maximum": 12,
"default": 5
},
"pitchSemitones": {
"type": "number",
"minimum": 0,
"maximum": 6,
"default": 2,
"description": "Max pitch change either way."
},
"volumeDb": {
"type": "number",
"minimum": 0,
"maximum": 12,
"default": 2,
"description": "Max volume change either way."
},
"seed": {
"type": "integer",
"default": 1
},
"mono": {
"type": "boolean"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪audio_tools_voice(audio, audioUrl, format, targetLufs, denoise, ...)
Make a voice recording or TTS take game-ready: rumble high-passed, noise reduced against the measured floor, sibilance tamed, dialogue loudness (-18 LUFS) with a -1 dBTP ceiling, and a long take split into one file per phrase with a CSV cue sheet. Price: $0.10 USDC via x402, charged only on success. Part of Audio tools: Make generated or recorded sounds game-ready: trim silence and match loudness (LUFS with a true-peak ceiling), seamless loops for music and ambience with loop points, and SFX variations.
Eingabe-Schema
{
"type": "object",
"properties": {
"audio": {
"type": "string",
"description": "Audio file as base64 (wav, mp3, ogg, flac, m4a)."
},
"audioUrl": {
"type": "string",
"format": "uri",
"description": "Audio file URL."
},
"format": {
"type": "string",
"enum": [
"ogg",
"wav",
"mp3"
],
"default": "ogg"
},
"targetLufs": {
"type": "number",
"minimum": -30,
"maximum": -10,
"default": -18,
"description": "Dialogue loudness; -18 LUFS is a common game VO target."
},
"denoise": {
"type": "number",
"minimum": 0,
"maximum": 1,
"default": 0.5,
"description": "0 gentle, 1 strong. Strong denoising can make a voice sound metallic."
},
"split": {
"type": "boolean",
"default": true,
"description": "One file per phrase."
},
"minSilenceMs": {
"type": "integer",
"minimum": 100,
"maximum": 3000,
"default": 350,
"description": "A pause at least this long separates two phrases."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪store_assets_steam(keyArt, logo, heroArt, dimBackground)
Every Steam store and library capsule from one key art at the exact required sizes: logo composited per Steam rules, Library Hero without logo, separate transparent Library Logo, page background, a contact sheet and a ZIP. Price: $0.20 USDC via x402, charged only on success. Part of Store assets: Release art from one key art: every Steam store and library capsule at the exact required size with your logo placed per Steam's rules (never on the Library Hero), and full icon sets for iOS, Android adaptive icons, Google Play and the web..
Eingabe-Schema
{
"type": "object",
"properties": {
"keyArt": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "key art, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Your main artwork, ideally without text, at least 1920 px wide."
},
"logo": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "logo, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Game logo with a transparent background. Steam wants it on every capsule."
},
"heroArt": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "hero art, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Artwork for the Library Hero with no logo or text; key art is used when omitted."
},
"dimBackground": {
"type": "number",
"minimum": 0,
"maximum": 0.9,
"default": 0.45,
"description": "How much to darken the page background so text stays readable."
}
},
"required": [
"keyArt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪store_assets_icons(art, foreground, background, name)
App icons from one square art: iOS 1024 with Contents.json, Android adaptive icon layers at every density plus legacy and Play Store 512, and web favicons with a manifest snippet. Preview with the masks launchers apply. Price: $0.10 USDC via x402, charged only on success. Part of Store assets: Release art from one key art: every Steam store and library capsule at the exact required size with your logo placed per Steam's rules (never on the Library Hero), and full icon sets for iOS, Android adaptive icons, Google Play and the web..
Eingabe-Schema
{
"type": "object",
"properties": {
"art": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "icon art, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Square artwork, at least 1024x1024. Used as is for iOS and legacy icons."
},
"foreground": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "adaptive foreground, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Android adaptive icon foreground with transparency; the art is used when omitted."
},
"background": {
"type": "string",
"pattern": "^#?[0-9a-fA-F]{6}$",
"description": "Android adaptive background colour; sampled from the art's edge when omitted."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"default": "My Game"
}
},
"required": [
"art"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪store_assets_stores(keyArt, logo, screenshots, stores)
One key art and logo to the store images beyond Steam: itch.io cover 630x500, Google Play feature graphic 1024x500, Epic landscape 2560x1440 and portrait 1200x1600; gameplay screenshots fitted to Google Play 1920x1080 and App Store iPhone 6.9", 6.3" and iPad 13" sizes without stretching, no alpha where stores reject it. Price: $0.20 USDC via x402, charged only on success. Part of Store assets: Release art from one key art: every Steam store and library capsule at the exact required size with your logo placed per Steam's rules (never on the Library Hero), and full icon sets for iOS, Android adaptive icons, Google Play and the web..
Eingabe-Schema
{
"type": "object",
"properties": {
"keyArt": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "key art, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Main artwork without text, at least 1920 px wide."
},
"logo": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "logo, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false,
"description": "Game logo with a transparent background."
},
"screenshots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "screenshot, base64 PNG/JPEG/WebP"
},
"imageUrl": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
},
"maxItems": 10,
"description": "Gameplay screenshots to fit to Google Play and App Store sizes."
},
"stores": {
"type": "array",
"items": {
"type": "string",
"enum": [
"itch",
"googlePlay",
"epic",
"appStore"
]
},
"minItems": 1,
"default": [
"itch",
"googlePlay",
"epic",
"appStore"
]
}
},
"required": [
"keyArt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪font_tools_bitmap(font, fontUrl, size, mode, charset, ...)
Bitmap font from a TTF/OTF: atlas PNG, BMFont .fnt with kerning, JSON and a preview of a sample line. Pixel mode snaps glyphs to whole pixels with no antialiasing. Price: $0.10 USDC via x402, charged only on success. Part of Font tools: Turn a TTF/OTF font into a bitmap font for games: crisp pixel-perfect glyphs for pixel art or smooth antialiased ones, Latin and Cyrillic, optional outline, atlas PNG plus AngelCode BMFont .fnt with kerning (Unity, Godot, Phaser, LibGDX) and JSON..
Eingabe-Schema
{
"type": "object",
"properties": {
"font": {
"type": "string",
"description": "TTF or OTF file as base64."
},
"fontUrl": {
"type": "string",
"format": "uri"
},
"size": {
"type": "integer",
"minimum": 6,
"maximum": 256,
"default": 16,
"description": "Pixel size (em)."
},
"mode": {
"type": "string",
"enum": [
"pixel",
"smooth"
],
"default": "pixel",
"description": "pixel: crisp, no antialiasing, for pixel art games; smooth: antialiased."
},
"charset": {
"type": "string",
"enum": [
"ascii",
"latin1",
"cyrillic",
"custom"
],
"default": "cyrillic"
},
"chars": {
"type": "string",
"maxLength": 4000,
"description": "charset=custom: exactly these characters."
},
"color": {
"type": "string",
"pattern": "^#?[0-9a-fA-F]{6}$",
"default": "#ffffff",
"description": "Glyph colour baked into the atlas (white lets the engine tint it)."
},
"outline": {
"type": "integer",
"minimum": 0,
"maximum": 8,
"default": 0
},
"outlineColor": {
"type": "string",
"pattern": "^#?[0-9a-fA-F]{6}$",
"default": "#000000"
},
"padding": {
"type": "integer",
"minimum": 0,
"maximum": 8,
"default": 1
},
"sample": {
"type": "string",
"maxLength": 200,
"default": "The quick brown fox 0123 Привіт, як справи?"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡leaderboard_boards(name, sort, minScore, maxScore, periods, ...)
Create a board with 100,000 submissions and 365 days; returns keys and a ready JS snippet. Price: $1.00 USDC via x402, charged only on success. Part of Leaderboard: A leaderboard backend for a game in one paid call, no signup: buy a board (100,000 submissions, 1 year), get a board id, a submit key for the game client and an admin key.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"sort": {
"type": "string",
"enum": [
"desc",
"asc"
],
"default": "desc",
"description": "desc: higher is better; asc: lower is better (times)"
},
"minScore": {
"type": "number"
},
"maxScore": {
"type": "number"
},
"periods": {
"type": "array",
"items": {
"type": "string",
"enum": [
"alltime",
"daily",
"weekly"
]
},
"minItems": 1,
"maxItems": 3,
"default": [
"alltime"
]
},
"signed": {
"type": "boolean",
"default": false,
"description": "Require HMAC-signed submissions (for games with a server)."
}
},
"required": [
"name"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡leaderboard_topup(boardId, adminKey)
Add 100,000 submissions and 365 days to a board. Price: $1.00 USDC via x402, charged only on success. Part of Leaderboard: A leaderboard backend for a game in one paid call, no signup: buy a board (100,000 submissions, 1 year), get a board id, a submit key for the game client and an admin key.
Eingabe-Schema
{
"type": "object",
"properties": {
"boardId": {
"type": "string"
},
"adminKey": {
"type": "string"
}
},
"required": [
"boardId",
"adminKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis