An AI agent plays a game inside a rendered 3D scene by calling the RakuAI
Spatial API — the same 17 native MCP tools an LLM uses to drive the runtime
(add_scene_node, set_node_transform, get_scene_state,
remove_scene_node, capture_scene …). Every move below is a real tool
call against a scene graph; watch the live tool-call feed on the right.
You play: move the mouse / drag to aim the reticle, click / tap to fire —
each action emits the same set_node_transform / remove_scene_node
calls the agent makes. Drag empty space to orbit the camera.
The game above runs the Spatial-API contract in your browser (local mode — always
works, no login). To prove the same calls reach the production runtime, paste an
API key and run a real round-trip against api.rakuai.com.
Probe sequence: POST /api/raku/scenes → POST …/nodes →
GET …/nodes → DELETE …/nodes/{id}. Real HTTP status + node IDs
are shown in the feed. No key? It honestly reports that the call was not authorized.
An investor-grade demo earns trust by being precise about its seams. Here is exactly what this page does.
tools.v1.json — identical tool names, argument shapes, and return payloads
(node ids, transforms, physics, capture_scene SVG).?splat=…), and the renderer draws
whatever the scene graph contains — drive the API, objects appear/move/vanish.get_scene_state → choose target → set_node_transform → fire →
remove_scene_node), with hit detection and scoring — visible in the feed./api/raku/scenes/*) and shows the real HTTP responses — no faking: a
missing/!invalid key reports the real error.window.RakuSpatial and window.RakuArena are exposed, so a real LLM
agent (e.g. Claude in the browser) can drive this scene directly from the console.get_scene_state over REST/WS.