What it does
Automata is an interactive cellular automata canvas where a human and an AI agent share one Game of Life universe. The human draws, erases, and stamps patterns by hand. The agent drives the same universe through 10 WebMCP tools: spawning catalog patterns, inventing new ones from RLE, switching rule systems, fast-forwarding up to 5,000 generations, and analyzing what emerged. Every agent action lights up on the canvas and lands in an on-screen activity feed, so the human always sees what their collaborator did.
Why it's a strong fit for WebMCP
Cellular automata are a natural human + agent collaboration. The work splits cleanly: humans sketch curiosity (a squiggle, a stamped pulsar, a splash of soup), and agents run the experiment (hundreds of generations in a blink, then a classified report of the outcome). That only works if the agent can operate the app itself, not a parallel API - which is exactly what WebMCP provides. Each of the app's 10 tools is registered through the WebMCP Imperative API with document.modelContext.registerTool, mixing read-only tools (get_state, analyze, list_patterns) with mutating ones (spawn_pattern, load_rle, set_rules, run_steps, add_noise, clear, set_running).
What people and agents can do together that was hard before
Say "add a glider gun and some chaos, run 400 generations, tell me what emerges." The agent stamps the gun, sprinkles noise, fast-forwards 400 generations, and returns a named census of the wreckage: "12 blocks, 5 blinkers, a beehive, 3 escaped gliders, stable since generation 212." The analyze tool is non-destructive - it clones the universe, simulates ahead, detects extinction, stabilization (with period), or ongoing activity, and names the objects that emerge. Then the volley continues: the human stamps a pulsar into the agent's world, the agent weaves gliders around it with load_rle, or flips the physics to HighLife or a custom B../S.. rulestring and reports what the same world does under new laws. Before WebMCP, an agent could advise about Game of Life; it couldn't sit at the same table.
How WebMCP was implemented
All 10 tools are registered via the WebMCP Imperative API (document.modelContext.registerTool), with JSON tool results. The page ships a WebMCP origin trial token so Chrome 149+ gets native WebMCP (also testable via chrome://flags/#enable-webmcp-testing); without either, a built-in shim provides the same registerTool/getTools/executeTool surface and an in-page Agent console lets you call every tool by hand. The automata engine is pure dependency-free JavaScript (grid, Life-like rule parser, pattern catalog, RLE round-trips, cycle detection, object classification) with 16 Node tests, so tool behavior is verifiable outside the browser.
Challenges and learnings
- Making analyze non-destructive: it had to clone the universe and simulate ahead without touching the live world the human is watching.
- Naming what emerges: classifying the settled state into named objects took cycle detection plus object classification, not just a population count.
- Keeping the human in the loop: every tool call highlights the canvas and posts to the activity feed.
- Dual registration path: native WebMCP via origin trial/flag, with a shim exposing the identical surface.
Log in or sign up for Devpost to join the conversation.