Skip to main content
Glama
thatfactory

xcode-cloud-mcp

by thatfactory

xcode-cloud-mcp

Minimal MCP server for discovering Xcode Cloud products, inspecting and editing workflows, monitoring build runs, and retrieving build issues, logs, test summaries, and UI test artifacts through the App Store Connect API.

Features

Feature

Tool(s)

Example use

Example return

Discover products

list_products

"Show me the Xcode Cloud products available in this account."

Demo App, productType: APP, createdDate: 2026-03-30T10:00:00Z

Discover workflows

list_workflows

"List the workflows for product def456."

Feature Branch, description, isEnabled: true, containerFilePath: Chauffeur.xcodeproj

Inspect workflow configuration

get_workflow_details

"Show me the full workflow details for abc123, including environment and actions."

general, environment, startConditions, actions, postActions

Monitor running or recent builds

list_build_runs

"Show me the running builds for workflow abc123 so I can monitor them."

number: 93, executionProgress: RUNNING, completionStatus: null, startedDate: ...

Enable or disable a workflow

set_workflow_enabled

"Disable workflow abc123 while we are testing new settings."

operation.type: set_workflow_enabled, workflow.general.isEnabled: false

Update name, description, or clean mode

update_workflow_general

"Rename workflow abc123 to Feature Branch v2 and adjust its description."

changedFields: [name, description], updated workflow.general

Update start conditions explicitly

update_workflow_start_conditions

"Change workflow abc123 so pull-request builds no longer auto-cancel."

updated workflow.startConditions.pullRequest.autoCancel: false

Replace the workflow action list

update_workflow_actions

"Remove the archive action from workflow abc123, then add it back once the experiment is done."

actionCount: 4 after removal, then actionCount: 5 after restore

See build health quickly

get_build_issues

"What went wrong in the latest failing build for workflow abc123?"

issueCounts: { errors: 1, testFailures: 3, warnings: 2 }

Read compact build log summaries

get_build_logs

"Retrieve logs of build 81 and summarize the failure."

failedTests, highlights, excerpt, savedLogsDirectory

Materialize logs for local grep

materialize_build_logs

"Download the logs for build 81 so I can grep them locally."

savedLogsDirectory: /var/folders/..., savedLogs: [...]

Summarize test outcomes

get_test_results

"Summarize the test results for the latest failing build."

testFailures, issueCounts, summary

Jump straight to failed tests

get_failed_tests

"What tests failed in build 81?"

displayExpiryDateReturnsFormattedDateWhenExpiryDateExists(), assertion message, saved log paths

Retrieve UI test artifacts

get_test_artifacts

"Show me the screenshots and videos from the latest failing UI test run."

screenshots, videos, resultBundles, downloadUrl

Clean up local temp files

cleanup_saved_logs

"Remove saved logs older than 24 hours."

removedDirectories: [...], retainedDirectories: [...]

Build lookup is workflow-scoped. Retrieval tools accept a direct buildRunId, or a workflowId plus buildNumber, or a workflowId plus buildSelector: "latest" | "latestFailing".

list_products and list_workflows automatically paginate through all results.

list_build_runs supports status: "all" | "failed" | "succeeded" | "running" | "pending" and an optional limit, which defaults to 20, so agents can poll active workflows without post-processing every run locally or inflating MCP response size.

Related MCP server: appstore-release-mcp

Requirements

  • Node.js 20+

  • App Store Connect API credentials with access to Xcode Cloud

Environment Variables

Primary names:

  • APPSTORE_CONNECT_API_KEY_ID

  • APPSTORE_CONNECT_API_ISSUER_ID

  • APPSTORE_CONNECT_API_KEY_CONTENT

Compatibility aliases:

  • APP_STORE_KEY_ID

  • APP_STORE_ISSUER_ID

  • APP_STORE_PRIVATE_KEY

The private key can be passed as literal multi-line PEM content or as a string with escaped \n.

Claude Setup

claude mcp add xcode-cloud \
  --env APPSTORE_CONNECT_API_KEY_ID="$APPSTORE_CONNECT_API_KEY_ID" \
  --env APPSTORE_CONNECT_API_ISSUER_ID="$APPSTORE_CONNECT_API_ISSUER_ID" \
  --env APPSTORE_CONNECT_API_KEY_CONTENT="$APPSTORE_CONNECT_API_KEY_CONTENT" \
  -- npx -y @thatfactory/xcode-cloud-mcp

Codex Setup

codex mcp add xcode-cloud \
  --env APPSTORE_CONNECT_API_KEY_ID="$APPSTORE_CONNECT_API_KEY_ID" \
  --env APPSTORE_CONNECT_API_ISSUER_ID="$APPSTORE_CONNECT_API_ISSUER_ID" \
  --env APPSTORE_CONNECT_API_KEY_CONTENT="$APPSTORE_CONNECT_API_KEY_CONTENT" \
  -- npx -y @thatfactory/xcode-cloud-mcp

Available Tools

  • list_products()

  • list_workflows(productId)

  • get_workflow_details(workflowId)

  • list_build_runs(workflowId, limit?, status?)

  • set_workflow_enabled(workflowId, enabled)

  • update_workflow_general(workflowId, name?, description?, clean?)

  • update_workflow_start_conditions(workflowId, branchStartCondition?, manualBranchStartCondition?, pullRequestStartCondition?, manualPullRequestStartCondition?, scheduledStartCondition?, tagStartCondition?, manualTagStartCondition?)

  • update_workflow_actions(workflowId, actions)

  • get_build_issues(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_build_logs(buildRunId? workflowId? buildNumber? buildSelector?, maxCharacters?)

  • materialize_build_logs(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_test_results(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_failed_tests(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_test_artifacts(buildRunId? workflowId? buildNumber? buildSelector?)

  • cleanup_saved_logs(buildRunId?, maxAgeHours?)

Log Retrieval Behavior

get_build_logs keeps the MCP response compact on purpose:

  • it downloads and extracts text-like build log artifacts to a temporary local directory

  • it returns savedLogsDirectory and savedLogs so local agents can inspect the extracted files with rg, grep, or cat

  • it returns a compact failedTests summary, highlights, and a capped excerpt

  • even if a caller passes a very large maxCharacters, the inline excerpt is clamped to avoid oversized MCP responses

Recommended agent workflow:

  1. Call get_failed_tests or get_build_logs.

  2. Read savedLogsDirectory.

  3. Use rg inside that directory to inspect the exact failing test or assertion.

  4. If needed, call cleanup_saved_logs when the investigation is done.

Temporary logs are written under the system temp directory in a path like:

/tmp/xcode-cloud-mcp/build-logs/<buildRunId>

On macOS this typically resolves to a path under /var/folders/.../T/.

Cleanup policy:

  • each new call for the same buildRunId deletes and recreates that build-specific temp directory first

  • older build directories are pruned automatically when they are older than 24 hours

  • you can also call cleanup_saved_logs directly for one buildRunId or for all directories older than a chosen retention window

Example Prompts

Retrieve logs of the latest failing build for workflow abc123.
Retrieve logs of build 81, then inspect the returned savedLogsDirectory and grep for Expectation failed.
Get the failed tests for build 81, then open the saved logs directory and inspect the failing test in context.
Retrieve logs of build number 42 for workflow abc123.
Show me the latest failing UI test artifacts for workflow abc123.
List the workflows for product def456 and then summarize the latest build.
Show me the full workflow details for workflow abc123, including environment, start conditions, actions, and whether it is enabled.
Disable workflow abc123, remove the archive action, then restore the original action list after the experiment.

Workflow Details Behavior

get_workflow_details returns the live workflow configuration exposed by App Store Connect, grouped into:

  • general

  • environment

  • startConditions

  • actions

  • postActions

Notes:

  • environment includes repository, xcodeVersion, and macOsVersion when App Store Connect returns them.

  • actions includes action type, scheme, platform, destination, required-to-pass state, and test-plan details when present.

  • postActions is currently returned as an empty array with a note because the App Store Connect workflow payload does not expose separate post-actions in the observed API response.

Workflow Update Behavior

The workflow update tools are intentionally explicit:

  • set_workflow_enabled only toggles isEnabled

  • update_workflow_general only changes name, description, and clean

  • update_workflow_start_conditions only changes the start-condition objects you pass

  • update_workflow_actions replaces the full actions array, so callers should fetch the current workflow first and then send the final desired action list

Important restriction:

  • if the workflow has Restrict Editing enabled in Xcode Cloud, edits can fail even when the App Store Connect API key has App Manager access

  • for MCP edits to work reliably, disable the Restrict Editing checkbox for that workflow before using the write tools

  • if Apple still rejects the request after that, use a stronger API key role such as Admin

Local Development

Install dependencies:

npm install

Run tests:

npm test

Build the package:

npm run build

Available Tools

15 tools
cleanup_saved_logsA

Remove saved local log directories either for one build run or for all directories older than a retention window.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildRunIdNo
maxAgeHoursNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It mentions removal (destructive) but does not discuss reversibility, permissions, safety, or side effects (e.g., impact on other tools). Lacks transparency expected for a deletion tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 18 words, front-loaded with the verb 'Remove'. No extraneous information, highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 optional parameters and no output schema, the description covers the basic purpose and modes. However, it lacks detail on behavior when both parameters are provided, the meaning of 'local', and whether the operation is reversible. Adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must add meaning. It explains that 'buildRunId' identifies a build run and 'maxAgeHours' sets a retention window, and implies an either/or usage. However, it does not clarify edge cases (e.g., both parameters provided) or constraints (e.g., maxAgeHours limits).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (remove) and the resource (saved local log directories), and distinguishes two modes of operation (by build run ID or by age). No sibling cleanup tools exist, so differentiation is not needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides two explicit use cases (removing logs for a specific build run or by age), but gives no guidance on when not to use, prerequisites, or alternatives. The mutual exclusivity of parameters is implied but not clarified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_build_issuesC

Resolve a build and return build identity plus issue counts from Xcode Cloud.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildRunIdNo
workflowIdNo
buildNumberNo
buildSelectorNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden. It uses 'Resolve' which could imply mutation, but doesn't clarify side effects, permissions, or state changes. No behavioral traits beyond the basic action are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks clarity due to the ambiguous term 'Resolve'. It could be more efficient by directly stating the function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters, no output schema, and no annotations, the description is severely incomplete. It does not specify required parameters, return format, or usage context, leaving the agent without sufficient information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the four parameters (buildRunId, workflowId, buildNumber, buildSelector). It does not explain which parameters are needed or how they relate to 'resolve' or 'issue counts'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it resolves a build and returns identity plus issue counts, providing a specific verb and resource. However, it does not differentiate from sibling tools like get_build_logs or get_failed_tests, which also deal with build issues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are no prerequisites, exclusions, or context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_build_logsC

Resolve a build, download text-like log artifacts, save them under a temporary local directory, and return a compact summary with failed tests, highlights, and saved log paths that local agents can inspect with grep or cat.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildRunIdNo
workflowIdNo
buildNumberNo
buildSelectorNo
maxCharactersNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key actions: resolve, download, save, return summary. But with no annotations, it misses details on side effects (temp file lifecycle), permissions, or rate limits. The mention of 'temporary local directory' hints at cleanup but is ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence conveying multiple aspects efficiently. Could be broken into two for clarity, but no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite clear purpose, the description omits parameter semantics and return format details. For a tool with 5 optional parameters and no output schema, it is insufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Parameters (buildRunId, workflowId, buildNumber, buildSelector, maxCharacters) are undocumented in schema and description. The description adds zero information about how to specify the build or limit output, leaving the agent to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves a build, downloads log artifacts, saves locally, and returns a summary with failures and paths. However, it does not explicitly differentiate from sibling tools like materialize_build_logs or get_failed_tests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies usage for local log inspection but lacks prerequisites, when-not-to-use, or comparisons to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_failed_testsC

Resolve a build, ensure logs are materialized locally, and return only the detected failed tests with their assertion messages when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildRunIdNo
workflowIdNo
buildNumberNo
buildSelectorNo

TDQS

C2.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it resolves a build and materializes logs locally, which are behavioral traits beyond the read-only implication of the name. However, it is unclear if these are side effects or prerequisites, and without annotations, the transparency is incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, but it tries to convey multiple actions productively, making it dense and potentially confusing. It could be split into clearer statements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters, no annotations, no output schema, and related sibling tools, the description is incomplete. It does not explain what the tool returns (beyond 'failed tests'), how to interpret parameters, or how it integrates with other tools for a complete workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 4 parameters with 0% description coverage, and the description adds no meaning or guidance on how to use them. Parameters like buildRunId, workflowId, buildNumber, buildSelector are not explained in the context of the tool's operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Resolve a build, ensure logs are materialized locally, and return only the detected failed tests...' which mixes multiple actions beyond just retrieving failed tests. It is vague about the primary function and does not clearly distinguish from sibling tools like get_build_logs, get_test_results, and materialize_build_logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_test_results or materialize_build_logs. The description does not mention prerequisites or context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_test_artifactsC

Resolve a build and return metadata plus download URLs for UI test artifacts and result bundles.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildRunIdNo
workflowIdNo
buildNumberNo
buildSelectorNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It indicates a read operation (return metadata and URLs) but does not disclose behavioral traits like authentication requirements, rate limits, error handling (e.g., what if build not found), or whether the operation is destructive. The description only gives high-level purpose without essential behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, 16 words, with no redundancy. It is front-loaded with the verb 'Resolve.' However, given the complexity of 4 parameters and no schema descriptions, the conciseness comes at the expense of completeness. It could be slightly longer to add parameter guidance without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters, no output schema, no annotations, and 15 sibling tools, the description is insufficient. It does not specify inputs, output format, constraints, or usage context. For a tool that resolves builds and returns artifacts, important details like required parameter combinations, download URL structure, and metadata fields are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning no parameter descriptions in the schema. The tool description does not mention any parameters or explain how they identify the build. It does not clarify the role of buildRunId, workflowId, buildNumber, or buildSelector, nor does it explain the enum values for buildSelector. An agent cannot infer how to construct input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves a build and returns metadata and download URLs for UI test artifacts and result bundles. The verb 'resolve' and 'return' combined with the specific resource (UI test artifacts and result bundles) gives a clear purpose. However, it does not differentiate from sibling tools like get_test_results or get_build_logs, which could also return test-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided. The description implies usage when needing test artifacts from a build, but there are many sibling tools with overlapping functionality (e.g., get_build_logs, get_test_results) and no alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_test_resultsC

Resolve a build and return build-level test summary information, saved local log paths, detected failed tests, and result bundle metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildRunIdNo
workflowIdNo
buildNumberNo
buildSelectorNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description must cover behavioral traits. It only lists return content without mentioning side effects, authorization, rate limits, or error states. For a build-resolution tool, better transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence listing multiple return types is concise but slightly run-on. No structural issues, but could be clearer with bullet points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters with no descriptions and no output schema, the description fails to provide enough context for correct invocation. Missing parameter guidance and return format details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

0% schema description coverage means schema provides no parameter details. Description does not mention or clarify the meaning of buildRunId, workflowId, buildNumber, or buildSelector, leaving the agent blind on how to specify the build.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states the tool returns build-level test summary, log paths, failed tests, and bundle metadata. While clear, it does not explicitly differentiate from sibling tools like get_failed_tests or get_build_logs, but the broader scope is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_failed_tests or get_build_logs. No prerequisites or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workflow_detailsA

Retrieve detailed Xcode Cloud workflow configuration, including environment, start conditions, actions, and enabled state.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool retrieves configuration details (read-only), but does not mention any behavioral traits like required permissions, idempotency, or error conditions. The verb 'Retrieve' implies safety, but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 15 words, immediately conveys purpose. No redundant or filler information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with one parameter and no output schema, the description adequately lists the included configuration aspects. However, it could mention potential error scenarios or prerequisites (e.g., workflow existence).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has one parameter (workflowId) with 0% description coverage. The tool description does not explain the parameter's format, source, or constraints, leaving the agent to infer its meaning from context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Retrieve' and resource 'detailed Xcode Cloud workflow configuration', listing specific included fields (environment, start conditions, actions, enabled state). This distinguishes it from sibling tools like list_workflows (listing summaries) and update_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs alternatives, but the description implies it is for retrieving detailed configuration of a specific workflow, contrasting with listing or update tools. Lacks explicit when-not-to-use or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_build_runsB

List recent build runs for a workflow, optionally filtered by outcome. Automatically paginates through build runs. Use limit to cap the number of results returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of build runs to return. Defaults to 20 if not specified.
statusNo
workflowIdYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description reveals automatic pagination and limit control, which are behavioral. However, it omits read-only nature (no annotations) and other traits like ordering, rate limits, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-loaded with purpose and key behaviors. No superfluous words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description covers listing, filtering, pagination, and limit. However, it lacks order details, result structure, and prerequisites, so it's not fully complete for a 3-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description explains the status parameter as filtering by outcome and the limit parameter as capping results, adding meaning beyond the schema (which only documents limit's range/default). This complements the 33% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists build runs for a workflow, with optional filtering by outcome. The verb 'list' and resource 'build runs' provide clear purpose, distinguishing it from siblings like get_build_issues or get_build_logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs. alternatives. It mentions filtering and pagination but doesn't contrast with sibling tools or specify prerequisites (e.g., workflow exists).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_productsA

List Xcode Cloud products available to the configured App Store Connect account. Automatically paginates through all results.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the behavioral detail of automatic pagination, which is helpful. However, it does not explicitly state that the operation is read-only or non-destructive, and no annotations are provided to clarify this. For a list operation, this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no wasted words. The primary action is front-loaded in the first sentence, and a key behavioral detail follows in the second.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description covers the essential purpose and automatic pagination. It does not describe the structure of returned data, but given the tool's simplicity, this is acceptable. It could be improved by explicitly noting it is a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the input schema provides no information. The description compensates by explaining the purpose and pagination behavior, adding meaning beyond the schema. Baseline for no params is 4, and this description meets it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'Xcode Cloud products' within the context of the configured App Store Connect account. It naturally distinguishes itself from sibling tools which focus on builds, logs, and workflows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. However, given that no sibling tool lists products, the usage context is somewhat implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workflowsA

List workflows for a given Xcode Cloud product. Automatically paginates through all results.

ParametersJSON Schema
NameRequiredDescriptionDefault
productIdYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses automatic pagination but omits read-only nature, authentication needs, data limits, or error behavior. Acceptable but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core action, then add pagination detail. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 14 siblings, the description provides minimal context beyond the operation. Lacks details on response structure, output fields, or how 'workflows' are represented. Adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet the description only implies productId but does not explain its format, how to obtain it, or its role. No compensation for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'list' and resource 'workflows for a given Xcode Cloud product', with additional detail on automatic pagination. Distinguishes from sibling like get_workflow_details by implying listing all.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies the context ('for a given Xcode Cloud product') but does not mention when to use this tool vs alternatives like get_workflow_details, nor any usage restrictions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

materialize_build_logsB

Resolve a build, download and extract text-like log artifacts into a local temporary directory, and return saved file paths for grep or cat based investigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
buildRunIdNo
workflowIdNo
buildNumberNo
buildSelectorNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description outlines the process (resolve, download, extract, return paths) but omits side effects like temporary directory lifecycle and cleanup. With no annotations, the description carries the burden; it is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence covering the main action. It could be improved by front-loading the purpose and adding parameter hints, but it remains efficient without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters, no output schema, and no annotations, the description lacks essential details like parameter purposes, output format, and prerequisites (e.g., build existence). It is insufficient for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the parameters (buildRunId, workflowId, buildNumber, buildSelector). It only vaguely mentions 'resolve a build' without clarifying how parameters affect behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves a build, downloads and extracts text-like log artifacts, and returns file paths for investigation. It uses specific verbs and resources, and distinguishes from siblings like get_build_logs by emphasizing materialization to local files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_build_logs or cleanup_saved_logs. It mentions 'for grep or cat based investigation' but lacks explicit when-to-use or when-not-to-use criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_workflow_enabledB

Explicitly enable or disable one Xcode Cloud workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes
workflowIdYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states the mutation action without disclosing side effects, permissions, or idempotency. Minimal behavioral context given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action and resource, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple toggle tool, the description conveys the core action but lacks parameter details and any behavioral caveats. Given no output schema, it is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the parameters at all. It fails to add meaning to workflowId or enabled beyond their names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool explicitly enables or disables an Xcode Cloud workflow, using a specific verb and resource. It distinguishes from sibling tools that handle other aspects like actions or general settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage but does not provide explicit guidance on when to use this tool versus alternatives like update_workflow_general, nor does it mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workflow_actionsA

Explicitly replace the full workflow actions array. This should be used only when the caller intends to send the final desired action list.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes
workflowIdYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It states 'replace the full workflow actions array', implying overwrite behavior, but does not discuss side effects, permissions, or error conditions. The description adds basic behavioral context but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no unnecessary words. Every sentence serves a purpose: stating the action and specifying when to use it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has two required parameters, no output schema, and no annotations, the description is minimal. It explains the core purpose but lacks details on parameter behavior, return values, or edge cases. It does not adequately compensate for the lack of structured information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description only mentions 'intends to send the final desired action list' without explaining the parameters 'workflowId' or the structure of 'actions'. The description does not compensate for the missing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Explicitly replace the full workflow actions array.' It identifies the specific verb 'replace' and the resource 'workflow actions array'. Among sibling tools like 'update_workflow_general' and 'update_workflow_start_conditions', this tool is uniquely for actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'This should be used only when the caller intends to send the final desired action list.' It does not mention when not to use or provide alternative tools, but the sibling list shows no other action-specific tool, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workflow_generalC

Explicitly update general workflow fields such as name, description, and clean build behavior.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
cleanNo
workflowIdYes
descriptionNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates mutation ('update') but does not disclose side effects, required permissions, or behavioral nuances (e.g., whether other fields are reset). With no annotations, the description carries full burden but provides minimal insight beyond the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and to the point. It could be slightly more structured but wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 4 parameters (one required), the description is too sparse. It lacks information on return values, error conditions, and dependencies, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions three of four parameters (name, description, clean) but omits the required workflowId. It does not explain what 'clean' means or any constraints. Partial but insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'update' and the resource 'workflow' with the qualifier 'general' fields, listing specific examples. It distinguishes from sibling tools like update_workflow_actions which update more specific fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., update_workflow_actions, update_workflow_start_conditions). The description does not mention prerequisites, limitations, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workflow_start_conditionsC

Explicitly update workflow start conditions. Pass null to remove a condition.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYes
tagStartConditionNo
branchStartConditionNo
manualTagStartConditionNo
scheduledStartConditionNo
pullRequestStartConditionNo
manualBranchStartConditionNo
manualPullRequestStartConditionNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals that passing null removes a condition, which is useful behavioral information. However, it fails to disclose other important behaviors such as whether conditions are additive, what happens on errors, or the need for specific permissions, especially given the absence of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two sentences and no fluff. It efficiently communicates the core action and a key detail (null removal). However, given the tool's complexity, it could benefit from slightly more structured detail without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema and no annotations, the description is woefully incomplete. It omits information about required condition object structures, the effect of combining conditions, and what the response indicates. The agent lacks enough context to use the tool reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain the meaning of any of the 8 parameters beyond the null removal behavior. With 0% schema description coverage, the agent must guess what each condition object represents (e.g., tag, branch, scheduled), which is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'update' and clearly identifies the resource as 'workflow start conditions'. It also distinguishes from sibling tools like update_workflow_actions and update_workflow_general by specifying a unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like update_workflow_general. It lacks context about prerequisites, use cases, or when not to use it, forcing the AI to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv0.5.3
    • First observedcleanup_saved_logs
    • First observedget_build_issues
    • First observedget_build_logs
    • First observedget_failed_tests
    • First observedget_test_artifacts
    • First observedget_test_results
    • First observedget_workflow_details
    • First observedlist_build_runs
    • First observedlist_products
    • First observedlist_workflows
    • First observedmaterialize_build_logs
    • First observedset_workflow_enabled
    • First observedupdate_workflow_actions
    • First observedupdate_workflow_general
    • First observedupdate_workflow_start_conditions

TDQS

B3.1/5.0
Disambiguation3/5

Several tools deal with builds, logs, and tests (get_build_logs, get_failed_tests, materialize_build_logs, etc.). While descriptions add some differentiation, there is overlap (e.g., get_build_logs and materialize_build_logs both save logs locally). Agents may struggle to pick the right tool for fine-grained needs.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (cleanup_, get_, list_, materialize_, set_, update_). Verbs are descriptive and nouns match the resource. No mixed conventions.

Tool Count5/5

15 tools is well-scoped for Xcode Cloud management. Each tool covers a distinct aspect (products, workflows, builds, logs, tests). Not too few to be trivial, not too many to overwhelm.

Completeness3/5

The set covers reading and updating workflows, fetching build/test details, and cleaning logs. Missing create/delete for workflows and products, and no tool to trigger builds. Some lifecycle operations are absent, which may leave gaps for automation.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/thatfactory/xcode-cloud-mcp'

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