Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ASC_KEY_IDNoApp Store Connect API key ID
ASC_ISSUER_IDNoApp Store Connect issuer ID
ASC_BYPASS_KEYCHAINNoSet to '1' to force env var auth instead of the macOS keychain
ASC_PRIVATE_KEY_B64NoBase64-encoded .p8 private key for App Store Connect
CODEMAGIC_API_TOKENYesYour Codemagic API token. Found in Codemagic → User settings → Integrations.
GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALSNoRaw JSON content of your Google Play service account key file (or @file: prefix)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
pingA

Check that the server is alive and return its version

list_applicationsA

List all applications in your Codemagic account. Call this first to get the app IDs needed by all other Codemagic tools.

list_teamsA

List teams the authenticated Codemagic account belongs to. Use the team IDs returned here with list_applications, list_builds, and other tools that accept an optional team_id.

list_workflowsA

List workflows for an application. Returns workflow names and IDs — use the ID in trigger_build to run a specific workflow. Note: yaml-defined workflows only appear after their first build has run.

list_buildsA

List builds for a team with optional filters. Returns build IDs and status. Use get_build with a build ID to retrieve full details and artifact download URLs.

get_buildA

Get full details for a single build including artifact download URLs. The build ID comes from trigger_build or list_builds. Artifact URLs require x-auth-token — use them with upload_to_testflight, upload_to_google_play, or create_public_artifact_url.

trigger_buildA

Trigger a new build on Codemagic. For release builds: determine BUILD_NUMBER first using list_asc_builds (iOS) or list_google_play_tracks (Android), then pass it in the variables parameter. Use yaml_content to supply an inline codemagic.yaml — get a starter template from get_yaml_template and validate it with validate_codemagic_yaml before triggering. Call wait_for_build with the returned build ID to wait for completion and retrieve artifact URLs.

wait_for_buildA

Check the current status of a Codemagic build. Returns immediately — no polling loop. If the build has not finished, call this tool again with the same build_id. A Codemagic build takes 10–40 minutes; calling this 20+ times is normal and expected. Returns full build details and artifact download URLs once a terminal state is reached.

cancel_buildA

Cancel a running or queued Codemagic build. Use when a triggered build is no longer needed — for example if the wrong branch was used or an error was found after triggering. Has no effect on builds that have already finished.

add_applicationA

Add a new application to Codemagic by connecting a Git repository. For HTTPS URLs: if you have connected your GitHub, GitLab, or Bitbucket account via Codemagic Settings → Integrations, private repositories are accessible with just the URL — no credentials needed. For SSH URLs (git@... or ssh://git@...): a fresh Ed25519 deploy key is generated automatically. The private key is stored directly in Codemagic and the public key is added to GitHub automatically if the gh CLI is installed and authenticated, or shown for manual setup otherwise. Note: after adding, the app shows 'Set up build' in the Codemagic UI — this is expected.

list_variable_groupsA

List variable groups for a team or app in Codemagic. Use group names to reference them in trigger_build. Secret values are never returned — manage secrets directly in the Codemagic UI.

list_variablesA

List variables in a Codemagic variable group. Returns variable IDs, names, and values. Secret variable values are returned as null — only non-secret values are visible. Use the variable IDs with update_variable and delete_variable.

create_variable_groupA

Create a new variable group in Codemagic. Requires a team_id (personal accounts do not support global variable groups) or an app_id for app-level groups. After creating, add non-secret variables via add_variable, or add secret values directly in the Codemagic UI.

add_variableA

Add a non-secret variable to a Codemagic variable group. For secret values (API keys, certificates, tokens) use the Codemagic UI instead — secrets should never pass through the agent.

update_variableA

Update the name or value of an existing non-secret variable in a Codemagic variable group. The variable_id comes from list_variable_groups. For secret values use the Codemagic UI — secrets should never pass through the agent.

delete_variableA

Delete a variable from a Codemagic variable group. The variable_id comes from list_variable_groups. This cannot be undone.

get_webhook_urlA

Get the incoming webhook URL for a Codemagic app. Paste this URL into your Git provider (GitHub, GitLab, or Bitbucket) repository settings to trigger builds automatically on push or pull request events.

list_webhooksA

List webhook subscriptions configured for a Codemagic app

delete_webhookB

Delete a webhook subscription from a Codemagic app

list_cachesA

List build caches for a Codemagic app. Each cache is scoped to a workflow. Use the cache IDs with delete_cache to free up storage or force a clean build.

delete_cacheA

Delete a build cache for a Codemagic app. If cache_id is provided, deletes that specific workflow cache. If omitted, deletes all caches for the app. Deletion is asynchronous — the API returns immediately and completes in the background.

create_public_artifact_urlA

Create a time-limited public download URL for a build artifact. Pass the artifact URL from get_build or wait_for_build. The returned URL is accessible without authentication — anyone with the link can download the artifact. Use for sharing IPAs or AABs with testers who don't have Codemagic access.

get_build_logsA

Fetch logs for a Codemagic build. By default returns logs for failed steps only — the primary use case is diagnosing why a build failed. Pass step_name to fetch logs for a specific step regardless of status (e.g. 'building_ios', 'testing', 'publishing'). Always returns the step list with statuses first.

list_asc_appsA

List apps in App Store Connect. Call this first to get the ASC app ID needed by all other App Store Connect tools.

list_asc_buildsC

List TestFlight builds for an app in App Store Connect. Find the highest version number, increment by 1, and pass that as BUILD_NUMBER in trigger_build variables before triggering a release build.

list_testflight_groupsA

List TestFlight beta groups for an app. Use a group name from this list in the beta_group parameter of upload_to_testflight to distribute to testers automatically after upload.

get_asc_review_statusA

Get the current App Store review status for an app. Call this after submitting to the App Store to monitor progress and check for blockers.

get_asc_release_statusA

Get a full release pipeline status dashboard for an app, including latest build, TestFlight, App Store version, and submission state

validate_app_submissionA

Run a preflight readiness check for an App Store version before submitting for review. Checks metadata completeness, build attachment, export compliance, pricing, screenshots, and more. Returns an ordered remediation plan — fix the first item, then call again to confirm it is resolved. Call this before publish_to_app_store with submit_for_review=true.

set_version_metadataA

Update App Store version localization metadata — What's New text, description, keywords, and more. What's New is required for every release before submitting for review. Call once per locale — en-US is the required default; add other locales if the app supports them. Use validate_app_submission afterward to confirm the update resolved the blocker.

set_export_complianceA

Set the export compliance declaration for an iOS build. Required before App Store submission and for TestFlight external distribution. Most apps only use standard HTTPS/TLS — set uses_non_exempt_encryption to false. Only set it to true if the app implements custom or proprietary encryption beyond standard protocols. Defaults to the latest build for the app; pass build_id to target a specific build.

release_versionA

Release an App Store version that has been approved and is waiting in 'Pending Developer Release' state. This immediately makes the update available to all users (or starts the phased rollout if one was configured). Use set_phased_release with action=create before submission if you want a gradual rollout instead of an instant release.

set_phased_releaseA

Manage a phased rollout for an App Store version. Phased rollout gradually releases the update over 7 days: 1% → 2% → 5% → 10% → 20% → 50% → 100%. Actions: 'create' — configure phased rollout before submitting for review. 'pause' — pause an in-progress rollout (use if a critical bug is found after release). 'resume' — resume a paused rollout. 'complete' — immediately release to all remaining users.

submit_beta_reviewA

Submit a build for TestFlight beta app review. Required before external beta groups can install the build — Apple reviews it once, then all external groups can access it. Internal groups (Apple employees / org members) do not require beta review. Get the build ID from list_asc_builds.

add_testflight_testerA

Add a tester to TestFlight by email address. Optionally assign them to a specific beta group — use list_testflight_groups to get group names. The tester receives an invitation email from Apple.

create_testflight_groupA

Create a new TestFlight beta group for an app. External groups require beta app review before testers can install builds. Internal groups (Apple org members) do not require review — useful for fast internal QA.

upload_to_testflightB

Download an IPA artifact from Codemagic and upload it to TestFlight via App Store Connect. Optionally distribute to a beta group after upload.

upload_build_to_ascA

Download an IPA from a Codemagic artifact URL and upload it to App Store Connect. Returns immediately once the upload commits — does NOT wait for Apple's processing pipeline. After calling this, poll list_asc_builds until the build's processingState is VALID, then call submit_for_app_store_review with the build ID.

submit_for_app_store_reviewA

Attach a processed build to an App Store version and submit it for review. The build must have processingState VALID — confirm with list_asc_builds before calling. Requires version metadata (What's New) and export compliance to be set first. Use validate_app_submission to catch blockers before submitting.

get_ios_store_listingA

Pull the current App Store listing text for all locales of an app version. Returns app-info fields (name, subtitle, privacy URLs) and version fields (description, keywords, promotional text, support URL, what's new) grouped by locale. Use before set_ios_store_listing to review what is currently live.

set_ios_store_listingA

Update App Store listing text for a single locale. Only the fields you provide are changed — omitted fields are left as-is. App-info fields (name, subtitle) apply to all versions of the app. Version fields (description, keywords, whatsNew, etc.) apply to the specified version only. Changes are staged through the asc CLI and validated before being applied.

list_ios_screenshot_typesA

List the supported screenshot device types for the App Store and their required pixel dimensions. By default returns the two most-required types: IPHONE_65 and IPAD_PRO_3GEN_129. Pass all=true to get the full matrix of all supported device types. Use the deviceType values returned here as the device_type parameter for upload_ios_screenshots.

upload_ios_screenshotsA

Download screenshot images from URLs and upload them to App Store Connect for a specific device type and locale. Apple allows up to 10 screenshots per set. Supported formats: PNG (no alpha) and JPEG. Max 10 MB per file. Call list_ios_screenshot_types first to get valid device_type values and required dimensions. Set replace=true to delete existing screenshots before uploading (recommended when refreshing a set).

list_google_play_tracksB

List Google Play tracks (internal, alpha, beta, production) with current release info and version codes. Find the highest versionCode across all tracks, increment by 1, and pass that as BUILD_NUMBER in trigger_build variables before triggering a release build.

list_google_play_bundlesA

List all uploaded App Bundles (AAB) for an app on Google Play, with their version codes. Use this to audit what has already been uploaded before triggering a new build.

upload_to_google_playA

Download an AAB artifact from Codemagic and publish it to a Google Play track. Use the AAB artifact URL returned by wait_for_build. Start with the internal track — it is safest for first uploads and can be promoted to alpha/beta/production manually in the Play Console.

promote_google_play_releaseA

Promote a release between Google Play tracks (e.g. internal → alpha → beta → production) without re-uploading. Set user_fraction to enable staged rollout on the target track (0.1 = 10% of users). To halt an in-progress staged rollout: set source_track=target_track='production' and release_status='halted'. To resume a halted rollout: same tracks with release_status='inProgress' and a user_fraction.

set_rollout_fractionA

Adjust the staged rollout percentage for an existing release on a Google Play track. Use this to gradually expand a rollout (e.g. 10% → 25% → 50% → 100%). Requires the version code of the release currently in the staged rollout.

share_app_internallyA

Upload an AAB from Codemagic as a Google Play internal app sharing link. Returns an install URL that can be shared with testers instantly — no track, no review, no version code ceremony. Testers need the internal app sharing feature enabled on their device. Ideal for quick QA before promoting to a track.

get_latest_build_numberA

Get the highest versionCode currently on Google Play across all tracks (or specific tracks). Use this before triggering a release build to determine the next BUILD_NUMBER — increment the result by 1.

get_android_store_listingA

Fetch the current Google Play store listing for a specific language. Returns title, short description, and full description. Use before set_android_store_listing to review existing text.

set_android_store_listingA

Update the Google Play store listing for a specific language. Only the fields you provide are updated — omitted fields are left unchanged. Changes go live immediately on commit; there is no staging step on Google Play.

upload_android_screenshotsA

Download screenshot images from URLs and upload them to Google Play for a specific language and device type. Google allows up to 8 screenshots per device type. Supported formats: JPEG and 24-bit PNG (no alpha). Max 8 MB per file. Common image types: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots. Set replace=true to delete all existing screenshots of this type before uploading (recommended when refreshing a set). All uploads are committed atomically — if any upload fails, no changes go live.

list_google_play_reviewsA

List recent Google Play user reviews for an app. Only reviews that contain text are returned — star-only ratings are excluded by the API. Use max_star_rating to focus on negative reviews (e.g. max_star_rating=2 for 1–2 star reviews). Each review includes the review ID needed for reply_to_google_play_review. Reviews are ordered by last modified date, most recent first.

reply_to_google_play_reviewA

Post or update a developer reply to a Google Play user review. Replies are limited to 350 characters. If the review already has a developer reply, this call replaces it. Get the review_id from list_google_play_reviews. Write a personal, helpful reply — responding to negative reviews improves store ratings and user trust.

set_android_data_safetyA

Submit the data safety declaration for a Google Play app. The declaration describes what data the app collects, how it is used, and whether it is shared. Accepts the raw CSV exported from Play Console → App content → Data safety → Export CSV. Re-upload whenever data practices change (new data type, updated retention policy, etc.). Takes effect immediately — there is no staging step and no GET endpoint to retrieve current labels.

validate_codemagic_yamlA

Validate a codemagic.yaml file against the official Codemagic JSON schema

get_yaml_templateA

Get a starter codemagic.yaml template for a given project type. Templates cover build and signing only — publishing is handled separately via App Store Connect tools. Call list_yaml_template_types to see all valid project_type values. IMPORTANT: Android templates use linux_x2 by default (cheaper, no Mac needed). Personal accounts (no team) cannot use linux_x2 — replace it with mac_mini_m2 for personal accounts.

list_yaml_template_typesA

List all available codemagic.yaml template types

detect_project_typeA

Detect the Codemagic project type from a repository file listing. Returns the recommended template type, confidence level, and the suggested debug template to use for initial onboarding. For JavaScript/TypeScript projects, providing package.json content significantly improves accuracy.

prepare_release_notesA

Validate localized release notes before submitting to the App Store or Google Play. Checks that each locale is a valid BCP-47 code (e.g. en-US, fr-FR, zh-Hans) and that text fits within platform char limits (Android: 500, iOS: 4000). Pass platform='both' to validate against the stricter Android limit for notes that will go to both stores.

check_publish_readinessA

Aggregate publish-readiness checks for iOS or Android into a single pass/fail report. API-verifiable checks (valid build, store listing completeness, binary validation) run live. Items that have no API (age rating, privacy labels, content policy, legal agreements) are always listed as 'human required' so nothing is silently skipped. Each item is tagged as 'agent can fix' or 'human required', giving a clear action plan. Call this before submit_for_app_store_review (iOS) or promoting to production (Android). Use first_publish_ios or first_publish_android prompts for the one-time account/app-record setup.

get_test_resultsA

Fetch and parse test results from a Codemagic build. Searches the build's artifact list for JUnit XML files and returns a structured pass/fail/error/skip summary with per-failure details (message + stack trace excerpt). Covers Flutter, Android instrumented tests, and iOS (xcresult converted by Codemagic's CLI tools). Pass artifact_url directly if you already have it from wait_for_build — skips the artifact search. The build must be in a terminal state (finished or failed) for artifacts to be available. Requires the codemagic.yaml workflow to include a test_report glob pointing at the JUnit XML output.

Prompts

Interactive templates invoked by user choice

NameDescription
onboardingStep-by-step guide to connect a repository to Codemagic and trigger a first debug build
android_releaseStep-by-step guide to build a signed Android AAB on Codemagic and publish it to Google Play
ios_releaseStep-by-step guide to build a signed iOS IPA on Codemagic and upload it to the App Store
first_publish_iosOne-time setup checklist for first-time iOS App Store publishers — walks through the UI steps the agent cannot do (Apple Developer enrollment, app record creation, age rating, privacy labels), then hands off to /ios_release
first_publish_androidOne-time setup checklist for first-time Google Play publishers — walks through the UI steps the agent cannot do (account creation, content rating, closed testing period), then hands off to /android_release

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/todah-zg/codemagic-mcp'

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