> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ngram.space/llms.txt
> Use this file to discover all available pages before exploring further.

# Build something in the room

> Compose spatial tools into concrete explanations, experiments, and shared workspaces.

These recipes use the canonical Entity's existing spatial tools. Ask the Entity to execute them in an active WebXR session. The JSON blocks show **agent tool calls**, not shell commands.

## A three-part system you can point at

Ask:

> Build a small diagram of input, memory, and output. Use three real shapes with labels, keep them still, and put a short explanation in a panel.

Start with a stationary primitive:

```json theme={null}
{
  "name": "ar_spawn_object",
  "arguments": {
    "object_id": "memory-node",
    "shape": "cube",
    "position": "front",
    "color": "#6e7dff",
    "size": 0.18,
    "label": "Memory",
    "physics": false
  }
}
```

Add input and output objects at `left` and `right`. Use stable IDs so the Entity can remove the diagram later. A shape's label names the shape; text alone is not a substitute for a geometric object.

Put the detailed explanation in a panel:

```json theme={null}
{
  "name": "ar_show_panel",
  "arguments": {
    "panel_id": "memory-explanation",
    "title": "What stays between turns",
    "panel_type": "markdown",
    "content": "**Input** enters through a surface. **Memory** supplies relevant history. **Output** returns through the active surface."
  }
}
```

## A small physics demonstration

Ask:

> Spawn a periwinkle bouncy ball in front of us with a small upward toss. Explain that this is a simulation, then let me watch it.

```json theme={null}
{
  "name": "ar_spawn_toy",
  "arguments": {
    "object_id": "demo-ball",
    "toy_type": "bouncy_ball",
    "position": "front",
    "color": "#6e7dff",
    "impulse": { "x": 0.2, "y": 1.0, "z": 0.0 }
  }
}
```

The scene handles the toy's physics. This is an interactive illustration, not a calibrated scientific measurement. Use `ar_remove_object` with `object_id: "demo-ball"` to clean up.

## A focused research corner

Ask:

> Set a focus environment, place the useful findings in a readable panel, and show a source page only if it can be opened. Keep the spoken summary short.

The action sequence is `ar_set_environment` → ordinary research tools → `ar_show_panel` → optional `ar_open_browser`. The spatial panel presents results; research and factual verification still happen through the Entity's configured tools.

## An embodied explanation

Ask:

> Step to the left, look toward me, and explain this in three sentences. Put the longer version in a panel.

Combine `ar_move_to`, `ar_look_at`, `ar_gesture`, and `ar_show_panel`. Let the shell express the movement. The answer does not need to narrate every gesture as stage directions.

## Keep the scene useful

* Use stable object and panel IDs.
* Keep content short enough to read at a comfortable distance.
* Remove temporary objects when the demonstration ends.
* Check the surface before requesting capture or generated motion.
* Confirm the rendered result instead of treating a queued action as proof of display.

See the [tool reference](/spatial/tools) for the exact parameters and supported values.
