Tool dialects
GET /v1/envs/:slug/tools?format=:
native:{ name, description, inputSchema, rung, attention, scores }per tool, with what the twin knows about it.openai:{ type: "function", function: { name, description, parameters } }entries, ready for a chat completions or Responses request.anthropic:{ name, description, input_schema }entries, ready for a messages request.
A call
requestor is assistant (the model asked) or user (a person or a
harness asked); it is recorded, not enforced. The result:
content: the tool’s answer as text, exactly as the agent should see it.error: the tool answered with an error (the way production would).fidelity: the grade of this answer:A_executed(provided or custom code ran),B_twin(the world model),B_replayed(a recorded answer),B_inferred,B_simulated(a model imagined it).rung: which rung answered.downgraded: the bound rung could not answer and a lower one did (the tool page says why).callId: the call’s id in the transcript.
notReady, retry after a moment.
Seeding
Words seed a session on the fly: the twin turns them into rows for the entities they mention. A named scenario is a seed spec the mirror’s config defines (rows per entity, files, a clock), reproducible by name.seed makes generated values deterministic.