Skip to main content
Glama
concavegit
by concavegit

list_ci_issues

Retrieve and filter CI/CD issues from App Store Connect builds to identify errors, warnings, and test failures during iOS/macOS development.

Instructions

List issues and errors from a build run or build action

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
buildRunIdNoThe ID of the build run to list issues for (provide either buildRunId or buildActionId)
buildActionIdNoThe ID of the build action to list issues for (provide either buildRunId or buildActionId)
limitNoMaximum number of issues to return (default: 100, max: 200)
sortNoSort order for the results
filterNo
includeNoRelated resources to include in the response
fieldsNo

Implementation Reference

  • The handler function `listIssues` in the `WorkflowHandlers` class that executes the tool logic by calling the App Store Connect API to list CI issues for a build run or action.
    async listIssues(args: { buildRunId?: string; buildActionId?: string; limit?: number; sort?: CiIssueSortOptions; filter?: CiIssueFilters; fields?: { ciIssues?: CiIssueFieldOptions[]; }; include?: CiIssueIncludeOptions[]; }): Promise<CiIssuesResponse> { const { buildRunId, buildActionId, limit = 100, sort, filter, fields, include } = args; if (!buildRunId && !buildActionId) { throw new Error('Either buildRunId or buildActionId must be provided'); } 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)); const endpoint = buildRunId ? `/ciBuildRuns/${buildRunId}/issues` : `/ciBuildActions/${buildActionId}/issues`; return this.client.get<CiIssuesResponse>(endpoint, params); }
  • src/index.ts:1085-1146 (registration)
    Tool registration object defining the 'list_ci_issues' tool, including name, description, and detailed input schema.
    name: "list_ci_issues", description: "List issues and errors from a build run or build action", inputSchema: { type: "object", properties: { buildRunId: { type: "string", description: "The ID of the build run to list issues for (provide either buildRunId or buildActionId)" }, buildActionId: { type: "string", description: "The ID of the build action to list issues for (provide either buildRunId or buildActionId)" }, limit: { type: "number", description: "Maximum number of issues to return (default: 100, max: 200)", minimum: 1, maximum: 200 }, sort: { type: "string", description: "Sort order for the results", enum: ["issueType", "-issueType", "category", "-category", "message", "-message"] }, filter: { type: "object", properties: { issueType: { type: "string", enum: ["ANALYZER_WARNING", "ERROR", "TEST_FAILURE", "WARNING"], description: "Filter by issue type" }, category: { type: "string", description: "Filter by issue category" } } }, include: { type: "array", items: { type: "string", enum: ["buildAction", "buildRun"] }, description: "Related resources to include in the response" }, fields: { type: "object", properties: { ciIssues: { type: "array", items: { type: "string", enum: ["issueType", "message", "fileSource", "category"] }, description: "Fields to include for each issue" } } } } } },
  • src/index.ts:1441-1444 (registration)
    Dispatch handler in the main switch statement that binds 'list_ci_issues' calls to the workflowHandlers.listIssues method.
    case "list_ci_issues": const issuesData = await this.workflowHandlers.listIssues(args as any); return formatResponse(issuesData);
  • TypeScript type definitions for CI issues, including CiIssue interface, CiIssuesResponse, filters, sort options, fields, and includes used in the handler.
    // CI Issue Types export interface CiIssue { id: string; type: "ciIssues"; attributes: { issueType: "ANALYZER_WARNING" | "ERROR" | "TEST_FAILURE" | "WARNING"; message: string; fileSource?: { filePath?: string; line?: number; column?: number; }; category?: string; }; relationships?: { buildAction?: { data?: { id: string; type: "ciBuildActions"; }; }; buildRun?: { data?: { id: string; type: "ciBuildRuns"; }; }; }; } export interface CiIssuesResponse { data: CiIssue[]; included?: Array<{ id: string; type: "ciBuildActions" | "ciBuildRuns"; attributes: any; }>; links?: { self: string; first?: string; next?: string; }; meta?: { paging: { total: number; limit: number; }; }; } export interface CiIssueFilters { issueType?: "ANALYZER_WARNING" | "ERROR" | "TEST_FAILURE" | "WARNING"; category?: string; } export type CiIssueSortOptions = | "issueType" | "-issueType" | "category" | "-category" | "message" | "-message"; export type CiIssueFieldOptions = | "issueType" | "message" | "fileSource" | "category"; export type CiIssueIncludeOptions = | "buildAction" | "buildRun";
  • Imports helper functions sanitizeLimit, buildFilterParams, buildFieldParams used to construct API query parameters in the handler.
    import { sanitizeLimit, buildFilterParams, buildFieldParams } from '../utils/index.js';

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