Skip to main content
88 routes. Every example runs with LITMUS_URL, LITMUS_TOKEN and LITMUS_ORG (your org tag) set in your shell (see Authentication). A $NAME in a path is an id you read from the listing route on this page; a <field> in a body is a value you supply, and every field the handler reads is shown, so send only the ones you need. Fields are what the handler’s source reads and writes, listed mechanically; they are not a schema.

GET /v0/bundles

The gallery, as whoever is asking may see it. Query parameters the handler or its helper reads: org Response fields written in the handler: bundles

GET /v0/bundles/{bundle_id}/manifest

The bundle’s tool registry — exactly what an agent sees on tools/list. Path parameters: bundle_id Response fields written in the handler: bundle_id, readonly_tools, tool_count, tools

GET /v0/bundles/{bundle_id}/axes

The admitted parameter axes for a bundle — the knobs a world can be designed with (deterministic; same machinery as profiles). Path parameters: bundle_id Response fields written in the helper the handler answers through: available, awaiting_customer_data, axes, reason, rejected, sample_vectors, tier

POST /v0/orgs/{orgtag}/apidoor

Compile and serve an org’s API door from evidence the workspace holds. Path parameters: orgtag Body fields the handler or its helper reads: bundle_id, capture, description_overrides, grammar, quota_limit Response fields written in the helper the handler answers through: bundle_id, census, compile, id, note, org, recompiled, reused_token, token_id, tool_names, world (added to a stored record whose own keys are not in the source) This call changes state in the org.

GET /v0/orgs/{orgtag}/apidoor

What API doors this org has: bundle id, the worlds served, and for each world the base URL a wrapper points its upstream at beside the gaps URL it must be handed with. Path parameters: orgtag Response fields written in the helper the handler answers through: doors, org

POST /v0/orgs/{orgtag}/sandboxes/{sid}/door

Mint a hosted door for this sandbox: its API mock on a public URL. Path parameters: orgtag, sid Body fields the handler or its helper reads: label, version Response fields written in the handler: door This call changes state in the org.

GET /v0/orgs/{orgtag}/sandboxes/{sid}/door

This sandbox’s hosted doors, oldest first, revoked ones included with their revoked_at: a door somebody just killed has to be seen dead. Path parameters: orgtag, sid Response fields written in the handler: doors

DELETE /v0/orgs/{orgtag}/sandboxes/{sid}/door/{tid}

Revoke one door. One-way (worldtokens.revoke): the URL answers the serving plane’s one 404 from the next request, and its tally is written down as it stood. Path parameters: orgtag, sid, tid Response fields written in the handler: door This call changes state in the org.

POST /v0/orgs/{orgtag}/sandboxes/{sid}/door/{tid}/reset

Put the door’s world back to the state it was drawn at — the same answer <door>/_litmus/reset gives the token holder. Path parameters: orgtag, sid, tid Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed. This call changes state in the org.

GET /v0/orgs/{orgtag}/sandboxes/{sid}/door/{tid}/tally

What this door has answered: counts by route template and status, unserved requests by method, how many the limit refused and how many resets. Never a body, a query string, a path or an id. Path parameters: orgtag, sid, tid Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed.

POST /v0/orgs/{orgtag}/served-repo

Connect a customer’s own MCP server as a served_repo surface. Path parameters: orgtag Query parameters the handler or its helper reads: wait Body fields the handler or its helper reads: door, installation, token_env, url Response fields written in the handler: job, poll, record, stages, state This call changes state in the org.

GET /v0/orgs/{orgtag}/served-repo

This org’s served repositories: pins and counts only, each with its state — connecting, connected or refused. Path parameters: orgtag Response fields written in the handler: org, served_repos

GET /v0/orgs/{orgtag}/served-repo/{rid}

One registration’s status read: the listing’s row for it — connecting with the stages finished and their seconds, connected with its counts, or refused with the redacted refusal. A read token’s route, redacted as the listing is; a record of another org answers as one that does not exist. Path parameters: orgtag, rid Response fields written in the helper the handler answers through: commit, connected_at, door, egress, held, id, job, kind, label, manifest_hash, operations, ref, ref_words, refusal, refused_at, removed_at_checkout, replaced_earlier, response_keys, retired_at, serving, stages, state, superseded_by, surface_id, tier, transport, upstream_env, versions

GET /v0/orgs/{orgtag}/served-repo/{rid}/read

One served version’s client read: the route keys and field_codes the door is handed for it, read over its cached checkout (or the read stored at registration) — what a try’s door serves codes by, seen without a run. Each route row names the forms its read took and, read under no key, a trace of where its body went instead, by function name. Names and literals of their source only; a record of another org answers as one that does not exist, as the status read does. Path parameters: orgtag, rid Response fields written in the helper the handler answers through: commit, id, read, ref, source

POST /v0/orgs/{orgtag}/environments/{env_id}/tasks/{index}/turns

POST …/environments/{env}/tasks/{index}/turns with {turns, by, note?}: scripted follow-up user turns on one task (tasktags.set_turns). The runner plays them in order; nothing reacts to the agent’s answer, and the task says so. Path parameters: orgtag, env_id, index Body fields the handler or its helper reads: by, note, turns Response fields written in the handler: by, environment, index, turns, turns_kind, turns_tier This call changes state in the org.

GET /v0/orgs/{orgtag}/surfaces

Every surface this org serves, with the environments it hosts. Path parameters: orgtag Query parameters the handler or its helper reads: superseded Response fields written in the helper the handler answers through: agent_door, hero, org, previous, surfaces

GET /v0/orgs/{orgtag}/surfaces/{surface}/representation

This surface’s representation — what the BUILDER offers and what the ONTOLOGY PAGE shows. Path parameters: orgtag, surface Query parameters the handler or its helper reads: count, limit, offset, part, version Response fields written in the helper the handler answers through: ontology_version (added to a stored record whose own keys are not in the source)

GET /v0/orgs/{orgtag}/surfaces/{surface}/progress

GET …/surfaces/{surface}/progress — where the agent started on this system and what it took to get to the last mile: every agent version with a landed run on the system or a declared version of it (variant_of), oldest first; per version, per golden path, met / not met / not decided / untested at the weakest tier of its verdicts, with the first version that met it; per known failure mode, the version at which it stopped reproducing; per version, what changed (the run’s label, the agent version’s notes, or the system’s declared change). Path parameters: orgtag, surface Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed.

POST /v0/orgs/{orgtag}/surfaces/{surface}/world/redraw

POST /v0/orgs/{orgtag}/surfaces/{surface}/world/redraw. Path parameters: orgtag, surface Body fields the handler or its helper reads: model, reason, reauthor, regate, reobserve, revert, seed Response fields written in the helper the handler answers through: environments_refreshed, held_to_observed, observed_changed, previous_kept, reauthor, record, redrawn, regated, reobserved, resolved_by, reverted, seed, surface, tier, worlds_reset This call changes state in the org.

POST /v0/orgs/{orgtag}/surfaces/{surface}/rebuild

Rebuild a derived surface version in place under the current compiler. Path parameters: orgtag, surface Body fields the handler or its helper reads: mode, reason Response fields written in the handler: code, error, surface This call changes state in the org.

POST /v0/orgs/{orgtag}/surfaces/{surface}/world/revert

POST /v0/orgs/{orgtag}/surfaces/{surface}/world/revert. Path parameters: orgtag, surface Body fields the handler or its helper reads: reason Response fields written in the helper the handler answers through: environments_refreshed, held_to_observed, observed_changed, previous_kept, reauthor, record, redrawn, regated, reobserved, resolved_by, reverted, seed, surface, tier, worlds_reset This call changes state in the org.

POST /v0/orgs/{orgtag}/surfaces/{surface}/supersede

Mark one surface superseded by another this org serves. Path parameters: orgtag, surface Body fields the handler or its helper reads: reason, superseded_by Response fields written in the handler: superseded This call changes state in the org.

POST /v0/orgs/{orgtag}/surfaces/{surface}/unsupersede

Lift a supersession: the surface is listed by default again. Path parameters: orgtag, surface Response fields written in the handler: restored This call changes state in the org.

POST /v0/orgs/{orgtag}/surfaces/{surface}/retire

Take one surface, and every state of it, off this org’s pages. Path parameters: orgtag, surface Body fields the handler or its helper reads: by, reason Response fields written in the handler: retired This call changes state in the org.

POST /v0/orgs/{orgtag}/surfaces/{surface}/restore

Put a retired surface back on this org’s pages. Path parameters: orgtag, surface Body fields the handler or its helper reads: by, reason Response fields written in the handler: restored This call changes state in the org.

GET /v0/orgs/{orgtag}/retired

THE OPERATOR VIEW: what this org has retired, and what it was. Path parameters: orgtag Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed.

GET /v0/orgs/{orgtag}/environments/{env_id}/revisions

GET /v0/orgs/{org}/environments/{env_id}/revisions — this sandbox’s revisions, newest first, at most afteringest.REVISIONS_LISTED, each as GET …/revisions/{rev} answers it, with n (every one it holds). An environment with none answers an empty list. Counts and ids only. Path parameters: orgtag, env_id Response fields written in the helper the handler answers through: environment, n, revisions, tier

GET /v0/orgs/{orgtag}/environments/{env_id}/revisions/{rev}

GET /v0/orgs/{org}/environments/{env_id}/revisions/{rev} — one revision as it stands: its kind and state, the audit’s before/after counts (rows that contradict each other, realism flags) with what came out worse and whether the re-draw held, what it kept, and the jobs it ran with each one’s cost — priced once ended, its estimate while running. The one number that says a re-draw held was readable only from the pass job’s result once the pass ended. 404 for a revision this org or this sandbox does not hold. Counts and ids only; no model call. Path parameters: orgtag, env_id, rev Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed.

POST /v0/orgs/{orgtag}/environments/{env_id}/revisions/{rev}/restore

POST /v0/orgs/{org}/environments/{env_id}/revisions/{rev}/restore — put back what an applied act replaced: the draw, the tasks and the verifiers kept under rev. {reason?}. The state it replaces is kept as a revision too (undo in the answer), so restoring that undoes this. 404 for a revision this org or this sandbox does not hold; 409 while a run, a pipeline, a re-draw or a re-author is live on the sandbox, and for a revision already restored. Counts and ids only. Path parameters: orgtag, env_id, rev Body fields the handler or its helper reads: by, reason Response fields written in the handler: error, revision This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/generate

Generate N environments for one selection of dimension values. Path parameters: orgtag Body fields the handler or its helper reads: bundle, count, criteria, criteria_only, exemplars, history, kind_floor, model, representation, selection, situations, surface, surface_version, tasks, voice, web Response fields written in the helper the handler answers through: checks, count, job, note, selection, stage, stages, surface, surface_version, tasks, voice This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/for-criteria

POST /v0/orgs/{org}/environments/for-criteria. Path parameters: orgtag Body fields the handler or its helper reads: criteria, dry_run, max_new, model, tasks, voice Response fields written in the handler: dry_run, jobs, note, refused This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/retire

Take one DRAWN STATE off this org’s pages. Path parameters: orgtag, env_id Body fields the handler or its helper reads: by, reason Response fields written in the handler: retired This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/restore

Put a retired drawn state back on this org’s pages. Path parameters: orgtag, env_id Body fields the handler or its helper reads: by, reason Response fields written in the handler: restored This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/tasks

This environment’s tasks, each with its verifier and what it decides, and family on a task a rule-written family wrote. Path parameters: orgtag, env_id Query parameters the handler or its helper reads: audience, retired Response fields written in the handler: audience, caveat, check, chosen, coverage, coverage_at_generation, dimensions, environment, evidence_id, generations, links, max_rounds, org, refused_tasks, review_checks, review_counts, rooted, selection, serves, state, suite, surface, tasks, tasks_state, tool_gate, verifier_health, world_missing, world_snapshot

POST /v0/orgs/{orgtag}/environments/{env_id}/tasks/retire

Retire a range of this environment’s tasks, by index. Path parameters: orgtag, env_id Response fields written in the helper the handler answers through: act, environment, mark, model_calls, retired_tasks, standing, tasks, tier This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/tasks/restore

Put a retired range back. {from, to, reason?, by?}. Path parameters: orgtag, env_id Response fields written in the helper the handler answers through: act, environment, mark, model_calls, retired_tasks, standing, tasks, tier This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/surface-key

GET /v0/orgs/{org}/environments/{env_id}/surface-key — the surface key run against this sandbox: how many of the fixture’s declared behaviours it reproduces (present), does not (absent), and could not be asked about (undecidable), each with the probes behind it, at tier deterministic. undecidable is its own count and never folds into absent. Every probe writes to a scratch copy of the seed; nothing is kept and no model is called. A sandbox that is not this org’s answers 404 as one that does not exist. Path parameters: orgtag, env_id Response fields written in the handler: environment, note, org

GET /v0/orgs/{orgtag}/environments/{env_id}/tools

GET /v0/orgs/{org}/environments/{env_id}/tools — the tools this sandbox serves, by name with a one-line description: what a no-data report’s “holds the rows” may name. Read off the bundle’s manifest on disk; no world is loaded, no model is called. A sandbox that is not this org’s answers 404 as one that does not exist. Path parameters: orgtag, env_id Response fields written in the handler: count, environment, org, read, tier, tools

GET /v0/orgs/{orgtag}/environments/{env_id}/fidelity

GET /v0/orgs/{org}/environments/{env_id}/fidelity — how much of the org’s real tool surface this sandbox serves: one row per tool of the code at the agent’s main, fields served / lacked / invented (each sourced code or sessions), enum values and relations lacked, unobserved for a tool the sessions never call; the fix list ranked by n_calls; terms.coverage and the line “serves X of N tool shapes by name (deterministic)”. Each row is also joined by API route: its data_source routes against the sandbox’s own observed route map, layer, routes_served / routes_of, the sandbox tools it maps to; terms.routes counts the tools with every route served, some, none and no data source, and the line names that layer apart — or says the sandbox has no route map. Where no tool the sessions call is a sandbox tool, terms.answer_shapes is {replayable: 0, reason} and the line says why. terms.api_routes, the code’s distinct data_source routes the sandbox’s API door serves (“K of M API routes served”, the unserved ones named), absent when the code names no route. Files on disk only; no model, no write. 404 no_tool_listing when no agent of the org has a listing; a sandbox not this org’s answers 404 as one that does not exist. Path parameters: orgtag, env_id Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed.

POST /v0/orgs/{orgtag}/environments/{env_id}/fidelity/answer-shapes

POST /v0/orgs/{org}/environments/{env_id}/fidelity/answer-shapes — {dry_run?, model?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: dry_run, model Response fields written in the handler: differ, environment, model, n, of, org, replayed, stored, surface, tier, tools, world This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}

One environment and its realism block: how far its written requests sit from the real requests of what it was generated under — numbers, each with its tier and n, never a request. The deterministic measures are read now over the tasks it holds; the attribute distance is the one its generation stored, and an environment minted before exemplars existed says it has none (the “no exemplar” arm). Path parameters: orgtag, env_id Response fields written in the handler: environment, org, persona_draw, realism, redraw, revertable, state, suite, surface, tasks, world_columns

POST /v0/orgs/{orgtag}/environments/{env_id}/tasks

Generate count more tasks on this environment and APPEND them; or, with {goal: {mode, n, voice?, max_turns?, usd_cap?, personas?, fallback?, from_sessions?}}, have the Litmus agent write n tasks that reproduce one failure mode, as a job, the rule writing only as its labelled fallback. Path parameters: orgtag, env_id Body fields the handler or its helper reads: count, criteria, dimensions, failure_mode, families, from_pairs, goal, label, ladder, model, pairs, review, tool, voice Response fields written in the handler: count, coverage, criteria, criteria_named, criterion_ids, dimensions, environment, floor_first, have, job, kind_floor, note, stages, state, suite, voice This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/tasks/{index}/checks

WHAT RUNS FOR EACH CHECK ON ONE TASK, verbatim: the deterministic read as executed, or the judge’s full prompt as sent with the pinned model and the “asked twice” rule — and the last run’s verdicts on it, with the read’s result or both of the judge’s answers. Path parameters: orgtag, env_id, index Response fields written in the handler: org

POST /v0/orgs/{orgtag}/environments/{env_id}/tasks/{index}/checks/{n}/rehearse

RUN ONE CHECK ON ONE STORED TRIAL, AS A REHEARSAL: {trial}. Path parameters: orgtag, env_id, index, n Response fields written in the handler: calls, check, cost, environment, index, org, rehearsal, run, stored, trial, verdict This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/scripts/starter

GET /v0/orgs/{org}/environments/{env}/scripts/starter → {script, from: {site, form}}: a .spec.ts written from the sign-up journey on this environment’s own household web — log in with the account’s own credential (a process.env line, never a value), fill the form, submit, expect the page the site answers with. It passes its own dry run. Path parameters: orgtag, env_id Response fields written in the handler: environment, org

POST /v0/orgs/{orgtag}/environments/{env_id}/scripts/dry-run

POST /v0/orgs/{org}/environments/{env}/scripts/dry-run {source} → the script parsed, compiled and replayed once in a real browser on this environment’s own world (drawn with its household web into a temp dir), its checks graded on the captured trace and on an empty one: {steps, checks, noop, facts, events, gate, compiled, parse: {refused}}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: source Response fields written in the handler: environment, org, provider_run This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/scripts

GET /v0/orgs/{org}/environments/{env}/scripts → {scripts: [{task, name, title, sha256, checks_n, created_at}]}: the script tasks on this environment, never their source. A kept read: nothing is drawn or run. Path parameters: orgtag, env_id Response fields written in the handler: environment, org

POST /v0/orgs/{orgtag}/environments/{env_id}/scripts

POST /v0/orgs/{org}/environments/{env}/scripts {source, name?} — a Playwright script made a task on this environment. Path parameters: orgtag, env_id Body fields the handler or its helper reads: name, source Response fields written in the handler: checks, environment, facts, gate, note, org, provider_run, task, web_added This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/realism

The human marks on this environment: the whole thing, and per task. Path parameters: orgtag, env_id Response fields written in the handler: entities, environment, flags, grader_kinds, n_rule, org, placed_feedback, realism, split, state, surface, tier, verdicts

POST /v0/orgs/{orgtag}/environments/{env_id}/realism

Mark this environment — or one task of it, or one table or column of its world — realistic / not / unsure. Path parameters: orgtag, env_id Body fields the handler or its helper reads: column, grader, grader_kind, grader_side, origin, reason, scope, source, table, task_index, verdict Response fields written in the handler: feedback, hold, mark, realism This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/world/refresh

POST /v0/orgs/{orgtag}/environments/{env_id}/world/refresh — re-snapshot. Path parameters: orgtag, env_id Response fields written in the handler: environment, org, surface, world_snapshot This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/world/table

GET /v0/orgs/{orgtag}/environments/{env_id}/world/table?table=[&limit=] Path parameters: orgtag, env_id Response fields written in the handler: bound, environment, org, surface

POST /v0/orgs/{orgtag}/environments/{env_id}/review/regenerate

Re-author the HELD tasks with the failing reasons in the brief: {model?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: model, only Response fields written in the handler: environment, held, job, max_rounds, note, only, reauthoring, round, stages, surface This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/revoice

Re-voice tasks: {voice, tasks: [index, …], model?, review?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: model, review, tasks, voice Response fields written in the handler: environment, job, note, review, stages, surface, tasks, voice This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/rekey

Key this environment’s tasks to every criterion their keys decide: {}. One model call over the task set, or one per page of tasks when the reply could outgrow one call; answers a job. Path parameters: orgtag, env_id Response fields written in the handler: criteria, environment, job, note, pages, stages, surface, tasks This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/review/hold

A PERSON holds one task: {index, reason, grader, grader_kind?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: grader, grader_kind, index, reason Response fields written in the handler: counts, environment, hold, tier This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/review/rereview

Re-review the HELD tasks on this environment: {indexes?, model?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: indexes, model Response fields written in the handler: environment, job, note, rereviewed, stages, surface This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/review/correct

A PERSON corrects one task’s expected fact: {index, fact, literal?, aliases?, fact_text?, note, grader, grader_kind?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: aliases, fact, fact_text, grader, grader_kind, index, literal, note Response fields written in the helper the handler answers through: counts, environment, fact_index, index, model_calls, tier (added to a stored record whose own keys are not in the source) This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/regate

Re-gate this environment’s standing tasks on the world it serves NOW. Path parameters: orgtag, env_id Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed. This call changes state in the org.

POST /v0/orgs/{orgtag}/environments/{env_id}/reserve

POST /v0/orgs/{org}/environments/{env_id}/reserve — {surface: B}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: surface Response fields written in the handler: checks, environment, job, note, poll, source_surface, stage, stages, surface This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/review

This environment’s review: five verdicts per task, and the counts. Path parameters: orgtag, env_id Query parameters the handler or its helper reads: format Response fields written in the handler: asks, checks, counts, environment, max_rounds, org, replaced_tasks, suite, surface, tasks, tier, verdicts

POST /v0/orgs/{orgtag}/environments/{env_id}/review

Review every task on this environment: {model?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: force, model Response fields written in the handler: asks, checks, environment, force, job, note, stages, surface, tasks, tier This call changes state in the org.

GET /v0/orgs/{orgtag}/environments/{env_id}/audit

GET /v0/orgs/{orgtag}/environments/{env_id}/audit — the stored report. Path parameters: orgtag, env_id Response fields written in the helper the handler answers through: human_flags (added to a stored record whose own keys are not in the source)

POST /v0/orgs/{orgtag}/environments/{env_id}/audit

POST /v0/orgs/{orgtag}/environments/{env_id}/audit — {model?}. Path parameters: orgtag, env_id Body fields the handler or its helper reads: model Response fields written in the handler: environment, job, rubric, stages, surface, tier This call changes state in the org.

POST /v0/orgs/{orgtag}/worldplans/from-surface

Generate tasks on a served surface: {bundle, count?, label?, model?}. Path parameters: orgtag Body fields the handler or its helper reads: bundle, count, dimensions, label, model Response fields written in the handler: bundle, count, environment, job, note, stages, suite This call changes state in the org.

GET /v0/worldplans

One page of plans, newest first, with the count and the cursor. Query parameters the handler or its helper reads: after, all, limit, offset, org Response fields written in the handler: next, total, worldplans

GET /v0/worldplans/{wid}

No description: the handler has no docstring, and nothing here is inferred. Path parameters: wid Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed.

PATCH /v0/worldplans/{wid}

Edit a plan’s label or tasks — the primitives that make generated task sets auditable AND ownable: a person can rewrite a task, drop one, or trim an expectation, and the artifact is theirs from then on. Path parameters: wid Body fields the handler or its helper reads: label, tasks Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed. This call changes state in the org.

DELETE /v0/worldplans/{wid}

No description: the handler has no docstring, and nothing here is inferred. Path parameters: wid Response fields written in the handler: deleted This call changes state in the org.

GET /v0/worldplans/{wid}/harbor

One minted world as a Harbor dataset: a task directory per task, each with its own verifier. The batch runs against an agent pointed at the mocked tool service; verifiers check the agent’s captured trace. Path parameters: wid Query parameters the handler or its helper reads: tier Response: A file, not JSON: application/zip.

GET /v0/orgs/{orgtag}/sandboxes

The org’s auditable sandboxes, each carrying the representation that produced it, plus the human realism roll-up over all of them. Path parameters: orgtag Response fields written in the handler: hypotheses, mint, realism, sandboxes

POST /v0/orgs/{orgtag}/sandboxes

Mint one sandbox from a named representation. 202 + a job id. Path parameters: orgtag Body fields the handler or its helper reads: hypothesis, label, seed, surface Response fields written in the handler: deduplicated, hypothesis, job, note, status This call changes state in the org.

GET /v0/orgs/{orgtag}/realism/packet

GET /v0/orgs/{orgtag}/realism/packet?per=&limit=&grader=&audience= — the review packet: tasks for a person to mark realistic / not / unsure, each with that grader’s own current mark and the cell’s n and graders. By default the bounded round with its minutes and what remains beyond it; per=all is every task. The org is the path’s; nothing here reads another org’s records. No model call, nothing written. mode=entities&environment= is the entity walk: one sandbox’s tables, twelve by default, each with five rows, to mark at scope table or column. Path parameters: orgtag Response fields written in the helper the handler answers through: audience, failure_modes_to_classify, missing, source (added to a stored record whose own keys are not in the source)

GET /v0/orgs/{orgtag}/realism

The per-hypothesis realism roll-up, and the marks behind it. Path parameters: orgtag Response fields written in the handler: marks, realism

POST /v0/orgs/{orgtag}/realism

Mark one record, or a whole sandbox, “would pass as real” / “would not”. Path parameters: orgtag Body fields the handler or its helper reads: grader, note, record, record_id, sandbox_id, scope, source, table, verdict Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed. This call changes state in the org.

GET /v0/sandboxes/{sid}

One sandbox in full — every table’s rows, the held-out real records beside them, and the marks already given on it. Path parameters: sid Response fields written in the handler: grades, ledger

DELETE /v0/sandboxes/{sid}

Remove one sandbox. Its realism marks are kept: they carry the hypothesis and a copy of the record they were given on, so a deleted sandbox does not delete the evidence a person produced about it. Path parameters: sid Response fields written in the handler: deleted This call changes state in the org.

POST /v0/surfaces

Traces from an unknown tool surface in; a gated, served mock out. Body fields the handler or its helper reads: async, catalog, evidence, name, org, traces Response fields written in the handler: id, job_id, poll, status, surface_id This call changes state in the org.

POST /v0/worlds

No description: the handler has no docstring, and nothing here is inferred. Body fields the handler or its helper reads: bundle_id, cell, sample_n, seed, vectors Response: JSON: a stored record or a helper’s result, answered as it is, so its keys are not written in the source and none are listed. This call changes state in the org.

GET /v0/worlds

The served fleets, scoped by _org_scope like every listing. Query parameters the handler or its helper reads: org Response fields written in the handler: served

POST /v0/worlds/{bundle_id}/{world}/check

Run a verifier against a served world’s CURRENT state. Path parameters: bundle_id, world Body fields the handler or its helper reads: verify Response fields written in the handler: bundle_id, tier, verified, world This call changes state in the org.

POST /v0/worlds/{bundle_id}/{world}/reset

POST /v0/worlds/{bundle_id}/{world}/reset — the served copy back to the pristine mint. Answers the world file’s sha256 after the reset so a runner on another machine can hold the rule CommandReset holds locally: every reset of a run must reproduce the first one’s world, or the trial does not start from the same world and is not in the denominator. Path parameters: bundle_id, world Response fields written in the handler: bundle_id, path, reset, sha256, world This call changes state in the org.

GET /v0/worlds/{bundle_id}/{world}/state

GET /v0/worlds/{bundle_id}/{world}/state — the served world’s CURRENT state, every table, through the control plane and never through the tools under test: the independent read path for a runner grading a hosted world. path: mock on the dump. Path parameters: bundle_id, world Response fields written in the handler: bundle_id, state, world

GET /v0/worlds/{bundle_id}/{world}/peek

GET /v0/worlds/{bundle_id}/{world}/peek — the served world, bounded. Path parameters: bundle_id, world Response fields written in the handler: bundle_id, operations, world

GET /v0/worlds/{bundle_id}/{world}/tools

GET /v0/worlds/{bundle_id}/{world}/tools — the tool specs this world serves. Path parameters: bundle_id, world Response fields written in the handler: bundle_id, tools, world

POST /v0/worlds/{bundle_id}/{world}/call

POST /v0/worlds/{bundle_id}/{world}/call {tool, args} — call one tool. Path parameters: bundle_id, world Body fields the handler or its helper reads: args, tool Response fields written in the handler: bundle_id, result, tool, world This call changes state in the org.

POST /v0/tokens

No description: the handler has no docstring, and nothing here is inferred. Body fields the handler or its helper reads: bundle_id, world Response fields written in the handler: connector_url, id, mcp_url, token This call changes state in the org.

DELETE /v0/tokens/{tid}

DELETE /v0/tokens/{tid} — revoke one world connector token. Path parameters: tid Response fields written in the handler: bundle_id, id, note, revoked_at, world This call changes state in the org.