Play interactively

Before you build the automated loop you can play the game by hand: point an agent CLI at the engine’s MCP endpoint and let it call the tools while you decide. Ready-made configs and runbooks ship in the starter under mcp-play/ (one for Claude Code, one for OpenCode); copy the relevant file into your own project root, or run the CLI from that folder. The engine grants control to the most recent MCP session, so connecting takes over from any other client.

The default endpoint is http://localhost:8000/mcp (the URL serve prints; edit it for a hosted engine). The browser display is at http://localhost:8000/ and liveness at http://localhost:8000/healthz.

The loop

Play is the same lockstep loop the automated runner uses:

  1. list_scenarios in the lobby. Scenario IDs are <template>@<map> pairs, so a listing of five templates over three maps is fifteen entries.
  2. start_episode with a scenario ID (optional seed); it returns the frozen tick-0 observation.
  3. Read contacts and truck vision, use building_to_coords and travel_time to plan, then dispatch trucks.
  4. next_tick(expected_tick = observation.tick) to advance exactly one tick, and repeat until the observation is terminal.

Only the outer runner (you) calls next_tick. The full tool reference is in the API guide.

Tip: NetHack rules apply. Never trust an unidentified item - treat every unverified report the same way. Don’t fight what you can’t beat - there are always fewer trucks than fires, so triage instead of chasing everything. And every death teaches: episodes are seeded and restartable, so treat each YASD (Yet Another Stupid Dispatch) as data, not defeat. You’re driving the game through an agent, so use it: tell it to play by NetHack rules, or ask it to explain what NetHack is.