Skip to main content
Glama

Get Run Error Clusters

get_run_error_clusters
Read-only

Group one test run's failing tests by shared error signature to identify distinct failures, affected tests, and error categories. Filter by failed or flaky status to focus analysis.

Instructions

Group ONE run's failing tests by shared error signature (normalized error fingerprint), computed for that run only. Returns error clusters (each = one signature + its affected tests + an error category), an unclustered bucket for blank/unfingerprintable errors, a per-category rollup, and run totals. Failed/timed-out tests cluster on their final-attempt error; flaky tests cluster on the error they recovered from (pre-recovery). Categories: assertion, timeout, element_not_found, network, filesystem, other. Use this to answer "what are the distinct failures in this run?" or "which error affected the most tests?" — it is far cheaper than paging every failed case. Optionally narrow with status="failed" or status="flaky" (default "all"). Workflow: list_testruns() → pick a testrun_id → get_run_error_clusters().

Input Schema

NameRequiredDescriptionDefault
statusNoWhich contributing tests populate the clusters (default "all")
projectIdYesProject ID (e.g. project_<id>)
testrun_idYesThe test run ID to cluster errors for (single run)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv2.2.0
    • addedInput schema / $schema
      Added value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / projectId / description
      Previous value: -"Project ID (Required). The TestDino project identifier."New value: +"Project ID (e.g. project_<id>)"
    • changedInput schema / properties / status / description
      Previous value: -"Filter by test status. 'failed' shows definitively failed tests, 'flaky' shows flaky tests, 'all' (default) includes both."New value: +"Which contributing tests populate the clusters (default \"all\")"
    • changedInput schema / properties / testrun_id / description
      Previous value: -"Test run ID (Required). The run to cluster errors for."New value: +"The test run ID to cluster errors for (single run)"
    • addedInput schema / properties / testrun_id / minLength
      Added value: +1
  2. Addedv2.0.2

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true, so the description carries the behavioral load and does so richly: it discloses clustering semantics (failed/timed-out cluster on final-attempt error, flaky on pre-recovery error), the fixed category set, and the special unclustered bucket for blank/unfingerprintable errors.

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?

Front-loaded with the core operation, then behavior, then usage, then workflow. It is dense and long, but nearly every sentence adds distinct value; the only mild redundancy is restating categories already implied by the clustering concept.

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?

With no output schema, the description still fully characterizes the return shape: error clusters (signature + affected tests + category), an unclustered bucket, a per-category rollup, and run totals. An agent needs nothing more to call and interpret it.

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 coverage is 100%, so the baseline is 3; the description goes beyond it by explaining what status narrows ('Optionally narrow with status="failed" or status="flaky" (default "all")'), giving the filter operational meaning rather than just an enum list.

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 (group one run's failing tests by shared error signature/fingerprint) and immediately scopes it to a single run with 'computed for that run only'. This scope emphasis distinguishes it from broader siblings like get_run_details and list_run_test_cases.

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 names the questions it answers ('what are the distinct failures in this run?', 'which error affected the most tests?') and contrasts cost against paging every failed case. It even supplies the workflow: list_testruns() → pick a testrun_id → get_run_error_clusters().

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