Skip to main content

MST uses common eval vocabulary

Current names. ADR 0013 made Anthropic's guide the reference where it names a concept. The table below follows it: the record of an attempt is a transcript, assertions are the conditions a code grader checks, and the table has rows for the outcome, the environment and the evaluation harness. The reasons below record the decision as it was made, including the one for "trace".

MST grew its own names: manifests, arms, scenarios, iterations, expectations, verdicts, variant experiments. Someone who knows evals from Inspect, LangSmith, Braintrust, OpenAI Evals, promptfoo or Anthropic's guidance had to translate each one. For 2.0 we adopt the terms those frameworks share and rename MST's API, eval configs, CLI, docs and reports to match, breaking compatibility where needed. CONTEXT.md is the glossary. This record is the mapping, so anyone can carry their own vocabulary across.

Mapping​

ConceptMSTAnthropicInspectLangSmithBraintrustOpenAI Evalspromptfoo
What runs the evalsMSTevaluation harnessInspectLangSmithBraintrustOpenAI Evalspromptfoo
What to evaluate and howeval (eval config)eval suitetask—evalevalconfig
Collection of inputsdataset—datasetdatasetdatasetdata sourcetests
One input with success criteriacasetask (test case)sampleexampleexampleitemtest case
What the client is giveninputinputinputinputsinputitemvars
Ground truthexpectedsuccess criteriatargetreference outputsexpected——
What acts on the inputclient, with a modelagent harness, with a modelsolver / agenttargettask—provider
What the client acts onenvironmentenvironmentsandbox————
Its final state after a trialoutcomeoutcome—————
A setup being comparedvariant (baseline)——experimentexperimentrunprompt × provider
One attempttrialtrialepochrepetitiontrial—repeat
Record of an attempttranscripttranscript (trace)transcripttracetrace——
Grading logicgrader: code grader or judgegrader (code, model, human)scorerevaluatorscorergraderassertion
One condition a grader checksassertionassertion (check)————assertion
Grader outputscorescorescorefeedbackscoreresultresult
One executionrun—eval logexperimentexperimentruneval
Baseline-passing / -failing casesregression / capability caseregression / capability eval—————

Where frameworks disagree, MST picks the most widely shared term that has one meaning:

  • Not "task". It means a test case to Anthropic, a whole eval to Inspect, and the system under test to Braintrust.
  • "Case" over "example" or "sample". It's the established word for testing, used by Anthropic and promptfoo. "Sample" collides with statistical sampling, which MST also reports.
  • "Trial". Anthropic uses it, and pass@k and pass^k are defined over trials. "Iteration" suggests the attempts depend on each other.
  • "Variant" with a "baseline" over "arm". That's the A/B vocabulary most people know. Tool metadata becomes one property of a variant, not a separate "tool variant".
  • "Grader" for the umbrella, "assertion" and "judge" for the kinds. These are Anthropic's code-based and model-based graders, in the words practitioners already use for each.
  • "Client", with a separate "model". What an MCP eval tests is two things: the application that uses the servers, and the model it runs. The MCP ecosystem calls those applications clients (Claude Code, Cowork, ChatGPT), so each one has a canonical name, and the model is set beside it. "Harness" is generic, and "host" names the containing application in the MCP specification, which users rarely mean. How MST drives a client (a CLI, desktop automation or an SDK) never appears in its name; MST's own minimal client is simply mst.
  • "Trace". LangSmith, Braintrust and OpenTelemetry use it, and Anthropic lists it as a synonym of transcript.

Consequences​

  • Renames.
    • The eval config replaces the manifest.
    • arms → variants; the first variant is the baseline unless one is named.
    • A variant's tools replaces toolOverrides.
    • scenario → input; canonicalAnswer folds into expected.answer.
    • iterations → trials; accuracyThreshold → passThreshold.
    • expect → assertions; scores replace verdicts.
    • Hosts become clients with canonical names: mst (was vercel-sdk, anthropic-api and mcpHostConfig), claude-code (was claude-cli), cowork, and chatgpt (was chatgpt-mac and chatgpt-linux). The model is its own setting.
    • The mcp_host, external_host and host case modes merge into one, since a case is always acted on by its variant's client.
    • runVariantExperiment becomes tool optimization.
  • Old names are errors, not aliases. Validation is already strict. A config that uses an old name fails with a message naming its replacement, so nothing is silently ignored and no alias outlives 2.0.
  • Direct tool calls are tests, not evals. A case that calls a tool with fixed arguments has nothing acting on it and nothing to compare. Those checks move to Playwright tests with MST's fixtures and matchers, and datasets hold only cases for a client.
  • One reports vocabulary. Playwright's reporter shows tests. The evals report is organized by run, variant, case and trial, with comparisons against the baseline or an earlier run. It uses only these terms.