Skip to main content
Glama
concavegit
by concavegit

list_ci_build_actions

Retrieve build actions (analyze, build, test, archive) for a specific App Store Connect CI build run to monitor progress and status.

Instructions

List build actions (analyze, build, test, archive) for a specific build run

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
buildRunIdYesThe ID of the build run to list actions for
limitNoMaximum number of build actions to return (default: 100, max: 200)
sortNoSort order for the results
filterNo
includeNoRelated resources to include in the response
fieldsNo

Implementation Reference

  • The main handler function that fetches CI build actions from the App Store Connect API for a given build run ID.
    async listBuildActions(args: { buildRunId: string; limit?: number; sort?: CiBuildActionSortOptions; filter?: CiBuildActionFilters; fields?: { ciBuildActions?: CiBuildActionFieldOptions[]; }; include?: CiBuildActionIncludeOptions[]; }): Promise<CiBuildActionsResponse> { const { buildRunId, limit = 100, sort, filter, fields, include } = args; const params: Record<string, any> = { limit: sanitizeLimit(limit) }; if (sort) { params.sort = sort; } if (include?.length) { params.include = include.join(','); } Object.assign(params, buildFilterParams(filter)); Object.assign(params, buildFieldParams(fields)); return this.client.get<CiBuildActionsResponse>(`/ciBuildRuns/${buildRunId}/actions`, params); }
  • src/index.ts:1431-1435 (registration)
    Tool registration in the MCP server handler switch statement, mapping the tool call to the workflow handler.
    // CI Build Actions Management case "list_ci_build_actions": const buildActionsData = await this.workflowHandlers.listBuildActions(args as any); return formatResponse(buildActionsData);
  • MCP tool schema definition including input parameters, descriptions, types, and constraints for list_ci_build_actions.
    name: "list_ci_build_actions", description: "List build actions (analyze, build, test, archive) for a specific build run", inputSchema: { type: "object", properties: { buildRunId: { type: "string", description: "The ID of the build run to list actions for" }, limit: { type: "number", description: "Maximum number of build actions to return (default: 100, max: 200)", minimum: 1, maximum: 200 }, sort: { type: "string", description: "Sort order for the results", enum: ["name", "-name", "actionType", "-actionType", "startedDate", "-startedDate", "finishedDate", "-finishedDate"] }, filter: { type: "object", properties: { actionType: { type: "string", enum: ["ANALYZE", "BUILD", "TEST", "ARCHIVE"], description: "Filter by action type" }, executionProgress: { type: "string", enum: ["PENDING", "RUNNING", "COMPLETE"], description: "Filter by execution progress" }, completionStatus: { type: "string", enum: ["SUCCEEDED", "FAILED", "ERRORED", "CANCELED", "SKIPPED"], description: "Filter by completion status" } } }, include: { type: "array", items: { type: "string", enum: ["buildRun", "issues", "testResults"] }, description: "Related resources to include in the response" }, fields: { type: "object", properties: { ciBuildActions: { type: "array", items: { type: "string", enum: ["name", "actionType", "startedDate", "finishedDate", "issueCounts", "executionProgress", "completionStatus"] }, description: "Fields to include for each build action" } } } }, required: ["buildRunId"] } },
  • Type definitions for CI build actions, responses, filters, sort options, field options, and includes used by the tool.
    // CI Build Action Types export interface CiBuildAction { id: string; type: "ciBuildActions"; attributes: { name: string; actionType: "ANALYZE" | "BUILD" | "TEST" | "ARCHIVE"; startedDate?: string; finishedDate?: string; issueCounts?: { analyzerWarnings?: number; errors?: number; testFailures?: number; warnings?: number; }; executionProgress?: "PENDING" | "RUNNING" | "COMPLETE"; completionStatus?: "SUCCEEDED" | "FAILED" | "ERRORED" | "CANCELED" | "SKIPPED"; }; relationships?: { buildRun?: { data?: { id: string; type: "ciBuildRuns"; }; }; issues?: { data?: Array<{ id: string; type: "ciIssues"; }>; }; testResults?: { data?: Array<{ id: string; type: "ciTestResults"; }>; }; }; } export interface CiBuildActionsResponse { data: CiBuildAction[]; included?: Array<{ id: string; type: "ciBuildRuns" | "ciIssues" | "ciTestResults"; attributes: any; }>; links?: { self: string; first?: string; next?: string; }; meta?: { paging: { total: number; limit: number; }; }; } export interface CiBuildActionFilters { actionType?: "ANALYZE" | "BUILD" | "TEST" | "ARCHIVE"; executionProgress?: "PENDING" | "RUNNING" | "COMPLETE"; completionStatus?: "SUCCEEDED" | "FAILED" | "ERRORED" | "CANCELED" | "SKIPPED"; } export type CiBuildActionSortOptions = | "name" | "-name" | "actionType" | "-actionType" | "startedDate" | "-startedDate" | "finishedDate" | "-finishedDate"; export type CiBuildActionFieldOptions = | "name" | "actionType" | "startedDate" | "finishedDate" | "issueCounts" | "executionProgress" | "completionStatus"; export type CiBuildActionIncludeOptions = | "buildRun" | "issues" | "testResults";
  • Utility functions used in handlers: sanitizeLimit for limit param, buildFilterParams and buildFieldParams for constructing API query parameters.
    export function buildFilterParams(filter: Record<string, any> = {}): Record<string, string> { const params: Record<string, string> = {}; Object.entries(filter).forEach(([key, value]) => { if (value !== undefined && value !== null) { if (Array.isArray(value)) { params[`filter[${key}]`] = value.join(','); } else { params[`filter[${key}]`] = String(value); } } }); return params; } export function buildFieldParams(fields: Record<string, string[]> = {}): Record<string, string> { const params: Record<string, string> = {}; Object.entries(fields).forEach(([key, value]) => { if (Array.isArray(value) && value.length > 0) { params[`fields[${key}]`] = value.join(','); } });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/concavegit/app-store-connect-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server