get_launch_summary
Retrieve a concise launch summary from Zebrunner Test Case Management using the new reporting API, focusing on essential metrics without detailed test session data.
Instructions
๐ Get quick launch summary without detailed test sessions (uses new reporting API)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | Project key (e.g., 'android' or 'ANDROID') - alternative to projectId | |
| projectId | No | Project ID (e.g., 7) - alternative to projectKey | |
| launchId | Yes | Launch ID (e.g., 118685) | |
| format | No | Output format | json |
Implementation Reference
- src/server-with-reporting.ts:163-173 (registration)MCP tool registration for 'get_launch_summary' - defines name, description, input schema, and delegates execution to ZebrunnerReportingToolHandlers.getLauncherSummaryserver.tool( "get_launch_summary", "๐ Get quick launcher summary without detailed test sessions (uses new reporting API)", { projectKey: z.string().min(1).optional().describe("Project key (e.g., 'android' or 'ANDROID') - alternative to projectId"), projectId: z.number().int().positive().optional().describe("Project ID (e.g., 7) - alternative to projectKey"), launchId: z.number().int().positive().describe("Launch ID (e.g., 118685)"), format: z.enum(['dto', 'json', 'string']).default('json').describe("Output format") }, async (args) => reportingHandlers.getLauncherSummary(args) );
- src/server-with-reporting.ts:166-170 (schema)Zod input schema validation for get_launch_summary tool parameters: project identifier (key or ID), required launchId, and output format.{ projectKey: z.string().min(1).optional().describe("Project key (e.g., 'android' or 'ANDROID') - alternative to projectId"), projectId: z.number().int().positive().optional().describe("Project ID (e.g., 7) - alternative to projectKey"), launchId: z.number().int().positive().describe("Launch ID (e.g., 118685)"), format: z.enum(['dto', 'json', 'string']).default('json').describe("Output format")
- src/types/reporting.ts:27-85 (schema)Comprehensive Zod schema for LaunchResponse from Reporting API, defining all fields for launch summary data including stats, metadata, and attributes.export const LaunchResponseSchema = z.object({ id: z.number(), name: z.string(), ciRunId: z.string().optional(), status: z.string(), project: z.object({ id: z.number(), name: z.string(), key: z.string(), deleted: z.boolean() }).optional(), projectId: z.number(), user: z.object({ id: z.number(), username: z.string(), email: z.string() }).optional(), testSuite: z.object({ id: z.number(), name: z.string(), projectId: z.number().nullable() }).optional(), ciBuild: z.object({ jobUrl: z.string(), number: z.string() }).optional(), startedAt: z.coerce.number(), // timestamp - coerce to handle string or number endedAt: z.coerce.number().optional(), // timestamp - coerce to handle string or number elapsed: z.coerce.number().optional(), framework: z.string().optional(), environment: z.string().optional(), build: z.string().optional(), locale: z.string().optional(), platform: z.string().optional(), platformVersion: z.string().optional(), device: z.string().optional(), passed: z.coerce.number().optional(), passedManually: z.coerce.number().optional(), failed: z.coerce.number().optional(), failedAsKnown: z.coerce.number().optional(), skipped: z.coerce.number().optional(), blocked: z.coerce.number().optional(), inProgress: z.coerce.number().optional(), aborted: z.coerce.number().optional(), reviewed: z.boolean().optional(), isRelaunchPossible: z.boolean().optional(), isLaunchAgainPossible: z.boolean().optional(), isAbortPossible: z.boolean().optional(), labels: z.array(z.object({ key: z.string(), value: z.string() })).optional(), artifacts: z.array(z.object({ name: z.string(), value: z.string() })).optional(), testSuiteId: z.number().optional(), userId: z.number().optional() });
- src/api/reporting-client.ts:210-218 (helper)Core API method to fetch launch details/summary from Zebrunner Reporting API endpoint, validates with LaunchResponseSchema - underlying logic for the tool.async getLaunch(launchId: number, projectId: number): Promise<LaunchResponse> { const url = `/api/reporting/v1/launches/${launchId}?projectId=${projectId}`; const response = await this.makeAuthenticatedRequest<any>('GET', url); // Extract the actual launch data from the nested response const launchData = response.data || response; return LaunchResponseSchema.parse(launchData); }