Skip to main content
Glama

Stride — AI software delivery platform

Record test results

stride.record_test_results

Record up to 200 test results against a single run in one call. Each result is { testCaseId, status (PASSED|FAILED|BLOCKED|SKIPPED), duration?, notes?, defectId? }. UPSERTs on (run, case) so re-marking a case is idempotent; updates each case's last-result status. defectId is persisted on the result row — read it back with stride.list_test_results (per row) or stride.get_test_run (linkedDefects). Cases outside the run's project land in notFound; a defect outside the run's project rejects the whole batch. Set completeRun=true only on the final batch to atomically mark the run COMPLETED, timestamp it, and make it eligible for quality gates; the default false keeps partial batches open. Returns applied / notFound arrays + per-status counts. Optional environment + pairKey stamp the run in the same call (Modernize behavioural parity).

Input Schema

NameRequiredDescriptionDefault
pairKeyNoOptionally stamp the run pairKey while recording — the shared key linking a baseline run to its target run.
resultsYes
testRunIdYesUUID of the test run.
completeRunNoFinalize the run atomically with this batch. Leave false for partial batches.
environmentNoOptionally stamp the run environment while recording — "legacy-baseline" or "target" for Modernize parity.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: upsert semantics, the notFound bucket for out-of-project cases, whole-batch rejection when a defect is outside the run's project, run-completion side effects, and the return shape. One caveat keeps it from a 5: "re-marking a case is idempotent" sits in tension with idempotentHint=false; it is scoped to the row upsert (the run-level completeRun/timestamping is why the tool as a whole is not idempotent), but the scoping is implicit and an agent could misread it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded — the batch/upsert statement comes first and every clause carries operational meaning. It is a single run-on paragraph, though, and the closing "Optional environment + pairKey stamp the run" sentence is the weakest, adding little over the schema's own parameter descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by stating the return shape (applied/notFound arrays plus per-status counts). For a mutation tool it covers the failure modes an agent needs (notFound vs whole-batch rejection) and the atomic completion flag, leaving nothing material unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the baseline is 3, and the description earns an upgrade: it explains what defectId persistence actually means (read back via list_test_results or get_test_run.linkedDefects) and spells out the completeRun side effects (mark COMPLETED, timestamp, quality-gate eligibility) beyond the terse schema text. It repeats some schema-visible facts (status enum, 200 max, result object shape) and the final environment/pairKey sentence largely echoes those parameters' own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Record up to 200 test results against a single run") plus the batch scope and the upsert key (run, case). It distinguishes itself from create_test_run and from the read-back siblings (list_test_results, get_test_run) without the agent needing to open another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to set completeRun=true (final batch only, atomic COMPLETED transition, quality-gate eligibility) and that the default false keeps partial batches open. It also routes reading to the right alternatives (list_test_results per row, get_test_run for linkedDefects), which is real when-to-use guidance rather than restated purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.