Tool tree
gradeNot graded
read_scene_readinessAnswer
Report if the motion scene has opened, and what WebGPU this browser has. While the status is opening, the scene's own tools are not registered yet. A device without WebGPU will never open the scene. So will a device without the shader-f16 feature, or without the immediate_address_space language feature that the physics shaders need. A `reset` field appears if the saved scene was discarded and a new one opened in its place. It tells a new browser apart from a document that was thrown away. A `progress` field appears while the motion checkpoint downloads. It gives the bytes received, the total, and which shard is arriving. A page that reports progress is working, not stuck, so wait and read again instead of reloading.
View tool JSON
{
"name": "read_scene_readiness",
"kind": "answer",
"impl": "imperative",
"description": "Report if the motion scene has opened, and what WebGPU this browser has. While the status is opening, the scene's own tools are not registered yet. A device without WebGPU will never open the scene. So will a device without the shader-f16 feature, or without the immediate_address_space language feature that the physics shaders need. A `reset` field appears if the saved scene was discarded and a new one opened in its place. It tells a new browser apart from a document that was thrown away. A `progress` field appears while the motion checkpoint downloads. It gives the bytes received, the total, and which shard is arriving. A page that reports progress is working, not stuck, so wait and read again instead of reloading.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object"
}
}inspect_characterAnswer
Read the skeleton of a character file and report if it can drive the motion model. Give a .glb or .gltf that this site serves, as a URL or a site-relative path. `compatible` is the answer. `missing` lists the model's joints that the character does not have under any name. A character with missing joints can still be compatible, because a tip joint with nothing below it binds to its parent. The character can also use its own joint order, or carry joints of its own, because the tool reads its skeleton in the model's order. `reparented` lists joints whose parent is not the model's parent. The model's rotations put these joints in the wrong place. This is a warning, not a refusal. `height` is the character's height in the units of its own file. A glTF file does not say which unit it uses, so the scene scales the character to the model's height when an actor wears it. `joints` and `motionJoints` are the two joint lists, without exporter namespaces, so you can compare a rig that uses its own names. This tool reads the skeleton only. It does not put the character in the scene.
View tool JSON
{
"name": "inspect_character",
"kind": "answer",
"impl": "imperative",
"description": "Read the skeleton of a character file and report if it can drive the motion model. Give a .glb or .gltf that this site serves, as a URL or a site-relative path. `compatible` is the answer. `missing` lists the model's joints that the character does not have under any name. A character with missing joints can still be compatible, because a tip joint with nothing below it binds to its parent. The character can also use its own joint order, or carry joints of its own, because the tool reads its skeleton in the model's order. `reparented` lists joints whose parent is not the model's parent. The model's rotations put these joints in the wrong place. This is a warning, not a refusal. `height` is the character's height in the units of its own file. A glTF file does not say which unit it uses, so the scene scales the character to the model's height when an actor wears it. `joints` and `motionJoints` are the two joint lists, without exporter namespaces, so you can compare a rig that uses its own names. This tool reads the skeleton only. It does not put the character in the scene.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1
}
},
"required": [
"url"
]
}
}wear_characterAction
Put a character file on this scene's actors. If you give no `url`, the actors wear the released humanoid. The character must carry every joint that the model drives. A character that cannot is refused, and the scene stays as it was. The scene then opens again on its own run and wears the character, which takes a moment. The scene keeps this choice. The reply gives the two facts that explain a character that looks wrong on screen. `height` is the character's height in the units of its own file, and the scene scales the character to the model's height. `reparented` lists the joints whose parent is not the model's parent, so their pose is wrong.
View tool JSON
{
"name": "wear_character",
"kind": "act",
"impl": "imperative",
"description": "Put a character file on this scene's actors. If you give no `url`, the actors wear the released humanoid. The character must carry every joint that the model drives. A character that cannot is refused, and the scene stays as it was. The scene then opens again on its own run and wears the character, which takes a moment. The scene keeps this choice. The reply gives the two facts that explain a character that looks wrong on screen. `height` is the character's height in the units of its own file, and the scene scales the character to the model's height. `reparented` lists the joints whose parent is not the model's parent, so their pose is wrong.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1
}
}
}
}list_environment_assetsAnswer
List the CC0 environment assets that author_scene and the environment tools can place. nativeSize is the exact source-model width, height, and depth in scene units. suggestedScale makes the asset proportionate to a 1.7-unit actor and is the preferred starting scale.
View tool JSON
{
"name": "list_environment_assets",
"kind": "answer",
"impl": "imperative",
"description": "List the CC0 environment assets that author_scene and the environment tools can place. nativeSize is the exact source-model width, height, and depth in scene units. suggestedScale makes the asset proportionate to a 1.7-unit actor and is the preferred starting scale.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object"
}
}set_scene_lookAction
Set how the stage looks. You can set the background, the ground, the actor colours, the ambient light, the directional light, and the light's direction. A field you do not give keeps its authored default. The scene opens again after the change.
View tool JSON
{
"name": "set_scene_look",
"kind": "act",
"impl": "imperative",
"description": "Set how the stage looks. You can set the background, the ground, the actor colours, the ambient light, the directional light, and the light's direction. A field you do not give keeps its authored default. The scene opens again after the change.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"actorColors": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false
},
"default": [
[
0.32,
0.55,
0.9,
1
],
[
0.9,
0.48,
0.25,
1
]
]
},
"background": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0.955,
0.965,
0.975,
1
]
},
"cameraUp": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
1,
0
]
},
"ground": {
"type": "object",
"properties": {
"color": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false
},
"halfExtent": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number"
},
"visible": {
"type": "boolean"
}
},
"required": [
"color",
"halfExtent",
"height",
"visible"
],
"default": {
"color": [
0.82,
0.84,
0.87,
1
],
"halfExtent": 40,
"height": 0,
"visible": true
}
},
"lightDirection": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0.45,
1,
0.35
]
},
"actorCullMode": {
"enum": [
"back",
"front",
"none"
],
"default": "back"
},
"ambientIntensity": {
"type": "number",
"minimum": 0,
"default": 0.3
},
"directionalIntensity": {
"type": "number",
"minimum": 0,
"default": 0.7
}
}
}
}set_environment_entityAction
Make one environment entity, or replace one completely. Give its id. You do not send the other entities, and they do not change. The entity holds one asset from the catalogue, a transform, and a colour. The scene opens again after the change.
View tool JSON
{
"name": "set_environment_entity",
"kind": "act",
"impl": "imperative",
"description": "Make one environment entity, or replace one completely. Give its id. You do not send the other entities, and they do not change. The entity holds one asset from the catalogue, a transform, and a colour. The scene opens again after the change.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"asset": {
"type": "string"
},
"id": {
"type": "string"
},
"color": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0.62,
0.64,
0.68,
1
]
},
"position": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
0,
0
]
},
"rotation": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
0,
0
]
},
"scale": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
1,
1,
1
]
}
},
"required": [
"asset",
"id"
]
}
}remove_environment_entityAction
Remove one environment entity by id without changing the rest of the environment. The scene reopens after the change.
View tool JSON
{
"name": "remove_environment_entity",
"kind": "act",
"impl": "imperative",
"description": "Remove one environment entity by id without changing the rest of the environment. The scene reopens after the change.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}
}set_environmentAction
Replace the active scene's static environment with ECS-shaped entities. Each entity has a stable id, an asset from list_environment_assets, and transform and color components. Omitted position, rotation, scale, and color use neutral defaults. The scene reopens after the environment is saved; other scene documents remain unchanged.
View tool JSON
{
"name": "set_environment",
"kind": "act",
"impl": "imperative",
"description": "Replace the active scene's static environment with ECS-shaped entities. Each entity has a stable id, an asset from list_environment_assets, and transform and color components. Omitted position, rotation, scale, and color use neutral defaults. The scene reopens after the environment is saved; other scene documents remain unchanged.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"entities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"asset": {
"type": "string"
},
"id": {
"type": "string"
},
"color": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0.62,
0.64,
0.68,
1
]
},
"position": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
0,
0
]
},
"rotation": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
0,
0
]
},
"scale": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
1,
1,
1
]
}
},
"required": [
"asset",
"id"
]
}
}
},
"required": [
"entities"
]
}
}create_sceneAction
Make a new empty scene and open it. The scene you have now stays saved and does not change. The new scene opens paused at frame 0. It has no actors, no bodies, and no environment. It has one camera on a point target, across all of its frames. Add the actors, the environment, the motion, and the camera. Then use control_motion_scene restart before you capture.
View tool JSON
{
"name": "create_scene",
"kind": "act",
"impl": "imperative",
"description": "Make a new empty scene and open it. The scene you have now stays saved and does not change. The new scene opens paused at frame 0. It has no actors, no bodies, and no environment. It has one camera on a point target, across all of its frames. Add the actors, the environment, the motion, and the camera. Then use control_motion_scene restart before you capture.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {
"type": "string",
"default": "Untitled Scene"
},
"frameCount": {
"type": "integer",
"exclusiveMinimum": 0,
"default": 320
}
}
}
}list_scenesAnswer
List every saved scene document with its stable identity, title, current cast size, environment size, character, and active state. The scene marked active is the one the other tools act on. Use open_scene with an id from this list; create_scene and author_scene create another document without overwriting these.
View tool JSON
{
"name": "list_scenes",
"kind": "answer",
"impl": "imperative",
"description": "List every saved scene document with its stable identity, title, current cast size, environment size, character, and active state. The scene marked active is the one the other tools act on. Use open_scene with an id from this list; create_scene and author_scene create another document without overwriting these.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object"
}
}open_sceneAction
Open one saved scene document by the stable id returned from list_scenes. The current document remains saved in the catalog, and the WebMCP tools re-register on the opened scene.
View tool JSON
{
"name": "open_scene",
"kind": "act",
"impl": "imperative",
"description": "Open one saved scene document by the stable id returned from list_scenes. The current document remains saved in the catalog, and the WebMCP tools re-register on the opened scene.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"scene": {
"type": "string"
}
},
"required": [
"scene"
]
}
}author_sceneAction
Make a new scene and open it, with its actors, its motion, its camera coverage, and, if you want, its environment and stage look. Do all of this in one call. Each actor has an origin, which is where it stands in the world, in metres. It has a planar path in its own frame, as (x, z) points, and the first point is its origin. It has beats in order, and each beat is a caption from the prompt library that the actor holds for a number of frames. Each beat must start on a 40-frame boundary. The beats together must equal frameCount, and frameCount must be a multiple of 40. 20 frames make one second. A walking, running, or sprinting caption moves the actor along its path at that caption's pace. The actor performs every other caption in place. Coverage is a sequence of preset shots with no gaps (establishing, tracking, follow, close-up, low-angle, crane, reveal, hero), and each shot names an actor by its row. Environment entries use the assets that list_environment_assets returns. The render field sets the background, the ground, and the light. The scene you have now stays saved and does not change.
View tool JSON
{
"name": "author_scene",
"kind": "act",
"impl": "imperative",
"description": "Make a new scene and open it, with its actors, its motion, its camera coverage, and, if you want, its environment and stage look. Do all of this in one call. Each actor has an origin, which is where it stands in the world, in metres. It has a planar path in its own frame, as (x, z) points, and the first point is its origin. It has beats in order, and each beat is a caption from the prompt library that the actor holds for a number of frames. Each beat must start on a 40-frame boundary. The beats together must equal frameCount, and frameCount must be a multiple of 40. 20 frames make one second. A walking, running, or sprinting caption moves the actor along its path at that caption's pace. The actor performs every other caption in place. Coverage is a sequence of preset shots with no gaps (establishing, tracking, follow, close-up, low-angle, crane, reveal, hero), and each shot names an actor by its row. Environment entries use the assets that list_environment_assets returns. The render field sets the background, the ground, and the light. The scene you have now stays saved and does not change.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"story": {
"type": "object",
"properties": {
"actors": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"origin": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false
},
"path": {
"type": "array",
"minItems": 1,
"items": {
"type": "array",
"minItems": 2,
"items": [
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false
}
},
"scenario": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"frames": {
"type": "integer",
"exclusiveMinimum": 0
},
"prompt": {
"type": "string"
}
},
"required": [
"frames",
"prompt"
]
}
}
},
"required": [
"origin",
"path",
"scenario"
]
}
},
"coverage": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"end": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0
},
"preset": {
"enum": [
"close-up",
"crane",
"establishing",
"follow",
"hero",
"low-angle",
"reveal",
"tracking"
]
},
"row": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0
},
"start": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0
}
},
"required": [
"end",
"preset",
"row",
"start"
]
}
},
"frameCount": {
"type": "integer",
"exclusiveMinimum": 0
},
"title": {
"type": "string",
"minLength": 1
},
"walls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"bricksPerCourse": {
"type": "integer",
"exclusiveMinimum": 0
},
"courses": {
"type": "integer",
"exclusiveMinimum": 0
},
"offset": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false
},
"row": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0
},
"tick": {
"type": "integer",
"maximum": 4294967295,
"minimum": 0
}
},
"required": [
"bricksPerCourse",
"courses",
"offset",
"row",
"tick"
]
}
}
},
"required": [
"actors",
"coverage",
"frameCount",
"title"
]
},
"environment": {
"type": "array",
"items": {
"type": "object",
"properties": {
"asset": {
"type": "string"
},
"id": {
"type": "string"
},
"color": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0.62,
0.64,
0.68,
1
]
},
"position": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
0,
0
]
},
"rotation": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
0,
0
]
},
"scale": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
1,
1,
1
]
}
},
"required": [
"asset",
"id"
]
}
},
"render": {
"type": "object",
"properties": {
"actorColors": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false
},
"default": [
[
0.32,
0.55,
0.9,
1
],
[
0.9,
0.48,
0.25,
1
]
]
},
"background": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0.955,
0.965,
0.975,
1
]
},
"cameraUp": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0,
1,
0
]
},
"ground": {
"type": "object",
"properties": {
"color": {
"type": "array",
"minItems": 4,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false
},
"halfExtent": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number"
},
"visible": {
"type": "boolean"
}
},
"required": [
"color",
"halfExtent",
"height",
"visible"
],
"default": {
"color": [
0.82,
0.84,
0.87,
1
],
"halfExtent": 40,
"height": 0,
"visible": true
}
},
"lightDirection": {
"type": "array",
"minItems": 3,
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"additionalItems": false,
"default": [
0.45,
1,
0.35
]
},
"actorCullMode": {
"enum": [
"back",
"front",
"none"
],
"default": "back"
},
"ambientIntensity": {
"type": "number",
"minimum": 0,
"default": 0.3
},
"directionalIntensity": {
"type": "number",
"minimum": 0,
"default": 0.7
}
}
}
},
"required": [
"story"
]
}
}