Skip to main content
GET
Get a run's decision summary

Authorizations

Authorization
string
header
required

MCPJam API key (sk_…). Create one at Settings → API keys. Guest sessions cannot use the API, and API keys cannot manage other API keys.

Path Parameters

projectId
string
required

ID of the hosted project that contains the server.

runId
string
required

Eval run ID, as returned by POST /eval-runs.

Query Parameters

limit
integer
default:50

Iterations examined per page, 1–200. Defaults to 50.

Required range: 1 <= x <= 200
cursor
string

Opaque cursor from a previous response's diagnostics.nextCursor. A page fetched with one is never reported as complete.

Response

The run's decision summary.

The canonical run decision contract (schema version 1): what the run decided, in what unit it counted, and what evidence sits under the non-passing trials. START HERE when a run did not pass.

It EXPLAINS the verdict and never DECIDES it. Under verdict policy v2 the authority is the run's own decision — its verdict, rates, validity phase, reasons, per-case stability and mixed-verdict flags are copied after validation and never recomputed from the trials; counts is a tally of decision.cases[].verdict and nothing more.

verdict has a fourth value the run verdict vocabulary does not: notEstablished means no verdict exists at all (the run is unfinished, stopped early, or its decision could not be read). It is not a failure and not inconclusiveinconclusive is a decision the validity phase reached, and this is the absence of any decision.

schemaVersion
enum<integer>
required
Available options:
1
runId
string
required
runStatus
string
required

The run's lifecycle status, verbatim. Not a verdict.

verdict
enum<string>
required
Available options:
passed,
failed,
inconclusive,
notEstablished
verdictSource
enum<string>
required

policyV2 — the run's own decision, carried on decision; verdict is its verdict. legacy — a percent-threshold run predating policy v2; there is no decision object and any counts are trials. none — no verdict; verdict is notEstablished and undecided says why.

Available options:
policyV2,
legacy,
none
diagnostics
object
required

One page of diagnostics, with its completeness stated rather than implied. complete is true ONLY when items is the whole non-passing set for the run: a page reached through a cursor is never complete however few rows follow it. scannedIterations is how many trials this page examined, which is what separates "we looked at 50 and none failed" from "we did not look" — both otherwise render as an empty items.

counts
object

A tally WITH the population it counted. measurementUnit is never omitted and never inferred: under verdict policy v2 the counts are case-execution VARIANTS (repetitions are trials inside one, not members of it), and on a legacy run they are trials. A 3-case suite with 5 repetitions is legitimately 3 under one unit and 15 under the other, so a count reported without its unit is not a fact. On a caseVariant count every field is present and the three buckets sum to total; on a trial count each field is present only if the legacy run recorded it — absence stays absence rather than defaulting to zero.

decision
object

The run's authoritative v2 verdict decision, copied verbatim after validation — the same shape as EvalRun.verdictSummary, published at https://mcpjam.com/schemas/eval-verdict-policy/v2.json. Present exactly when verdictSource is policyV2.

undecided
object

Why no verdict was established. Present exactly when verdictSource is none.