Skip to main content

Evaluations

MCP tools for the Evaluations module. See the Evaluations module docs for permissions and data model.

list-datasets

List datasets

Arguments

ArgumentTypeRequiredDescription
project_idstringnoProject ID (required if not using project key auth)
limitnumbernoMaximum number of results to return
offsetnumbernoNumber of results to skip

create-dataset

Create a dataset

Arguments

ArgumentTypeRequiredDescription
project_idstringnoProject ID (required if not using project key auth)
namestringyesUnique name within the project
descriptionstring | nullnoWhat this suite covers

get-dataset

Get a dataset

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID

update-dataset

Update a dataset

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID
namestringno
descriptionstring | nullno

delete-dataset

Delete a dataset

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID

list-dataset-items

List dataset items

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID
limitnumbernoMaximum number of results to return
offsetnumbernoNumber of results to skip

create-dataset-item

Add a dataset item

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID
inputarray<object>yesMessages replayed verbatim as the generation's input
expected_outputstring | nullnoReference answer for exact_match / embedding_similarity / llm_judge scorers
metadataobject | nullnoFree-form tags, opaque to the platform

create-dataset-item-from-generation

Curate a dataset item from a generation

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID
generation_idstringyesThe completed generation to promote. Must belong to the same project as the dataset.
expected_outputstring | nullnoReference answer. Omit to use the generation's own answer; pass null to store the item with no reference answer.
metadataobject | nullnoFree-form tags, opaque to the platform

update-dataset-item

Update a dataset item

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID
item_idstringyesDataset item ID
inputarray<object>noMessages replayed verbatim as the generation's input
expected_outputstring | nullno
metadataobject | nullno

delete-dataset-item

Delete a dataset item

Arguments

ArgumentTypeRequiredDescription
dataset_idstringyesDataset ID
item_idstringyesDataset item ID

list-evals

List evals

Arguments

ArgumentTypeRequiredDescription
project_idstringnoProject ID (required if not using project key auth)
limitnumbernoMaximum number of results to return
offsetnumbernoNumber of results to skip

create-eval

Create an eval

Arguments

ArgumentTypeRequiredDescription
project_idstringnoProject ID (required if not using project key auth)
namestringyesUnique name within the project
agent_idstringyesThe agent under test
dataset_idstringyesThe dataset to run it against
scorersarray<object | object | object | object | object | object | object>yesScorer configs, a discriminated union on type. Each type may appear at most once. Every scorer produces { score: 0–1, passed: boolean }; binary scorers emit 0 or 1. exact_match compares the trimmed output text to expected_output. contains looks for value in the output text. json_logic evaluates expression over { input, output, object, expected, item.metadata }, where object is the structured output (absent when the agent has no output_schema). output_schema validates the structured output against the scorer's own schema, falling back to the agent's; it requires the agent to carry an output_schema, because without one the platform emits no structured output and every item would score 0. llm_judge grades the output with a model completion, returning a continuous score plus its reasoning. Its pass_threshold is required: a continuous score says nothing about where "good enough" is, and a defaulted cutoff would silently decide the gate. embedding_similarity embeds the output text and expected_output with the platform's configured embedding model (EMBEDDING_PROVIDER / EMBEDDING_MODEL — the same stack document ingestion uses) and scores their cosine similarity, clamped to 0-1. Its pass_threshold is required for the same reason as the judge's. An item without an expected_output scores 0; an embedding backend failure marks the item errored, never a score of 0. tool runs a custom scoring algorithm: a server-callable project tool the engine invokes once per item with the item's context. Unlike the built-in types it may appear several times, each under a distinct name — outcomes and aggregates key on the name.
pass_thresholdnumber | nullno0–1. The run passes iff its pass rate — passed items over non-errored items — is at least this. Null reports scores without gating on them.

get-eval

Get an eval

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID

update-eval

Update an eval

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID
namestringno
agent_idstringno
dataset_idstringno
scorersarray<object | object | object | object | object | object | object>noScorer configs, a discriminated union on type. Each type may appear at most once. Every scorer produces { score: 0–1, passed: boolean }; binary scorers emit 0 or 1. exact_match compares the trimmed output text to expected_output. contains looks for value in the output text. json_logic evaluates expression over { input, output, object, expected, item.metadata }, where object is the structured output (absent when the agent has no output_schema). output_schema validates the structured output against the scorer's own schema, falling back to the agent's; it requires the agent to carry an output_schema, because without one the platform emits no structured output and every item would score 0. llm_judge grades the output with a model completion, returning a continuous score plus its reasoning. Its pass_threshold is required: a continuous score says nothing about where "good enough" is, and a defaulted cutoff would silently decide the gate. embedding_similarity embeds the output text and expected_output with the platform's configured embedding model (EMBEDDING_PROVIDER / EMBEDDING_MODEL — the same stack document ingestion uses) and scores their cosine similarity, clamped to 0-1. Its pass_threshold is required for the same reason as the judge's. An item without an expected_output scores 0; an embedding backend failure marks the item errored, never a score of 0. tool runs a custom scoring algorithm: a server-callable project tool the engine invokes once per item with the item's context. Unlike the built-in types it may appear several times, each under a distinct name — outcomes and aggregates key on the name.
pass_thresholdnumber | nullno

delete-eval

Delete an eval

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID

list-eval-runs

List eval runs

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID
limitnumbernoMaximum number of results to return
offsetnumbernoNumber of results to skip

start-eval-run

Start an eval run

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID
waitbooleannoTrue runs the eval synchronously (25-item cap) and returns a terminal run with its scores. False — the default — enqueues the items and returns a queued run immediately.
agent_versionnumber | nullnoAn archived agent version to evaluate. Defaults to the active release's stable version, or the live draft version when no release is in effect.
baseline_run_idstring | nullnoA terminal run of the same eval to compare against. The finished run's aggregate_scores.baseline reports per-scorer deltas over the item intersection. A run of a different eval is rejected with 400.
metadataobjectnoCaller-supplied key/value metadata attached to the run record for attribution — what this measurement was of (the commit or release candidate being scored, the CI job that asked for it). Round-trips verbatim on every read of the run, the list included. The bag is caller-owned and no key is reserved: everything the platform decides about a run (status, agent_version, baseline_run_id, aggregate_scores, passed, the counts) is a field of its own and cannot be written from here. Nothing in the scoring path reads it. A non-object is rejected with 400 VALIDATION_FAILED and no run is created.
tool_contextobjectnoKey/value context forwarded to every item's generation, so an agent whose tools authorize through tool_context is scored against the configuration it runs in production rather than with an empty bag. Each key is forwarded as one X-Soat-Context-<key> header and resolves any {{context:<key>}} token in a bound tool's headers or preset_parameters. Stored on the run and re-read per item, since a queued run (the default) is driven by a worker with no request behind it. Write-only: no read of the run returns it, unlike metadata — a run is a report other people read, and a credential in it is not theirs to see. Cleared once the run reaches a terminal state. An eval generation has no session, so the reserved keys session_id, actor_id and actor_external_id are dropped (in any casing) rather than forwarded. Every other key becomes an HTTP header name and must match that grammar, or the request is rejected with 400 INVALID_TOOL_CONTEXT_KEY and no run is created.

get-eval-run

Get an eval run

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID
eval_run_idstringyesEval run ID

list-eval-results

List eval run results

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID
eval_run_idstringyesEval run ID
limitnumbernoMaximum number of results to return
offsetnumbernoNumber of results to skip

cancel-eval-run

Cancel an eval run

Arguments

ArgumentTypeRequiredDescription
eval_idstringyesEval ID
eval_run_idstringyesEval run ID