Skip to content

Entity tools

Create, read, change, move, duplicate and delete entities; read component schemas.

10 tools in the entity category. Badges: read-only tools never change the project; mutating tools are undoable and attributed; open-world tools reach outside the engine and MCP clients ask before running them.

Tool Summary
entity_get Full data of one entity: components (all fields), tags, vars, behaviors (intent + Wander source).
entity_create Create an entity.
entity_update Change an entity.
transform Move/rotate/scale an entity.
entity_delete Delete an entity and all its children (undoable).
entity_duplicate Copy an entity (with children, components and behaviors).
component_schema JSON schema of components (transform, mesh, light, camera) and the environment, with field docs, ranges and enums.
entity_refs Who references an entity and what it references (joint targets, camera follow, look-at, bone attachments, IK, groom/particle colliders...).
entity_copy Copy entities (with children) to a clipboard document for entity_paste — in this scene or after scene_load in another.
entity_paste Create copies of a clipboard document from entity_copy.

entity_get

Get entity read-only

Full data of one entity: components (all fields), tags, vars, behaviors (intent + Wander source).

Argument Type Required Description Values
entity integer | string yes Entity id (number) or exact name
entity_get {"entity": "Player"}
skywalker call entity_get '{"entity": "Player"}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_get",
    "arguments": {
      "entity": "Player"
    }
  }
}

entity_create

Create entity mutating

Create an entity. Shorthands: mesh (primitive name), color, position, rotation (degrees), scale. components takes full component objects, e.g. {"light": {"kind": "point", "intensity": 3}}. Returns the new id.

Argument Type Required Description Values
name string yes Display name
parent integer | string Parent entity (id or name)
mesh string Primitive: cube, sphere, plane, cylinder, cone, quad, capsule, torus
color string Base color "#rrggbb"
position number[3] Position [x, y, z] in meters
rotation number[3] Rotation [pitch, yaw, roll] in degrees
scale number[3] Scale [x, y, z]
tags string[] Tags
vars object Free-form entity variables
components object Component name -> fields
entity_create {"name": "Street", "mesh": "plane", "color": "#1a1c22", "scale": [40, 1, 40], "components": {"mesh": {"roughness": 0.12}}}
skywalker call entity_create '{"name": "Street", "mesh": "plane", "color": "#1a1c22", "scale": [40, 1, 40], "components": {"mesh": {"roughness": 0.12}}}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_create",
    "arguments": {
      "name": "Street",
      "mesh": "plane",
      "color": "#1a1c22",
      "scale": [
        40,
        1,
        40
      ],
      "components": {
        "mesh": {
          "roughness": 0.12
        }
      }
    }
  }
}

entity_update

Update entity mutating

Change an entity. Only given keys change; component objects are merged field-by-field. Set a component to null to remove it. Example: {"entity": "Lamp", "components": {"light": {"intensity": 5}}}.

Argument Type Required Description Values
entity integer | string yes Entity id (number) or exact name
name string New name
parent integer | string New parent (0 for root)
enabled boolean Enable/disable
tags string[] Replace tags
vars object Merge into vars (null deletes)
unique boolean Unique name in its prefab instance / scene: Wander find("%Name") finds it
components object Component name -> partial fields
entity_update {"entity": "Lamp", "components": {"light": {"intensity": 5}}}
skywalker call entity_update '{"entity": "Lamp", "components": {"light": {"intensity": 5}}}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_update",
    "arguments": {
      "entity": "Lamp",
      "components": {
        "light": {
          "intensity": 5
        }
      }
    }
  }
}

transform

Transform entity mutating

Move/rotate/scale an entity. Absolute: position, rotation (degrees), scale. Relative: translate, rotate. space=world interprets position in world space even if the entity has a parent.

Argument Type Required Description Values
entity integer | string yes Entity id (number) or exact name
position number[3] Absolute position
rotation number[3] Absolute rotation, degrees
scale number[3] Absolute scale
translate number[3] Relative offset
rotate number[3] Relative rotation, degrees
space string Space for position (default local) local world
transform {"entity": "Crate", "position": [2, 0.5, -3], "rotation": [0, 45, 0]}
skywalker call transform '{"entity": "Crate", "position": [2, 0.5, -3], "rotation": [0, 45, 0]}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "transform",
    "arguments": {
      "entity": "Crate",
      "position": [
        2,
        0.5,
        -3
      ],
      "rotation": [
        0,
        45,
        0
      ]
    }
  }
}

entity_delete

Delete entity mutating destructive

Delete an entity and all its children (undoable).

Argument Type Required Description Values
entity integer | string yes Entity id (number) or exact name
entity_delete {"entity": "Crate"}
skywalker call entity_delete '{"entity": "Crate"}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_delete",
    "arguments": {
      "entity": "Crate"
    }
  }
}

entity_duplicate

Duplicate entity mutating

Copy an entity (with children, components and behaviors). Optional new name and position offset. entities duplicates several together: links between them (joint targets, look-at, follow...) point at the copies, so a duplicated rig stays wired to itself. Prefab instances stay linked.

Argument Type Required Description Values
entity integer | string Entity id (number) or exact name
entities integer | string[] Several entities duplicated as one group
name string Name of the copy (single entity)
offset number[3] Offset added to the copy's position
count integer Number of copies (default 1, max 100); offsets accumulate
entity_duplicate {"entity": "Lamp", "name": "Lamp Row", "offset": [3, 0, 0], "count": 4}
skywalker call entity_duplicate '{"entity": "Lamp", "name": "Lamp Row", "offset": [3, 0, 0], "count": 4}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_duplicate",
    "arguments": {
      "entity": "Lamp",
      "name": "Lamp Row",
      "offset": [
        3,
        0,
        0
      ],
      "count": 4
    }
  }
}

component_schema

Component schema read-only

JSON schema of components (transform, mesh, light, camera) and the environment, with field docs, ranges and enums.

Argument Type Required Description Values
component string One component name; omit for all
component_schema {"component": "mesh"}
skywalker call component_schema '{"component": "mesh"}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "component_schema",
    "arguments": {
      "component": "mesh"
    }
  }
}

entity_refs

Entity references read-only

Who references an entity and what it references (joint targets, camera follow, look-at, bone attachments, IK, groom/particle colliders...). Links store the target's id plus its name, so they survive renames. Without entity: a scene-wide health check listing dangling links (pointing at nothing), links that only resolve by name (fragile), duplicate unique names and broken prefab instances, each with a fix. Example: {"entity": "Door"} before renaming or deleting it.

Argument Type Required Description Values
entity integer | string Entity to inspect; omit for the scene-wide check
limit integer Max problems listed (default 50)
entity_refs {"entity": "Door"}
skywalker call entity_refs '{"entity": "Door"}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_refs",
    "arguments": {
      "entity": "Door"
    }
  }
}

entity_copy

Copy entities read-only

Copy entities (with children) to a clipboard document for entity_paste — in this scene or after scene_load in another. Links between copied entities and prefab instances inside the copy are kept.

Argument Type Required Description Values
entities integer | string[] yes Entities to copy (their children come along)
entity_copy {"entities": [1]}
skywalker call entity_copy '{"entities": [1]}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_copy",
    "arguments": {
      "entities": [
        1
      ]
    }
  }
}

Minimal call with the required arguments; see the table for everything else.

entity_paste

Paste entities mutating

Create copies of a clipboard document from entity_copy. Links among the pasted entities point at the new copies (a pasted rig stays wired to itself); links to other entities keep their target; prefab instances stay linked. Optional parent and position offset.

Argument Type Required Description Values
data object yes The clipboard document from entity_copy
parent integer | string Parent of the pasted roots (default: none)
offset number[3] Added to each pasted root's position
entity_paste {"data": {}}
skywalker call entity_paste '{"data": {}}' --project my_game
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entity_paste",
    "arguments": {
      "data": {}
    }
  }
}

Minimal call with the required arguments; see the table for everything else.