Skip to content

Improve Bublik MCP list_results() behavior and documentation #326

@okt-romanzh

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions