experiment_id | string | yes | Unique identifier of the experiment. |
name | string | yes | Name of the experiment. |
scenarios | array | yes | |
scenarios[].id | string | yes | Identifier you choose for the scenario, unique in the experiment, up to 128 characters, such as checkout. Results refer to it. |
scenarios[].name | string | yes | Short name of the scenario. |
scenarios[].prompt | string | yes | What the agent is asked to do. |
scenarios[].input_files | array | no | Up to 20 uploaded file ids, given to each of the scenario’s runs. Kept for good once saved. Defaults to none. |
scenarios[].evaluations | array | yes | |
scenarios[].evaluations[].id | string | yes | Identifier you choose for the evaluation, unique in its scenario, up to 128 characters, such as tests-pass. Results refer to it. |
scenarios[].evaluations[].name | string | yes | Short name of what is checked. |
scenarios[].evaluations[].judging_instructions | string | yes | The yes-or-no question a judge answers from what the agent did, such as Do the tests pass?. |
scenarios[].evaluations[].weight | integer | no | How much it counts in the run’s score. Defaults to 1. |
scenarios[].passing_score | integer | no | Score out of 100, weighted by the evaluations’ weights, a run needs to pass. Omit it so a run passes only when it passes every evaluation. |
agents | array | yes | Agents every scenario is given to, each once. |
agents[].harness | string | yes | The coding agent to run: claude-code (Claude Code), claude-desktop (Cowork, the agent workspace of Anthropic’s Claude desktop app, for documents, research and longer tasks), codex (OpenAI’s Codex CLI), codex-app (the Codex mode of OpenAI’s ChatGPT desktop app, with its browser, computer-use and document tools) or cursor (Cursor’s CLI). |
agents[].model | string | yes | Model the agent uses, such as claude-sonnet-5-5. |
repositories | array | no | Ids of repositories from your library, as listed by GET /library, each once, tried in turn with every agent tool configuration. Defaults to none: runs start without a repository. |
agent_tools | array | yes | |
agent_tools[].id | string | yes | Identifier you choose for the agent tool configuration, unique in the experiment, up to 128 characters, such as with-docs-mcp. Results refer to it. |
agent_tools[].name | string | yes | Short name of the agent tools, such as No agent tools for the baseline. |
agent_tools[].skills | array | yes | Ids of skills from your library, as listed by GET /library. |
agent_tools[].mcp_servers | array | yes | Ids of MCP servers from your library, as listed by GET /library. |
agent_tools[].command_line_tools | array | yes | Ids of command-line tools from your library, as listed by GET /library. |
agent_tools[].browser | boolean | no | |
excluded_variants | array | no | Combinations of repository and agent tools not to run. Every other combination is a variant, run for each scenario and agent. Defaults to none. |
excluded_variants[].repository_id | string | no | Id of one of the experiment’s repositories. Omit it for no repository. |
excluded_variants[].agent_tools_id | string | yes | Id of one of the experiment’s agent tool configurations. |
run_settings | object | yes | |
run_settings.repetitions | integer | yes | Identical runs started for each scenario, variant and agent, to compare results beyond chance. |
run_settings.time_limit_seconds | number | yes | Longest each run may last, in seconds, above 0 and at most 43200. |
run_settings.budget_usd | number | yes | Most each run may spend, in US dollars, above 0 and at most 10000. |
run_settings.setup | string | no | Shell script run in each run’s sandbox after checkout and before the prompt. At most 32768 characters. |
run_settings.teardown | string | no | Shell script run in each run’s sandbox after the run ends. At most 32768 characters. |
run_settings.variables | array | no | Environment variables set in every process of each run’s agent, each name once. Defaults to none. |
run_settings.variables[].name | string | yes | |
run_settings.variables[].value | string | yes | |