Skip to main content
Glama
qase-tms

Qase MCP Server

Official
by qase-tms

Record test results

qase_result_record

Record up to 200 test results into an existing Qase run in one API call—including status, duration, comment, stacktrace, and attachments—instead of one call per test.

Instructions

Record up to 200 results into an existing run — status, duration, comment, stacktrace, attachments — in one call, not one per test. Status is a label only: passed, failed, blocked, skipped, invalid. If the run does not exist yet and the job is finished, qase_ci_report creates, records and completes in one call. Cost: one API call for the whole list, about 0.5s.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeYesProject code, e.g. DEMO
run_idYesRun ID to record results into
resultsYesResults to record, 1 to 200 per call

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv3.0.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / code / description
      Previous value: -"Project code (2-10 uppercase letters, numbers, or underscores)"New value: +"Project code, e.g. DEMO"
    • removedInput schema / properties / results / items / additionalProperties
      Removed value: -false
    • changedInput schema / properties / results / items / properties / attachments / description
      Previous value: -"Attachment hashes from qase_attachment_upload"New value: +"Hashes from qase_attachment_upload"
    • addedInput schema / properties / results / items / properties / custom_field / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / results / items / properties / steps / items / additionalProperties
      Removed value: -false
    • changedInput schema / properties / results / items / properties / steps / items / properties / attachments / description
      Previous value: -"Attachment hashes from qase_attachment_upload"New value: +"Hashes from qase_attachment_upload"
  2. Changed2 schema fields changedv2.4.1
    • changedInput schema / properties / results / description
      Previous value: -"One or more results to record"New value: +"Results to record, 1 to 200 per call"
    • addedInput schema / properties / results / maxItems
      Added value: +200
  3. Changed2 schema fields changedv2.2.1
    • addedInput schema / properties / results / items / properties / attachments / description
      Added value: +"Attachment hashes from qase_attachment_upload"
    • addedInput schema / properties / results / items / properties / steps / items / properties / attachments / description
      Added value: +"Attachment hashes from qase_attachment_upload"
  4. Addedv2.0.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare destructiveHint=false, so the description does real work: it discloses the batch ceiling (200), the cost profile (one API call, about 0.5s), and that status is a label only rather than a gating value. It stops short of stating what happens on re-recording a case already in the run or whether a completed run accepts results, which matters for a mutation tool with thin annotation coverage.

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

Conciseness5/5

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

Three sentences, each earning its place: capability, status semantics, and alternative-tool routing, with cost last. The batch limit and the sibling routing are front-loaded where an agent will read them.

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

Completeness4/5

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

For a three-parameter write tool with no output schema and only a destructiveHint annotation, the description covers batching, cost, status semantics and the sibling alternative. The remaining gap is run-state preconditions (must the run still be open?) and duplicate/overwrite behavior, neither of which is answered by the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so code, run_id and the results array (1–200) are already documented, and the description essentially restates maxItems and the status enum. The one genuine addition is the interpretive note that status is a label only, which is mild value over structured data.

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+resource with scope ('Record up to 200 results into an existing run'), enumerates the payload fields, and names the sibling it is not (qase_ci_report) together with the condition that selects that sibling. An agent can distinguish it from qase_ci_report and qase_run_complete without opening any 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?

Gives an explicit when-not rule: 'If the run does not exist yet and the job is finished, qase_ci_report creates, records and completes in one call.' This directly routes the agent between the two competing tools on a concrete state condition, and the 'one call, not one per test' phrasing tells it not to loop.

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