Agents & API: MCP and A2A Endpoints

Simulacra is not just a website: the same small Rust server that serves

this tracker exposes every playground experiment to other machines — as an

MCP tool server, as an A2A agent, and as plain JSON. All endpoints are

public, unauthenticated, rate-limited only by politeness, and seeded, so

every result is reproducible.

MCP (Model Context Protocol)

POST /mcp speaks JSON-RPC 2.0 over stateless streamable HTTP. Six tools

are exposed: the four experiments — run_town, run_variance,

run_coevolution, run_gossip, each taking an optional integer seed —

plus list_stages and get_stage for the research documents. Point any

MCP client at the URL and it can run the playground itself.

A2A (Agent2Agent)

The same experiments are also an A2A agent. Its card is published at

/.well-known/agent.json (mirrored at /a2a/agent.json); send it a

natural-language message/send at /a2a/ — "run gossip seed 7" — and it

replies with a completed Task whose artifacts carry both a human-readable

summary and the raw JSON result. tasks/get retrieves a task by id; tasks

persist across restarts in an append-only JSONL log.

Plain JSON API

For anything that does not speak agent protocols:

Playground UI

Humans can drive the same four experiments in the browser:

simulation.lucanian.app/app/

Source

The server is std-only Rust with a hand-rolled JSON layer — no

dependencies. crates/server/src/mcp.rs and crates/server/src/a2a.rs in

the GitHub repository are the

whole implementation.