Skip to content

Improve Bublik MCP list_results() behavior and documentation #326

Description

@okt-romanzh

Problem

The Bublik MCP tool list_results() is difficult to use correctly because its current name and description do not clearly explain what the tool actually returns.

MCP tool description issue

The description says:

List test results with filtering.
parent_id: Filter by parent package ID
start_exec_seqno: Retain only the consecutive sequence of results
starting from the specified execution number, based on the global run sequence

From an MCP client/agent perspective, this sounds like list_results() lists results under a parent package, possibly filtered by result status/properties. However, the actual behavior appears to be more specific:

  • parent_id selects only direct children of the given result-tree node.
  • It does not include nested descendants.
  • start_exec_seqno then limits the response to a consecutive direct-child slice starting from the specified global execution sequence number.
  • The query stops when the next result in the global execution sequence is not a direct child of the selected parent.

This behavior may be valid for Bublik UI lazy-loading, but it is not obvious from the MCP tool documentation.

MCP tool parameter issue

Also, start_exec_seqno appears to be optional in the underlying Bublik service/API, but the MCP tool schema marks it as required. If omitted at the service level, list_results() can return all direct children of parent_id without applying the consecutive-sequence slice. The MCP wrapper should make start_exec_seqno optional as well, or clearly document why MCP requires it.

Example

For a tree like:

  packageA
    packageAA
      resultAA1
      resultAA2
    packageAB
      resultAB1
  packageB

If execution sequence is:

  1 packageA
  2 packageAA
  3 resultAA1
  4 resultAA2
  5 packageAB
  6 resultAB1
  7 packageB

Then:

  list_results(parent_id=packageA, start_exec_seqno=2)

returns only:

  packageAA

It does not return packageAB, because resultAA1 appears next in the global execution sequence and is not a direct child of packageA.

To get packageAB, the caller must know to call:

  list_results(parent_id=packageA, start_exec_seqno=5)

For:

  list_results(parent_id=packageAA, start_exec_seqno=3)

the result is:

  resultAA1
  resultAA2

because those are consecutive direct children of packageAA.

This behavior is non-obvious from the current MCP description.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions