# Inspector Fields for AI Agents

> Inspector field ids for AI agents: every section the DiceyTable Inspector shows for a selected entity, with each field's kind, unit, range and class.

- Question: Which Inspector fields can an agent set?
- Source: https://diceytable.com/docs/ai-agents/reference/fields/inspector
- Last verified: 2026-10-09

These are the Inspector's fields: one panel for each section it shows when an entity is selected. Each id takes the entity it belongs to, such as `@entity:obj_12`.

## Panels in this group

27 panels, with the id prefix `inspector`. The [field catalogue](https://diceytable.com/docs/ai-agents/reference/fields) lists every group.

| Panel | Label | Tab | Fields | Actions |
|---|---|---|---|---|
| [`inspector.entity`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorentity) | ENTITY | `editor` | 9 | 4 |
| [`inspector.piece`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorpiece) | PIECE | `editor` | 7 | 0 |
| [`inspector.tooltip`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectortooltip) | TOOLTIP | `editor` | 5 | 0 |
| [`inspector.container`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorcontainer) | CONTAINER | `editor` | 11 | 8 |
| [`inspector.render`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorrender) | RENDER | `editor` | 2 | 0 |
| [`inspector.sound-sets`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorsound-sets) | SOUND SETS (BUILT-IN) | `editor` | 0 | 0 |
| [`inspector.button`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorbutton) | BUTTON | `editor` | 21 | 1 |
| [`inspector.die`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectordie) | DIE SETTINGS | `editor` | 2 | 1 |
| [`inspector.rigidbody`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorrigidbody) | RIGIDBODY | `editor` | 8 | 0 |
| [`inspector.collision`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorcollision) | COLLISION | `editor` | 4 | 2 |
| [`inspector.snap-points`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorsnap-points) | SNAP POINTS | `editor` | 0 | 1 |
| [`inspector.sound-overrides`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorsound-overrides) | SOUND OVERRIDES | `editor` | 18 | 0 |
| [`inspector.script`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorscript) | SCRIPT | `editor` | 1 | 2 |
| [`inspector.components`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorcomponents) | Engine components | `editor` | 36 | 0 |
| [`inspector.advanced`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectoradvanced) | ADVANCED | `editor` | 0 | 0 |
| [`inspector.group-transform`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorgroup-transform) | Group transform | `editor` | 14 | 3 |
| [`inspector.hierarchy-folder`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorhierarchy-folder) | Hierarchy folder | `editor` | 1 | 4 |
| [`inspector.scene-check`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorscene-check) | Scene check | `editor` | 0 | 2 |
| [`inspector.asset-pack`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorasset-pack) | Asset pack contents | `editor` | 0 | 11 |
| [`inspector.entities`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorentities) | Entities | `editor` | 0 | 2 |
| [`inspector.prefab`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorprefab) | Prefab | `editor` | 3 | 3 |
| [`inspector.model`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectormodel) | Model asset | `editor` | 0 | 2 |
| [`inspector.file`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorfile) | File | `editor` | 0 | 2 |
| [`inspector.selection`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorselection) | SELECTION | `editor` | 2 | 3 |
| [`inspector.scene`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorscene) | Scene | `editor` | 1 | 0 |
| [`inspector.template-holder`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectortemplate-holder) | FROM SEAT TEMPLATE | `editor` | 0 | 1 |
| [`inspector.rail`](https://diceytable.com/docs/ai-agents/reference/fields/inspector#inspectorrail) | Inspector navigation | `editor` | 1 | 2 |

## `inspector.entity`

**ENTITY** · surface `editor` · target `entity`

How it opens: Select the entity in the Hierarchy; the ENTITY section expands.

**Fields** (9)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.entity.enabled` | Enabled | `boolean` | — | `entity` | W | — | Disables the entity and every component on it (render, rigidbody, collision, …). The entity stays in the document. |
| `inspector.entity.name` | Name | `text` | — | `entity` | W | — | Free-form display name for humans (`displayName`). Replicated verbatim while a card is face-up — put anything that must stay hidden in secretMetadata instead. |
| `inspector.entity.slug` | Slug | `text` | — | `entity` | W | — | The entity's `label`: lowercase letters, numbers and dashes, unique in the scene (the editor slugifies and de-duplicates). Used by scripts and mods, and for a card it IS the card's identity. |
| `inspector.entity.parent` | Parent | `entity-ref` | — | `entity` | W | — | Parent entity id, or null for none. Parenting is transform and organisation only: the child is held kinematic. For two bodies that both keep simulating, use a Joint. |
| `inspector.entity.grabbable` | Grabbable | `boolean` | — | `entity` | W | — | Only for a parented entity. Off (default): grabbing it moves the whole assembly. On: it can be grabbed on its own while staying parented. Ignored while the assembly is welded. |
| `inspector.entity.tags` | Tags | `tags` | — | `entity` | W | — | Author tags ([a-z0-9_-], at most 100). Platform `dt:` tags are added by the runtime and cannot be set here. |
| `inspector.entity.position` | Position | `length-vec3` | `length` | `entity` | W | — | World position [x, y, z] in feet. Committed as a `transform` intent, like the gizmo. |
| `inspector.entity.rotation` | Rotation | `vec3` | `degrees` | `entity` | W | — | Euler rotation [x, y, z] in degrees. |
| `inspector.entity.scale` | Scale | `vec3` | — | `entity` | W | ≥ 0.001, ≤ 100 | Scale factors [x, y, z] (unitless). With the proportion lock on, one edited axis scales all three. |

**Actions** (4)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.entity.scale-lock` | Lock scale proportions | W | — | Toggle the proportional-scale lock. While on, editing one Scale axis (or dragging a scale handle) scales all three. Editor view state; nothing is saved. |
| `inspector.entity.variant-revert` | Revert to base | W | `entity` | The selected entity differs in the shown variant: go back to the base's version (an entity only this variant has is deleted from it). Undoable. |
| `inspector.entity.variant-apply-all` | Apply to all variants | W | `entity` | Give the shown variant's version of the selected entity to every variant: it becomes the base's. Undoable. |
| `inspector.entity.variant-remove` | Remove from this variant | W | `entity` | Take the selected entity out of the shown variant only; every other variant keeps it. Undoable. |

## `inspector.piece`

**PIECE** · surface `editor` · target `entity`

How it opens: Select the entity; the PIECE platform panel (kind, surface, flip and search rules).

**Fields** (7)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.piece.kind` | Type | `select` | — | `entity` | W | `card`, `deck`, `die`, `token`, `board`, `bag`, `custom`, `card-holder`, `button`, `table`, `coin` | The platform entity kind of a custom-model entity. Drives the sound mapping and the physics defaults. |
| `inspector.piece.surface` | Surface | `select` | — | `entity` | W | `wood`, `cardboard`, `metal`, `plastic`, `card`, `tile`, `felt`, `cloth`, `glass`, `stone`, `generic`, `silent` | The physical surface of a custom-model entity (wood, felt, metal, …). Drives impact sounds and the derived physics baseline. |
| `inspector.piece.flippable` | Flippable | `select` | — | `entity` | W | `auto`, `yes`, `no` | Whether the entity offers Flip. `auto` derives it from the shape (flat pieces flip, tall ones stay upright). |
| `inspector.piece.seat` | Seat | `select` | — | `entity` | W | ``, `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`, `white`, `brown` | The seat this entity belongs to (a seat id; "" = no seat). Informational only — scripts read it as handle.seat; it does not hide the entity, put it in a hand or restrict who moves it. Disabled for seat-template entities, which take their seat from the template. |
| `inspector.piece.paper-thickness` | Paper thickness (mm) | `number` | — | `entity` | W | ≥ 0.05, ≤ 3, step 0.01 | Cards and decks only: the thickness of one card, in millimetres. A deck stands thickness x cards tall, and cards dealt from it inherit the value. A standard playing card is 0.3. |
| `inspector.piece.search` | Search | `select` | — | `entity` | W | ``, `nobody`, `owner`, `host`, `owner-and-host`, `anyone` | Decks only: who may privately search the pile. The empty value (Not set) removes the override so the zone, then the default, decides. |
| `inspector.piece.after-search` | After search | `select` | — | `entity` | W | ``, `shuffle`, `preserve` | Decks only: what happens to the rest of the pile when a search closes. The empty value (Not set) inherits. |

## `inspector.tooltip`

**TOOLTIP** · surface `editor` · target `entity`

How it opens: Select the entity; the TOOLTIP section (hover tooltip: on/off, title, description, variables).

**Fields** (5)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.tooltip.enabled` | Show tooltip | `boolean` | — | `entity` | W | — | Whether hovering this entity at the table shows a tooltip. Off by default; turning it off keeps the authored text. |
| `inspector.tooltip.title` | Title | `text` | — | `entity` | W | — | The tooltip title. `{variable}` and `{variable\|fallback}` are substituted; no formatting. Empty uses the entity's name. |
| `inspector.tooltip.description` | Description | `multiline` | — | `entity` | W | — | The tooltip body: `**bold**`, `*italic*`, `[color=red]…[/color]` (or `#rrggbb`), `- ` bullets, line breaks, and `{variable}` / `{variable\|fallback}`. Built-in variables: name, kind, value, count, owner, counters.<key>, values.<key>. |
| `inspector.tooltip.show-details` | Show built-in details | `boolean` | — | `entity` | W | — | Also show the automatic detail lines under the description: a die's value, a deck's card count, counters, owner, Locked. |
| `inspector.tooltip.variables` | Variables | `multiline` | — | `entity` | W | — | Default variable values, one `name = value` per line (numbers and true/false are typed; anything else is text). Scripts can change them at play time with setTooltipVariable. |

## `inspector.container`

**CONTAINER** · surface `editor` · target `entity`

How it opens: Select a bag entity; the CONTAINER section.

**Fields** (11)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.container.form` | Form | `select` | — | `entity` | W | `holder`, `bag` | `holder`: open scenery, pieces stay physical bodies. `bag`: closed, a dropped piece is absorbed into the contents list. Switching to holder drops the contents list. |
| `inspector.container.mode` | Container mode | `select` | — | `entity` | W | `random`, `stack`, `queue` | Draw order of a finite bag: random, stack (last in, first out) or queue (first in, first out). |
| `inspector.container.capacity` | Capacity | `integer` | — | `entity` | W | ≥ 0, ≤ 1000, step 1 | Maximum pieces; 0 means unlimited. A full container refuses further drops. |
| `inspector.container.infinite` | Infinite | `boolean` | — | `entity` | W | — | Never depletes: drawing spawns a copy of one source piece. Turning it on drops the contents list; turning it off drops the source. |
| `inspector.container.secret-contents` | Secret contents | `boolean` | — | `entity` | W | — | Bag only. While the bag is not empty EVERY peer gets per-peer full snapshots and delta compression is off for the whole table — a real bandwidth cost. |
| `inspector.container.search` | Search | `select` | — | `entity` | W | ``, `nobody`, `owner`, `host`, `owner-and-host`, `anyone` | Who may privately look through this container. `""` = Not set: inherit from the zone, then the kind default. |
| `inspector.container.after-search` | After search | `select` | — | `entity` | W | ``, `shuffle`, `preserve` | What happens to the rest when a search closes. `""` = Not set (inherit). |
| `inspector.container.piece` | Piece | `select` | — | `entity` | W | — | Write a preset id (the live options) to pick the piece that Fill / Add to contents uses, or an infinite container's source. Reads back empty (it is a picker). |
| `inspector.container.fill-count` | Count | `integer` | — | `entity` | W | ≥ 1, ≤ 500, step 1 | Holder: how many copies of the picked piece Fill places. |
| `inspector.container.add-count` | Count | `integer` | — | `entity` | W | ≥ 1, ≤ 10000, step 1 | Bag: how many of the picked piece Add to contents appends. |
| `inspector.container.run-count` | Row count | `integer` | — | `entity` | W | ≥ 0, ≤ 10000, step 1 | How many of one contents row the bag starts with; 0 removes the row. Target `<object id>#<run key>`. Refused past the capacity. |

**Actions** (8)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.container.clear-piece` | Clear the picked piece | W | `entity` | Clear the piece staged in the container's piece picker (nothing is written until Fill / Add). |
| `inspector.container.clear-source` | Clear the source piece | W | `entity` | Clear an infinite container's source piece, so it adopts the first piece dropped into it. Undoable. |
| `inspector.container.fill` | Fill | W | `entity` | Spawn the picked piece `Count` times inside this holder, as ordinary entities. Undoable. |
| `inspector.container.clear-fill` | Clear filled pieces | D | `entity` | Delete every entity a Fill placed in this holder. Undoable. |
| `inspector.container.add` | Add to contents | W | `entity` | Append the picked piece `Count` times to this bag's authored contents. Refused past the capacity. Undoable. |
| `inspector.container.run-earlier` | Move row earlier | W | `entity` | Move one contents row up (row order is draw order for Stack and Queue). Target `<object id>#<run key>`. |
| `inspector.container.run-later` | Move row later | W | `entity` | Move one contents row down (row order is draw order for Stack and Queue). Target `<object id>#<run key>`. |
| `inspector.container.run-remove` | Remove row | W | `entity` | Remove one contents row from the bag. Target `<object id>#<run key>`. Undoable. |

## `inspector.render`

**RENDER** · surface `editor` · target `entity`

How it opens: Select the entity; the RENDER component section (material slots).

**Fields** (2)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.render.material` | Material | `asset-ref` | — | `entity` | W | — | The material on every slot of the entity's model (a scene material id; null clears). Per-slot entries override it. |
| `inspector.render.slot-material` | Material slot | `asset-ref` | — | `entity` | W | — | One material slot's override (a scene material id; null falls back). Target id: `<entity id>#<slot name>`. |

## `inspector.sound-sets`

**SOUND SETS (BUILT-IN)** · surface `editor` · target `entity`

How it opens: Select the entity; the SOUND SETS section.

_No field or action is registered on this panel yet. `panel_open` can still open it, and `describe_panel` / `screenshot_panel` can read it._

## `inspector.button`

**BUTTON** · surface `editor` · target `entity`

How it opens: Select a button entity; the BUTTON section.

**Fields** (21)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.button.shape` | Shape | `select` | — | `entity` | W | `rect`, `round` | Rectangular or round cap. |
| `inspector.button.width` | Width / Diameter | `length` | `length` | `entity` | W | ≥ 0.05, ≤ 4, step 0.01 | Cap size: its width (the diameter for a round button), in feet. |
| `inspector.button.depth` | Depth | `length` | `length` | `entity` | W | ≥ 0.05, ≤ 4, step 0.01 | Cap depth of a rectangular button, in feet. |
| `inspector.button.height` | Cap height | `length` | `length` | `entity` | W | ≥ 0.02, ≤ 1, step 0.005 | Cap height, in feet. |
| `inspector.button.travel` | Travel | `length` | `length` | `entity` | W | ≥ 0.005, ≤ 0.5, step 0.002 | How far the cap sinks when pressed, in feet (clamped below the cap height). |
| `inspector.button.corner-radius` | Corner rounding | `number` | — | `entity` | W | ≥ 0, ≤ 1, step 0.02 | Corner rounding of a rectangular cap as a FRACTION (0 = hard corners, 1 = fully rounded), not a length. |
| `inspector.button.edge-fillet` | Edge fillet | `number` | — | `entity` | W | ≥ 0, ≤ 1, step 0.02 | Edge fillet as a FRACTION (0 = hard edges, 1 = fully rounded), not a length. |
| `inspector.button.color-cap` | Cap | `color` | — | `entity` | W | — | Colours ▸ Cap: the cap colour (colors are [r, g, b] in 0..1). |
| `inspector.button.color-capPressed` | Cap pressed | `color` | — | `entity` | W | — | Colours ▸ Cap pressed: the cap colour while pressed. |
| `inspector.button.color-frame` | Frame | `color` | — | `entity` | W | — | Colours ▸ Frame: the frame (bezel) colour. |
| `inspector.button.color-base` | Base | `color` | — | `entity` | W | — | Colours ▸ Base: the base colour. |
| `inspector.button.color-text` | Text | `color` | — | `entity` | W | — | Colours ▸ Text: the face text colour. |
| `inspector.button.frame` | Frame | `boolean` | — | `entity` | W | — | Draw the frame (bezel) around the cap. |
| `inspector.button.frame-thickness` | Frame thickness | `length` | `length` | `entity` | W | ≥ 0.005, ≤ 0.5, step 0.002 | How far the bezel extends past the cap on each side, in feet. |
| `inspector.button.frame-height` | Frame height | `length` | `length` | `entity` | W | ≥ 0.005, ≤ 0.5, step 0.002 | How far the bezel stands proud of the base, in feet. |
| `inspector.button.face` | Face | `select` | — | `entity` | W | `none`, `text`, `image` | What the cap face shows. Switching resets the face's own settings to their defaults. |
| `inspector.button.face-text` | Label | `text` | — | `entity` | W | — | The cap's text (Face = Text). |
| `inspector.button.face-image` | Image path | `text` | — | `entity` | W | — | Repo-relative image path for the cap face (Face = Image), e.g. `assets/textures/icons/go.webp`. |
| `inspector.button.restrict` | Who can press | `select` | — | `entity` | W | `anyone`, `active-player`, `host`, `seat` | Restricts who may press it; enforced by the host where the press is applied. |
| `inspector.button.editor-pressable` | Pressable while editing | `boolean` | — | `entity` | W | — | On: a click in the editor viewport fires the button. Off: it selects it. No effect at a real table. |
| `inspector.button.event-name` | Event name | `text` | — | `entity` | W | — | What a press reports to scripts. Give each button a stable name and branch on it. |

**Actions** (1)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.button.toggle-seat` | Allowed seat | W | `seat` | Toggle whether this seat may press the selected button (Who can press = Specific seats…). |

## `inspector.die`

**DIE SETTINGS** · surface `editor` · target `entity`

How it opens: Select a die entity; the DIE SETTINGS section.

**Fields** (2)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.die.background` | Background | `color` | — | `entity` | W | — | The die body's colour (basic dice only). |
| `inspector.die.numbers` | Numbers | `color` | — | `entity` | W | — | The die's pip/number colour (basic dice only). |

**Actions** (1)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.die.reset` | Reset | W | `entity` | Remove the die's custom colours (back to the preset's). Undoable. |

## `inspector.rigidbody`

**RIGIDBODY** · surface `editor` · target `entity`

How it opens: Select the entity; the RIGIDBODY component section.

**Fields** (8)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.rigidbody.enabled` | Enabled | `boolean` | — | `entity` | W | — | Rigidbody is built in to every entity. Disabling takes the body out of the simulation without losing its settings. |
| `inspector.rigidbody.weld-children` | Weld children | `boolean` | — | `entity` | W | — | Only on an entity with parented children. On: the assembly becomes ONE physics body with combined mass. Welded children cannot be grabbed individually. |
| `inspector.rigidbody.type` | Type | `select` | — | `entity` | W | `static`, `dynamic`, `kinematic` | Body simulation mode. |
| `inspector.rigidbody.mass` | Mass | `number` | — | `entity` | W | ≥ 0.001, step 0.01 | Mass in kilograms (> 0). Only meaningful for a dynamic body. |
| `inspector.rigidbody.friction` | Friction | `number` | — | `entity` | W | ≥ 0, ≤ 1, step 0.01 | Coulomb friction coefficient, 0..1. |
| `inspector.rigidbody.restitution` | Restitution | `number` | — | `entity` | W | ≥ 0, ≤ 1, step 0.01 | Bounce (bounciness), 0..1. |
| `inspector.rigidbody.linear-damping` | Linear Damping | `number` | — | `entity` | W | ≥ 0, ≤ 1, step 0.01 | Linear velocity damping, 0..1. |
| `inspector.rigidbody.angular-damping` | Angular Damping | `number` | — | `entity` | W | ≥ 0, ≤ 1, step 0.01 | Angular velocity damping, 0..1. |

## `inspector.collision`

**COLLISION** · surface `editor` · target `entity`

How it opens: Select the entity; the COLLISION component section.

**Fields** (4)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.collision.enabled` | Enabled | `boolean` | — | `entity` | W | — | Collision is built in to every entity. Disabling makes it pass through others while staying visible. |
| `inspector.collision.shape` | Shape | `select` | — | `entity` | W | `auto`, `box`, `sphere`, `capsule`, `cylinder`, `convexHull`, `mesh` | Collision geometry. Box, sphere and capsule are fastest; convex hull and mesh are more accurate but slower (mesh suits static bodies). `auto` keeps the per-kind behaviour. |
| `inspector.collision.size` | Size | `length-vec3` | `length` | `entity` | W | ≥ 0.001 | Collision box FULL size [x, y, z] in feet, in the model's local frame (before the entity's scale). Box colliders on custom models only. |
| `inspector.collision.offset` | Offset | `length-vec3` | `length` | `entity` | W | — | Collision box centre offset [x, y, z] in feet, in the model's local frame (before the entity's scale). |

**Actions** (2)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.collision.edit-box` | Edit Collision Box | W | `entity` | Toggle the draggable collision-box gizmo in the viewport for this entity. |
| `inspector.collision.reset-fit` | Reset to fit | W | `entity` | Drop the authored collision size/offset override so the box auto-fits the model again. Undoable. |

## `inspector.snap-points`

**SNAP POINTS** · surface `editor` · target `entity`

How it opens: Select a custom-model entity; its SNAP POINTS section.

**Actions** (1)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.snap-points.edit` | Edit / Attach snap points… | W | `entity` | Open this model's prefab (creating it if it has none) in the Prefab tab, where the snap points (slots) that ride on the piece are authored, with hinges (joints) and models attached to it. |

## `inspector.sound-overrides`

**SOUND OVERRIDES** · surface `editor` · target `entity`

How it opens: Select the entity; the SOUND OVERRIDES section.

**Fields** (18)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.sound-overrides.place` | place | `select` | — | `entity` | W | — | The sound this entity plays on `place`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.pickup` | pickup | `select` | — | `entity` | W | — | The sound this entity plays on `pickup`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.drop` | drop | `select` | — | `entity` | W | — | The sound this entity plays on `drop`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.slide` | slide | `select` | — | `entity` | W | — | The sound this entity plays on `slide`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.shuffle` | shuffle | `select` | — | `entity` | W | — | The sound this entity plays on `shuffle`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.roll` | roll | `select` | — | `entity` | W | — | The sound this entity plays on `roll`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.fall` | fall | `select` | — | `entity` | W | — | The sound this entity plays on `fall`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.topple` | topple | `select` | — | `entity` | W | — | The sound this entity plays on `topple`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.withdraw` | withdraw | `select` | — | `entity` | W | — | The sound this entity plays on `withdraw`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.collect` | collect | `select` | — | `entity` | W | — | The sound this entity plays on `collect`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.return-to-box` | return-to-box | `select` | — | `entity` | W | — | The sound this entity plays on `return-to-box`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.board-clear` | board-clear | `select` | — | `entity` | W | — | The sound this entity plays on `board-clear`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.box-pickup` | box-pickup | `select` | — | `entity` | W | — | The sound this entity plays on `box-pickup`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.box-place` | box-place | `select` | — | `entity` | W | — | The sound this entity plays on `box-place`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.bag-rummage` | bag-rummage | `select` | — | `entity` | W | — | The sound this entity plays on `bag-rummage`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.counter-land` | counter-land | `select` | — | `entity` | W | — | The sound this entity plays on `counter-land`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.counter-fall` | counter-fall | `select` | — | `entity` | W | — | The sound this entity plays on `counter-fall`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |
| `inspector.sound-overrides.press` | press | `select` | — | `entity` | W | — | The sound this entity plays on `press`: `default`, `builtin:<surface material>` or `mod:<sound set name>` (one of this mod's own uploaded sounds). |

## `inspector.script`

**SCRIPT** · surface `editor` · target `entity`

How it opens: Select the entity; the SCRIPT section (attachment and script variables).

**Fields** (1)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.script.script` | Script | `select` | — | `entity` | W | — | The scene script attached to this entity (a script id; "" for none). Prefer script_attach, which also sets variables. |

**Per-instance field families**

| Id pattern | Materialised from |
|---|---|
| `script.var.<name>` | One field per variable the attached script declares — on the attaching entity for an object script, per scene-script id for a scene script. |

**Actions** (2)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.script.edit` | Edit | R | `entity` | Open the entity's attached script in the Script editor. |
| `inspector.script.new` | + New | W | `entity` | Create a new script written for this entity's kind, attach it, and open it. Prefer script_write to fill it. |

## `inspector.components`

**Engine components** · surface `editor` · target `entity`

How it opens: Select the entity; each added engine component (LIGHT, CAMERA) renders its own section.

**Derived field families** (2)

| Id pattern | Family | Fields | Keys | Target |
|---|---|---|---|---|
| `component.light.<key>` | `light` component properties | 29 | `type`, `color`, `intensity`, `range`, `falloffMode`, `innerConeAngle`, `outerConeAngle`, `isStatic`, `bake`, `bakeDir`, `bakeNumSamples`, `bakeArea`, `affectLightmapped`, `affectDynamic`, `affectSpecularity`, `castShadows`, `shadowUpdateMode`, `shadowResolution`, `numCascades`, `shadowDistance`, `shadowIntensity`, `shadowType`, `shadowSamples`, `shadowBlockerSamples`, `penumbraSize`, `penumbraFalloff`, `shadowBias`, `normalOffsetBias`, `layers` | `entity` |
| `component.camera.<key>` | `camera` component properties | 7 | `projection`, `fov`, `orthoHeight`, `clearColor`, `nearClip`, `farClip`, `priority` | `entity` |

## `inspector.advanced`

**ADVANCED** · surface `editor` · target `entity`

How it opens: Select the entity; the ADVANCED section (guid, path, local transform).

_No field or action is registered on this panel yet. `panel_open` can still open it, and `describe_panel` / `screenshot_panel` can read it._

## `inspector.group-transform`

**Group transform** · surface `editor` · singleton (no target)

How it opens: Multi-select two or more entities in the Hierarchy.

**Fields** (14)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.group-edit.scope` | Scope | `select` | — | — | W | — | Which entities GROUP EDIT acts on: all descendants / direct children of the selected row, entities matching every active #tag pill, or the selection. |
| `inspector.group-edit.seat` | Seat | `select` | — | — | W | `mixed`, ``, `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`, `white`, `brown` | Assign every entity in the GROUP EDIT scope (a whole Hierarchy folder, recursively; a #tag set; or the selection) to one seat, in one undo step; "" clears it. Reads "mixed" when they disagree (setting "mixed" does nothing). Seat-template entities are skipped. |
| `inspector.group-transform.position-mode` | Position applies to | `select` | — | — | W | `individual`, `group` | `group`: Position is the layout's centre and moves the whole layout. `individual`: a value sets every selected entity to it on that axis. |
| `inspector.group-transform.rotation-mode` | Rotation applies to | `select` | — | — | W | `individual`, `group` | `group`: Rotation is degrees to turn the whole layout by, about its centre (reads back 0 after applying). `individual`: sets every entity's own rotation on that axis. |
| `inspector.group-transform.scale-mode` | Scale applies to | `select` | — | — | W | `individual`, `group` | `group`: Scale is a multiplier for the whole layout — sizes and spacing (reads back 1 after applying). `individual`: sets every entity's own scale on that axis. |
| `inspector.group-transform.position-x` | Position X | `length` | `length` | — | W | — | Group mode: the layout centre's X. Individual mode: every entity's X (reads null while they differ). World feet. |
| `inspector.group-transform.position-y` | Position Y | `length` | `length` | — | W | — | Group mode: the layout centre's Y. Individual mode: every entity's Y (reads null while they differ). World feet. |
| `inspector.group-transform.position-z` | Position Z | `length` | `length` | — | W | — | Group mode: the layout centre's Z. Individual mode: every entity's Z (reads null while they differ). World feet. |
| `inspector.group-transform.rotation-x` | Rotation X | `angle` | `degrees` | — | W | step 15 | Degrees. Group mode: turn the layout by this much about X. Individual mode: every entity's X rotation. |
| `inspector.group-transform.rotation-y` | Rotation Y | `angle` | `degrees` | — | W | step 15 | Degrees. Group mode: turn the layout by this much about Y. Individual mode: every entity's Y rotation. |
| `inspector.group-transform.rotation-z` | Rotation Z | `angle` | `degrees` | — | W | step 15 | Degrees. Group mode: turn the layout by this much about Z. Individual mode: every entity's Z rotation. |
| `inspector.group-transform.scale-x` | Scale X | `number` | — | — | W | ≥ 0.01, step 0.1 | Group mode: multiply the layout along X. Individual mode: every entity's own X scale. |
| `inspector.group-transform.scale-y` | Scale Y | `number` | — | — | W | ≥ 0.01, step 0.1 | Group mode: multiply the layout along Y. Individual mode: every entity's own Y scale. |
| `inspector.group-transform.scale-z` | Scale Z | `number` | — | — | W | ≥ 0.01, step 0.1 | Group mode: multiply the layout along Z. Individual mode: every entity's own Z scale. |

**Actions** (3)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.group-edit.show-all` | Show all | W | — | Enable every entity in the group-edit scope. |
| `inspector.group-edit.hide-all` | Hide all | W | — | Disable every entity in the group-edit scope. |
| `inspector.group-edit.clear-seat` | Clear seat | W | — | Remove the seat from every entity in the group-edit scope (seat-template entities are skipped). Undoable. |

## `inspector.hierarchy-folder`

**Hierarchy folder** · surface `editor` · singleton (no target)

How it opens: Select a user Folder row in the Hierarchy.

**Fields** (1)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.hierarchy-folder.name` | Name | `text` | — | — | W | — | The selected author folder's name (1–80 characters; whitespace-only is ignored). Folders are organisation only. |

**Actions** (4)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.hierarchy-folder.select-contents` | Select contents | R | — | Select everything in the selected folder, so the gizmo and GROUP EDIT act on it. |
| `inspector.hierarchy-folder.new-subfolder` | New subfolder | W | — | Create an empty folder inside the selected author folder. Undoable. |
| `inspector.hierarchy-folder.ungroup` | Ungroup | W | — | Remove the selected author folder and keep everything in it. Undoable. |
| `inspector.hierarchy-folder.delete-with-contents` | Delete with contents | D | — | Delete the selected author folder AND every entity or snap point in it. Undoable. |

## `inspector.scene-check`

**Scene check** · surface `editor` · singleton (no target)

How it opens: Select the Entities folder in the Hierarchy.

**Actions** (2)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.scene-check.fix-all` | Measure and save colliders | W | — | Write the runtime's measured collider onto every fixable Scene Check finding. Models still loading are skipped and reported. Undoable. |
| `inspector.scene-check.select-finding` | Select finding | R | `entity` | Select the entity a Scene Check finding is about. |

## `inspector.asset-pack`

**Asset pack contents** · surface `editor` · singleton (no target)

How it opens: Asset editor: select the Prefabs, Decks, Materials, Textures or Scripts row (or a deck / script under it).

**Actions** (11)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.asset-pack.new-prefab` | + New prefab | W | — | Create a new prefab definition in the Asset pack. |
| `inspector.asset-pack.show-prefabs` | Show in explorer | R | — | Show the pack's prefabs in the explorer. |
| `inspector.asset-pack.bundle-all-decks` | Bundle all decks | W | — | Bundle every deck definition into the published pack document. |
| `inspector.asset-pack.show-decks` | Show in explorer | R | — | Show the pack's decks in the explorer. |
| `inspector.asset-pack.open-deck` | Open in deck editor | R | `asset` | Open the selected deck in the Deck tab. |
| `inspector.asset-pack.toggle-deck-bundled` | Bundle into pack / Remove from pack | W | `asset` | Toggle whether the selected deck definition rides inside the published pack. |
| `inspector.asset-pack.show-materials` | Show in explorer | R | — | Show the project's materials in the explorer. |
| `inspector.asset-pack.show-textures` | Show in explorer | R | — | Show the project's images in the explorer. |
| `inspector.asset-pack.show-scripts` | Show in explorer | R | — | Show the pack's scripts in the explorer. |
| `inspector.asset-pack.open-script` | Open in script editor | R | `script` | Open the selected script in the Script editor. |
| `inspector.asset-pack.delete-script` | Delete script | D | `script` | Delete the selected script from the pack (the editor asks first). |

## `inspector.entities`

**Entities** · surface `editor` · singleton (no target)

How it opens: Select the Entities folder in the Hierarchy.

**Actions** (2)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.entities.add-token` | + Add Token | W | — | Add a token entity to the scene. Prefer entity_create. |
| `inspector.entities.new-folder` | New Folder | W | — | Create an empty Hierarchy folder to file entities into. |

## `inspector.prefab`

**Prefab** · surface `editor` · singleton (no target)

How it opens: Select a prefab row in the Hierarchy; fields edit the selected prefab.

**Fields** (3)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.prefab.name` | Name | `text` | — | — | W | — | The selected prefab's name. |
| `inspector.prefab.color` | Color | `color` | — | — | W | — | The selected prefab's tint as [r, g, b] in 0..1. |
| `inspector.prefab.script` | Script | `select` | — | — | W | — | The scene script bound to the selected prefab (a script id; "" for none). Every copy picks it up. |

**Actions** (3)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.prefab.edit-script` | Edit script | R | — | Open the prefab's bound script in the Script editor. |
| `inspector.prefab.place-copy` | Place copy | W | — | Place a copy of the selected prefab on the table. |
| `inspector.prefab.delete` | Delete prefab | D | — | Delete the selected prefab (the editor asks first). |

## `inspector.model`

**Model asset** · surface `editor` · singleton (no target)

How it opens: Select a model row in the Hierarchy or the explorer.

**Actions** (2)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.model.open-editor` | Open in model editor | R | — | Open the selected model (or assembly) in its editor tab. |
| `inspector.model.place` | Place on table | W | — | Place the selected model on the table as a new entity. |

## `inspector.file`

**File** · surface `editor` · singleton (no target)

How it opens: Select a file in the explorer.

**Actions** (2)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.file.delete` | Delete | H | — | Requires the user's confirmation in the DiceyTable tab. Delete this hidden editor file from the project. Prefer asset_delete. |
| `inspector.file.open-editor` | Open in code editor | R | — | Open this text file in the File editor. |

## `inspector.selection`

**SELECTION** · surface `editor` · singleton (no target)

How it opens: Multi-select two or more entities (Ctrl+click in the Hierarchy or viewport).

**Fields** (2)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.selection.gizmo-scale` | Scale gizmo | `select` | — | — | W | `both`, `size`, `spacing` | What the scale gizmo does to a multi-selection: resize and spread, resize only, or spread only. View state. |
| `inspector.selection.tag-all` | Tag all | `tags` | — | — | W | — | Tags to ADD to every selected entity (a write-only list: it empties after each commit). |

**Actions** (3)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.selection.detach-all` | Detach all | W | — | Detach every selected entity to the scene root. Undoable. |
| `inspector.selection.parent-to-primary` | Parent to primary | W | — | Parent every other selected entity to the primary selection. Undoable. |
| `inspector.selection.delete` | Delete | D | — | Delete every selected entity. Prefer entity_delete. |

## `inspector.scene`

**Scene** · surface `editor` · singleton (no target)

How it opens: Clear the selection (Escape); the Inspector shows the scene itself.

**Fields** (1)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.scene.name` | Scene name | `text` | — | — | W | — | The scene's name (shown in the Inspector when nothing is selected). |

## `inspector.template-holder`

**FROM SEAT TEMPLATE** · surface `editor` · target `entity`

How it opens: Select a card holder generated by the seat template; its read-only panel points at the template.

**Actions** (1)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.template-holder.edit-template` | Edit Template | R | `entity` | Select the seat template this card holder is generated from (edits there reach every seat). |

## `inspector.rail`

**Inspector navigation** · surface `editor` · singleton (no target)

How it opens: Select any entity; the chip strip, field filter and collapse/expand buttons at the top of the Inspector.

**Fields** (1)

| Field id | Label | Kind | Unit | Target | Class | Range / options | Description |
|---|---|---|---|---|---|---|---|
| `inspector.rail.filter` | Filter fields… | `text` | — | — | W | — | Narrows the Inspector to sections and fields whose label matches. Hidden sections' fields are not on screen, so clear this before looking for a field. |

**Actions** (2)

| Action id | Label | Class | Target | Description |
|---|---|---|---|---|
| `inspector.rail.collapse-all` | Collapse all sections | W | — | Collapse every Inspector section. View state only; a collapsed section's fields are not on screen. |
| `inspector.rail.expand-all` | Expand all sections | W | — | Expand every Inspector section so all of the selected entity's fields are on screen. View state only. |
