Skip to main content
GET
Get one run's stage analytics

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.

Response

The run's complete stage-analytics document.

One RUN's materialized stage funnel. Counts are stored; rates are DERIVED by the SDK contract's helpers, so a zero denominator stays notMeasured and never renders as 0%. There is no top-level overall, latency or reasons object: the overall funnel is the overall slice (always present, always first), latency lives inside each stage tally and each setup row, and reasons live inside each stage tally.

schemaVersion
enum<integer>
required
Available options:
1
measurementUnit
enum<string>
required

The literal trial, carried rather than assumed. An eval iteration, a user-testing session and a swarm traversal share this stage vocabulary and are NOT the same unit; a consumer merging two documents must check this first.

Available options:
trial
runId
string
required
Minimum string length: 1
suiteId
string
required
Minimum string length: 1
sourceIterationCount
integer
required

How many iterations this materialization actually read.

Required range: x >= 0
stageAnalyzerVersion
integer
required

The analyzer the source chains were ACTUALLY derived at, not the version the reader understands. When included trials disagree this is the newest present.

Required range: x >= 1
measurementsSchemaVersion
integer
required
Required range: x >= 1
materializationState
enum<string>
required

provisional while a judge fanout is still pending — the counts may still move under the reader — and final once every applicable fanout has completed. There is no stale.

Available options:
provisional,
final
createdAt
integer
required
Required range: x >= 0
updatedAt
integer
required
Required range: x >= 0
includedTrials
integer
required

Trials that contributed observations. Equals the overall slice's own count, and never exceeds totalTrials.

Required range: x >= 0
excludedTrials
object
required

How many observations each class removed from ONE denominator. A class that excluded nothing is OMITTED rather than written as 0 — absent and 0 mean the same thing here.

totalTrials
integer
required

Every trial the materializer saw, included or not.

Required range: x >= 0
excludedTrialDetail
object
required

The FINE-GRAINED reason a trial was excluded. Run-level only — the coarse six-class tally repeats on every stage of every slice, but 'we could not read the chain' and 'the chain was there and was refused' are different operator actions and are carried once, here.

slices
object[]
required

Marginal slices in canonical order. Exactly one overall slice, always present and always first.

Maximum array length: 101
setup
object[]
required

Run-level setup facts, one row per phase that carried a signal. Never two rows for one phase.

Maximum array length: 2
runGroupId
string

Present when the run is grouped for comparison (a matrix, a schedule).

Minimum string length: 1
configRevision
string

The run's authored-configuration revision. One of three identities a parity claim requires; ABSENCE BLOCKS parity rather than being assumed compatible.

Minimum string length: 1
caseSetFingerprint
string

A digest over the comparable case set this run actually measured. Absence blocks parity, same rule.

Minimum string length: 1
organizationId
string
Minimum string length: 1
workspaceId
string
Minimum string length: 1
projectId
string
Minimum string length: 1
runCompletedAt
integer

When the run reached a terminal status, in epoch milliseconds. The field from/to filter on.

Required range: x >= 0
sourceMaxUpdatedAt
integer

The newest update stamp among those iterations — the staleness handle for a rebuild.

Required range: x >= 0
sourceStageAnalyzerVersions
integer[]

Every DISTINCT analyzer version among included trials, ascending. Present ONLY when more than one contributed — a uniform document omits it. A mixed document is not comparable to anything.

Minimum array length: 2
Required range: x >= 1
sourceMeasurementsSchemaVersions
integer[]

Every distinct measurement schema version among included trials. Same rule as the analyzer versions.

Minimum array length: 2
Required range: x >= 1
sliceTruncation
object[]

Which dimensions hit a cap, and by how much. Present ONLY when a cap bit — a truncated slice array with no such record would read as 'these are all the models'.

Maximum array length: 3