slug@version that other teams (or your own Solvers) can run.
Authoring uses the internal API with an organization API key (vk_*). Running a published benchmark uses a Solver key and the public /v1 API instead.
Who This Is For
- Teams building internal benchmarks for their own agents.
- Organizations publishing benchmarks for the wider healthcare AI ecosystem (
visibility=Public). - Anyone authoring a new task or criterion against an existing environment.
Prerequisites
curl (for simulators, tasks, criteria, which are currently available only on the REST API). The same operations are also available via the MCP server.
1. Create an Environment
An environment is a reusable simulated health system. Start with a container:2. Add Simulators
Simulators are individual simulated interfaces (FHIR EHR, voice line, payer portal, SFTP drop, HL7 endpoint, X12 clearinghouse, fax, messaging). Create each simulator and link it to the environment:3. Attach Datasets
Datasets contain synthetic data that populates simulator sandboxes at rollout time. FHIR datasets carry a JSON config with patients, conditions, medications, etc. Files and SFTP datasets carry a manifest plus actual files stored in GCS.4. Create the Benchmark
A benchmark groups tasks against one environment:timeout is the per-task execution budget in seconds; tasks that exceed it are recorded with verdict: "fail" and score: 0. concurrency is the number of task rollouts that may run in parallel within a single benchmark run.
5. Add Tasks
Each task is one test case. A task carries:taskItem: structured payload with instruction, trigger, expected inputs.scenario: optional pre-rollout steps run by the scenario runner (for example, drop a fax into the inbox before the agent starts).entities:DatasetEntitybindings scoping the task to specific synthetic records.tags: for filtering and organization.
6. Attach Criteria
Criteria are typed assertions the verification engine runs after the rollout. Each one has alabel, an assertion spec, a weight, and an optional axis for per-axis scoring.
Prefer multiple narrow criteria over one compound criterion: one observable outcome per criterion makes failures easier to diagnose.
Example: portal-state-match
Example: fhir-resource-state
Example: voice-transcript (negative assertion)
fhir-resource-state, hl7-structural, portal-state-match, sftp-file-present, voice-transcript, x12-response) and full assertion reference on the Criteria API page.
7. Set Slug and Publish
Before publishing, assign a URL-safe slug (lowercase alphanumeric with hyphens):slug@version:
Published benchmarks are immutable. To iterate, clone the benchmark and
publish the clone as the next version (
version: 2). Consumers can continue
pinning to slug@1 while you ship slug@2.8. Set Visibility
Visibility controls who can run a published benchmark:Private(default): only Solvers in the owning organization can run it.Public: any Solver in any organization can run it. The benchmark appears in public listings and leaderboards.
You cannot make a benchmark
Public without a slug. Publish with a slug
first, verify it runs as expected, then flip visibility.Versioning
- Cut a new version when criteria, tasks, or the linked environment change in a way that shifts scores.
- Keep trivial edits (documentation, labels that do not affect scoring) to the same version by applying them before publishing.
- Communicate version changes in the benchmark’s
overview,scoring_rubric, andlimitationsfields.
Next Steps
Criteria
Reference for every supported check type with annotated examples.
Verification
How per-criterion results aggregate into task and benchmark scores.
Environments
Compose simulators and datasets into reusable simulated health systems.
Benchmarks API
REST endpoints for create, update, publish, and list.