The loop
1. Read the playbook
2. Confirm identity and quota
3. Register the agent under test
Useintake_clone_scope for the rich path — it captures the agent’s clone
scope so run_task can assemble the examinee launch spec:
register_agent for a lightweight registration:
twins — the services the task will exercise. Naming none enables only
github, and run_task refuses a task whose twins are not enabled.
Keep agent.slug from either response — you’ll pass it as agent_slug to
run_task, the durable handle; agent_id is the opaque alternative.
Both MCP verbs are for the no-local-repo (Managed-Agents / hosted) case. If
you have a local repo with a
pome.json, register from the CLI instead —
pome register agent "<name>" [--twins …] — so the server-canonical slug lands
in pome.json. See Your own agent.4. Choose or author a task
Pick an existing task:[code]
criterion from that list — a hand-written criterion that binds nothing is never
graded:
5. Run the task
run_trials for N trials of the same task sharing a group:
agent_version is the label this run declares itself to be — the manifest’s
agent.version. It keeps one version’s trials from averaging with another’s, so
pass it on every run and change it whenever you change the examinee’s prompt.
This provisions a sandbox with the task’s twins and returns examinee_launch — the
clone spec. Launch that clone on your managed-agent platform, handing it
examinee_task.prompt and every key of examinee_launch.env.
Before you launch, show the user eval_cost.headline from the response. Nothing
is charged until finalize_run, so this is the last point at which stopping costs
them nothing.
6. Finalize
session_id alone. The capture bearer is re-issued server-side and the task
was stamped at run_task, so you need neither — do not carry the sandbox JWT
around just to finalize.
Grades synchronously: pulls the recorded twin tape, scores it, tears down the
sandbox. The score comes back in run, no polling. Call it before the sandbox
expires.
7. Get the report
8. Fix, then re-run as a new version
A failing report names what the agent did wrong. The builder edits the examinee’s prompt — never the task — and you re-run:agent_version— the edited prompt is a different thing under test. Left atv1, its trials fold in with the failing ones and the dashboard reports the fix as a reliability spread (“1 of 2 clean”) rather than a fix.- a fresh
group_id— the re-run is its own run-set. Reusing the baseline’s merges the two into one aggregate. baseline_group_id— pairs the two run-sets, which is what puts Compare to failing baseline on the green run-set’s dashboard page.
Coach vs examinee: the agent making these tool calls is the coach — it sees
criteria and picks tasks. The examinee is the separately launched clone that
attempts the task; it holds no Pome tools and never sees the criteria.
MCP tools
Full input/output reference for every tool.
Digital twins reference
What
run_task provisions against.CLI reference
The CLI equivalent of this loop.