get_test_cycle_executions
Retrieve all test case executions for a test cycle using its internal ID. Get testCycleTestCaseMapId and testCaseExecutionId for updates, plus key, status, and priority per case.
Instructions
List all test case executions linked to a test cycle. Requires the internal cycle id (from get_test_cycle, not the key). Returns testCycleTestCaseMapId (needed for bulk_update), testCaseExecutionId (needed for update_test_execution), key, status, and priority per test case.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Test cycle ID (internal ID from search_test_cycles) | |
| startAt | No | Page offset (default 0) | |
| maxResults | No | Items per page (max 100, default 50) | |
| sort | No | Sort e.g. "id:asc" or "updated:desc" | |
| fields | No | Comma-separated fields to return |
Implementation Reference
- src/index.ts:425-439 (handler)The tool handler for 'get_test_cycle_executions'. It accepts an internal cycle ID and pagination params, then POSTs to /testcycles/{id}/testcases/search with an empty filter to list all test case executions linked to a test cycle.
tool( "get_test_cycle_executions", "List all test case executions linked to a test cycle. Requires the internal cycle id (from get_test_cycle, not the key). Returns testCycleTestCaseMapId (needed for bulk_update), testCaseExecutionId (needed for update_test_execution), key, status, and priority per test case.", { id: ID.describe("Test cycle ID (internal ID from search_test_cycles)"), ...Pagination, }, async ({ id, startAt, maxResults, sort, fields }) => ok( await qtmFetch(`/testcycles/${id}/testcases/search${qs({ startAt, maxResults, sort, fields })}`, { method: "POST", body: JSON.stringify({ filter: {} }), }) ) ); - src/index.ts:428-431 (schema)Input schema for get_test_cycle_executions: requires an internal cycle ID and accepts optional pagination params (startAt, maxResults, sort, fields).
{ id: ID.describe("Test cycle ID (internal ID from search_test_cycles)"), ...Pagination, }, - src/index.ts:425-439 (registration)Registration of the tool via the 'tool' helper, which wraps server.registerTool from the MCP SDK.
tool( "get_test_cycle_executions", "List all test case executions linked to a test cycle. Requires the internal cycle id (from get_test_cycle, not the key). Returns testCycleTestCaseMapId (needed for bulk_update), testCaseExecutionId (needed for update_test_execution), key, status, and priority per test case.", { id: ID.describe("Test cycle ID (internal ID from search_test_cycles)"), ...Pagination, }, async ({ id, startAt, maxResults, sort, fields }) => ok( await qtmFetch(`/testcycles/${id}/testcases/search${qs({ startAt, maxResults, sort, fields })}`, { method: "POST", body: JSON.stringify({ filter: {} }), }) ) ); - src/index.ts:76-83 (helper)Helper function 'qs' used to build query strings from pagination params (startAt, maxResults, sort, fields) for the API call.
function qs(params: Record<string, string | number | undefined>): string { const p = new URLSearchParams(); for (const [k, v] of Object.entries(params)) { if (v !== undefined) p.set(k, String(v)); } const s = p.toString(); return s ? `?${s}` : ""; } - src/index.ts:69-73 (helper)Helper function 'ok' used to wrap API responses into MCP tool content.
function ok(data: unknown) { return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }], }; }