Skip to main content
Glama

codemagic-mcp

An MCP (Model Context Protocol) server that gives AI agents a unified surface over Codemagic CI/CD and App Store Connect / Google Play, enabling a complete mobile app delivery pipeline — from onboarding a repository through building, signing, and publishing — driven by conversation.

codemagic-mcp MCP server

codemagic-mcp MCP server

What it does

The server exposes tools across five domains:

  • Codemagic — list teams and apps, trigger builds, wait for results, retrieve artifacts, fetch build logs, manage variable groups, caches, and webhooks

  • App Store Connect — manage TestFlight, upload and submit builds, set listing text and screenshots, validate, submit, and release to the App Store

  • Google Play — publish AABs, promote releases, manage staged rollouts, set listing text and screenshots, read and reply to user reviews

  • Testing — parse JUnit XML test results from any Codemagic build; get a pass/fail/error/skip summary with per-failure details

  • Cross-store — validate localized release notes against platform char limits and BCP-47 locale codes

The intended end-to-end flows are:

iOS: list_asc_buildsget_yaml_templatetrigger_buildwait_for_buildupload_build_to_ascset_version_metadatavalidate_app_submissionsubmit_for_app_store_reviewrelease_version

Android: get_latest_build_numberget_yaml_templatetrigger_buildwait_for_buildupload_to_google_playpromote_google_play_release

Related MCP server: Codemagic

Prerequisites

  • Node.js 20 or 22 (LTS)

  • asc CLIasccli.sh — required for App Store Connect tools

  • google-play CLI — part of codemagic-cli-tools — required for Google Play tools

    pip install codemagic-cli-tools

Environment variables

Required

Variable

Description

CODEMAGIC_API_TOKEN

Your Codemagic API token. Found in Codemagic → Account settings.

App Store Connect tools (iOS)

Variable

Description

ASC_KEY_ID

App Store Connect API key ID

ASC_ISSUER_ID

App Store Connect issuer ID

ASC_PRIVATE_KEY_B64

Base64-encoded .p8 private key (base64 -i AuthKey_XXXX.p8)

ASC_BYPASS_KEYCHAIN

Set to 1 to force env var auth instead of the macOS keychain

Google Play tools (Android)

Variable

Description

GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS

Raw JSON content of your Google Play service account key file

For the Google Play credentials you can use the @file: prefix to avoid pasting JSON inline:

GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS=@file:/path/to/service-account.json

Installation

No installation needed. Add the server to your MCP client config with npx and it downloads and runs automatically:

"command": "npx",
"args": ["-y", "codemagic-mcp-server"]

See the Claude Desktop section below for the full config.

Global install

If you prefer a permanent install instead of npx:

npm install -g codemagic-mcp-server

Then use codemagic-mcp as the command in your MCP client config:

"command": "codemagic-mcp",
"args": []

Development

To build from source:

git clone https://github.com/todah-zg/codemagic-mcp.git
cd codemagic-mcp
npm install
npm run build

Then use the local path in your MCP config — see Running from a local clone below.

Running

MCP Inspector (development / testing)

Set the required environment variables in your shell, then:

npx @modelcontextprotocol/inspector node dist/index.js

Claude Desktop

Add to your claude_desktop_config.json:

If installed from npm

{
  "mcpServers": {
    "codemagic": {
      "command": "npx",
      "args": ["-y", "codemagic-mcp-server"],
      "env": {
        "CODEMAGIC_API_TOKEN": "your-token",
        "ASC_KEY_ID": "your-key-id",
        "ASC_ISSUER_ID": "your-issuer-id",
        "ASC_PRIVATE_KEY_B64": "base64-encoded-p8-key",
        "ASC_BYPASS_KEYCHAIN": "1",
        "GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS": "@file:/path/to/service-account.json"
      }
    }
  }
}

If running from a local clone (development):

{
  "mcpServers": {
    "codemagic": {
      "command": "node",
      "args": ["/absolute/path/to/codemagic-mcp-server/dist/index.js"],
      "env": {
        "CODEMAGIC_API_TOKEN": "your-token",
        "ASC_KEY_ID": "your-key-id",
        "ASC_ISSUER_ID": "your-issuer-id",
        "ASC_PRIVATE_KEY_B64": "base64-encoded-p8-key",
        "ASC_BYPASS_KEYCHAIN": "1",
        "GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS": "@file:/path/to/service-account.json"
      }
    }
  }
}

The config file is at:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Using with Claude Desktop

Connecting the server

To verify the server is connected, open a new conversation and ask: "ping the codemagic mcp server". If connected, Claude will call the ping tool and respond with "Codemagic MCP server is running." If not connected, check that the path in args is correct and that all required environment variables are set, then restart Claude Desktop with Cmd+Q (not just closing the window).

If the server does not appear, check that the CODEMAGIC_API_TOKEN environment variable is set correctly in the config and that the path to dist/index.js is absolute and correct.

Workflow prompts

Once connected, type / in the Claude Desktop input field to open the command picker. You will see five workflow prompts from this server:

Prompt

When to use

/onboarding

Starting from scratch — connect a repo, get a first build passing

/android_release

Build a signed AAB and publish it to Google Play

/ios_release

Build a signed IPA and upload it to TestFlight

/first_publish_ios

One-time setup for first-time iOS App Store publishers — Apple Developer enrollment, app record, age rating, privacy labels

/first_publish_android

One-time setup for first-time Google Play publishers — Play account, content rating, closed testing period

Select a prompt and Claude will receive a step-by-step playbook and begin executing the workflow using the available tools.

Example conversations

You can also describe what you want in plain language — Claude will select the right tools automatically:

"I have a Flutter app at github.com/example/myapp. Set it up on Codemagic and get a first build running."

"Trigger a release build for my Android app, version 2.1.0. The last build number on Google Play was 41."

"What is the current App Store review status for my iOS app?"

Config file location

Platform

Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Tools

Codemagic

Tool

Description

ping

Check that the server is running

list_teams

List teams the authenticated account belongs to

list_applications

List apps in your Codemagic account or team

list_workflows

List workflows for an app

list_builds

List builds with optional filters (app, status, branch, workflow)

get_build

Get full details for a single build including artifacts

get_build_logs

Fetch per-step log text for a build — by default returns failed steps only

trigger_build

Trigger a build; optionally supply an inline codemagic.yaml or override instance_type

wait_for_build

Single-check tool — returns status immediately; call again until terminal state

cancel_build

Cancel a running or queued build

add_application

Connect a Git repository to Codemagic; auto-generates SSH deploy keys for SSH URLs

get_webhook_url

Get the incoming webhook URL to paste into your Git provider settings

list_webhooks

List webhook subscriptions configured for an app

delete_webhook

Delete a webhook subscription from an app

list_caches

List build caches for an app

delete_cache

Delete all caches or a specific cache by ID

create_public_artifact_url

Create a time-limited public download URL for a build artifact

App Store Connect (iOS)

Tool

Description

list_asc_apps

List apps in App Store Connect

list_asc_builds

List TestFlight builds for an app

list_testflight_groups

List TestFlight beta groups

get_asc_review_status

Get the App Store review state for an app

get_asc_release_status

Full release pipeline dashboard (builds, TestFlight, App Store)

upload_to_testflight

Download an IPA from Codemagic and upload to TestFlight

submit_beta_review

Submit a TestFlight build for external beta review (required before external groups)

add_testflight_tester

Add a tester by email to TestFlight, optionally to a group

create_testflight_group

Create an internal or external TestFlight beta group

set_export_compliance

Declare encryption usage for a build (required before App Store submission)

set_version_metadata

Set "What's New" text and other per-locale metadata for an App Store version

validate_app_submission

Preflight check — returns an ordered list of blockers before submission

upload_build_to_asc

Upload an IPA to App Store Connect (fast, non-blocking); poll list_asc_builds until VALID

submit_for_app_store_review

Attach a processed build to a version and submit for App Store review

release_version

Release an approved App Store version immediately

set_phased_release

Create, pause, resume, or complete a phased rollout

get_ios_store_listing

Pull current App Store listing text for all locales (name, description, keywords, etc.)

set_ios_store_listing

Update App Store listing text for a locale — only provided fields are changed

list_ios_screenshot_types

List supported screenshot device types and their required pixel dimensions

upload_ios_screenshots

Download screenshots from URLs and upload to App Store Connect for a device type and locale

Google Play (Android)

Tool

Description

list_google_play_tracks

List tracks (internal, alpha, beta, production) with release info

list_google_play_bundles

List uploaded AABs by version code

upload_to_google_play

Download an AAB from Codemagic and publish to a Google Play track

get_latest_build_number

Get the highest version code across all (or specified) tracks

promote_google_play_release

Promote a release between tracks (internal → alpha → beta → production)

set_rollout_fraction

Expand, halt, or resume a staged rollout by setting the user fraction

share_app_internally

Upload an AAB to Internal App Sharing for instant QA install links

get_android_store_listing

Fetch current Google Play store listing for a language (title, descriptions)

set_android_store_listing

Update Google Play store listing for a language — only provided fields are changed

upload_android_screenshots

Download screenshots from URLs and upload to Google Play for a language and device type

set_android_data_safety

Submit the data safety declaration CSV (exported from Play Console) — re-upload when data practices change

list_google_play_reviews

List recent user reviews with optional star rating filter (e.g. 1–2 stars only); includes developer reply status and review IDs

reply_to_google_play_review

Post or update a developer reply to a user review (max 350 characters)

Testing

Tool

Description

get_test_results

Fetch and parse JUnit XML test results from a Codemagic build — returns a pass/fail/error/skip summary with per-failure details and stack trace excerpts. Covers Flutter, Android instrumented tests, and iOS (via xcresult conversion). Pass artifact_url directly if you already have it from wait_for_build.

Cross-store

Tool

Description

prepare_release_notes

Validate localized release notes — checks BCP-47 locale codes and char limits (Android: 500, iOS: 4000)

check_publish_readiness

Aggregate publish-readiness checks for iOS or Android. API-verifiable items (valid build, listing completeness, binary validation) run live; items with no API (age rating, privacy labels, legal agreements) are always listed as human-required. Each item is tagged as 'agent can fix' or 'human required'.

Variable Groups

Tool

Description

list_variable_groups

List variable groups for a team or app

create_variable_group

Create a new variable group (team or app scoped)

add_variable

Add a non-secret variable to a group

list_variables

List variables in a group (required to get IDs before updating or deleting)

update_variable

Update the name or value of a variable by ID

delete_variable

Delete a variable from a group by ID

YAML

Tool

Description

validate_codemagic_yaml

Validate a codemagic.yaml against the official Codemagic JSON schema

get_yaml_template

Get a starter codemagic.yaml for android, ios, flutter, flutter-native, react-native, ionic-capacitor, ionic-cordova, kmm, snap, unity, unity-oculus, dotnet-maui, ios-screenshots, android-screenshots, flutter-screenshots — plus android-debug, flutter-android-debug, react-native-android-debug for initial onboarding

list_yaml_template_types

List all supported project types for get_yaml_template

detect_project_type

Detect the project type from a repository file listing — returns the recommended template and debug template to start with

Prompts

Prompt

Description

onboarding

Zero to first debug build — add repo, get template, trigger build, configure webhook

android_release

Signed AAB from build to Google Play — build number, template, trigger, publish, promote

ios_release

Signed IPA from build to App Store — build number, template, trigger, TestFlight, metadata, validate, submit, release

first_publish_ios

One-time setup checklist for first-time iOS publishers — Apple Developer enrollment, app record, age rating, privacy labels, then hands off to /ios_release

first_publish_android

One-time setup checklist for first-time Android publishers — Play account, content rating, closed testing period, then hands off to /android_release

Prompts are reusable workflow playbooks. In Claude Desktop they appear as slash commands. An agent can also invoke them by name to get step-by-step instructions for a complete workflow.

Project structure

src/
  index.ts              — Server setup, env validation, transport
  codemagic.ts          — Codemagic API functions (v3 + v1)
  asc.ts                — App Store Connect CLI wrapper
  googleplay.ts         — Google Play CLI wrapper
  androidpublisher.ts   — Google Play androidpublisher REST API client (listings, screenshots, reviews)
  testing.ts            — JUnit XML parser (no external dependencies)
  ssh.ts                — SSH key generation and deploy key setup
  yaml.ts               — YAML validation logic
  templates.ts          — Static codemagic.yaml templates
  detection.ts          — Project type detection from repository file listings
  prompts.ts            — MCP prompt resources (workflow playbooks)
  tools/
    codemagic.ts        — Codemagic MCP tool registrations
    asc.ts              — App Store Connect MCP tool registrations
    googleplay.ts       — Google Play MCP tool registrations
    yaml.ts             — YAML MCP tool registrations
    releasenotes.ts     — Release notes validation tool
    readiness.ts        — Publish readiness check tool
    testing.ts          — Test results tool

The src/ modules contain pure functions (API calls, CLI wrappers) with no MCP dependency. The src/tools/ modules wire those functions up as MCP tools — input schemas, formatting, error responses.

Notes

  • Inline YAML: trigger_build accepts an optional yaml_content parameter. When provided, the YAML is uploaded alongside the build request and does not need to exist in the repository. Useful for agent-generated configurations.

  • Build numbers: Templates use $BUILD_NUMBER and $VERSION_NAME as plain variables — no store lookups happen inside the YAML. The agent determines the correct values via list_asc_builds or list_google_play_tracks before triggering, then passes them through the variables parameter of trigger_build.

  • Signing: iOS signing happens on the Codemagic build machine (macOS + keychain). The MCP server never handles signing identities directly.

  • Team vs. personal account: list_applications and list_builds accept an optional team_id. Without it, they operate on the authenticated user's personal account.

  • Variable groups and secrets: add_variable only creates non-secret variables. Secret values (API keys, certificates, tokens) should be added directly in the Codemagic UI — secrets should never pass through the agent. Once set up, reference groups by name in trigger_build via the groups parameter.

Available Tools

63 tools
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
repository_urlYesSSH or HTTPS URL of the Git repository
team_idNoTeam ID to add the app to

TDQS

A4.3/5.0
Behavior4/5

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

The description explains non-destructive behavior (adding an app) and the expected post-add state ('Set up build' shown). Annotations are minimal, and the description adds useful behavioral context without contradiction.

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 paragraph that front-loads the purpose. It is slightly verbose but every sentence provides useful information. Could be more concise, but structure is good.

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?

Given 2 parameters, no output schema, and minimal annotations, the description covers parameter semantics and post-add expectations. It is complete enough for an agent to use correctly.

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?

Schema coverage is 100%, so baseline is 3. The description adds significant meaning to 'repository_url' by detailing HTTPS vs SSH behaviors. It does not expand on 'team_id' but the added value for the key parameter warrants a 4.

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 explicitly states 'Add a new application to Codemagic by connecting a Git repository,' clearly specifying the action (add) and resource (application). It distinguishes from sibling tools like 'list_applications' or 'trigger_build'.

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 guidance on when to use HTTPS vs SSH URLs and mentions prerequisites (connected account for private HTTPS repos). It does not explicitly state when not to use the tool or name alternatives, but the context is clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
emailYesTester email address
groupNoBeta group name or ID to add the tester to (from list_testflight_groups)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate it's not read-only or destructive. The description adds that the tester receives an invitation email from Apple, disclosing a side effect beyond the basic mutation. No contradictions with annotations.

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-load the core purpose and immediately follow with optional usage and side effects. No wasted words.

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?

The description covers purpose, optional usage, and an important side effect. However, it does not specify the return value or behavior (e.g., if the tester already exists). Given no output schema, a brief note on expected response would improve completeness.

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?

Schema has 100% coverage with descriptions. The description adds value by linking app_id to list_asc_apps and group to list_testflight_groups, aiding in correct parameter selection beyond the schema.

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 (add), the resource (tester to TestFlight), and method (by email). It distinguishes from siblings like create_testflight_group by focusing on adding a tester to an existing group rather than creating groups.

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 advises using list_testflight_groups to get group names, providing concrete context for when the optional group parameter is needed. It does not explicitly state when not to use this tool but offers sufficient guidance for proper invocation.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe variable group ID to add the variable to
nameYesVariable name, e.g. FLUTTER_VERSION
valueYesVariable value

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate write operation (readOnlyHint: false) and non-destructive (destructiveHint: false). Description adds context about secrecy and that it's for non-secrets, aligning with annotations. Could mention if overwriting or error on duplicate name.

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 sentences, front-loaded with verb and resource, no unnecessary words.

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?

Covers main purpose, usage boundaries, and all required parameters. Does not specify behavior on duplicate variable name or if group doesn't exist, but for a simple add tool this is still sufficient.

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 has 100% coverage of parameters, so baseline is 3. Description does not add additional meaning beyond what the schema already provides.

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 'Add' and the resource 'non-secret variable to a variable group'. Explicitly distinguishes from adding secret variables, focusing on the appropriate use case.

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

Usage Guidelines5/5

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

Explicitly says when to use (non-secret variables) and when not to (secret values should use Codemagic UI). Provides clear guidance and safety warning.

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

cancel_buildA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idYesThe Codemagic build ID to cancel (from trigger_build or list_builds)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds that it has no effect on finished builds, providing additional behavioral nuance beyond the structured annotations.

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?

Three concise sentences with no wasted words. The primary purpose is front-loaded, and every sentence serves a clear purpose.

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

Completeness5/5

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

Given the single parameter and lack of output schema, the description fully covers what the tool does, when to use it, and where the parameter comes from. It is complete for the tool's complexity.

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?

The schema covers the build_id parameter with 100% coverage. The description adds value by stating the source of the ID (from trigger_build or list_builds), which aids in parameter selection.

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 (cancel) and resource (a running or queued Codemagic build). It distinguishes itself from sibling tools like trigger_build and get_build by focusing on cancellation.

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?

Provides specific scenarios (wrong branch, error after triggering) and mentions no effect on finished builds. While it doesn't explicitly name alternatives, the context is clear enough for an agent to decide when to use this tool.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesTarget platform
app_idNoApp Store Connect app ID — required for iOS (from list_asc_apps)
versionNoApp Store version string e.g. '1.2.0' — required for iOS
package_nameNoAndroid package name e.g. com.example.myapp — required for Android
languageNoBCP-47 language for listing check, Android only (default: en-US)

TDQS

A4.8/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavior: API-verifiable checks run live, items without API are listed as 'human required', and each item is tagged as 'agent can fix' or 'human required'. No hidden behaviors.

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 well-structured with front-loaded purpose, but slightly verbose. Each sentence adds value, but could be condensed slightly without losing clarity.

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?

Given no output schema, the description explains the return is a pass/fail report with action plan tags. It also references related tools (list_asc_apps). Missing exact output format but sufficient for typical use.

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

Parameters5/5

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

Schema coverage is 100% with descriptions. The description adds context (e.g., app_id from list_asc_apps, version example, language default) that goes beyond the schema, clarifying parameter usage.

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 states it aggregates publish-readiness checks for iOS or Android into a pass/fail report, distinguishing between API-verifiable and human-required items. This clearly defines the tool's specific function and differentiates it from sibling tools that may perform individual checks or actions.

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

Usage Guidelines5/5

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

Explicitly advises to call before 'submit_for_app_store_review' (iOS) or promoting to production (Android), and refers to first_publish_ios/android prompts for initial setup. This provides clear when-to-use and preconditions.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifact_urlYesThe artifact url from a build artifact (returned by get_build or wait_for_build)
expires_in_hoursNoHow many hours until the public URL expires (default: 24, max: practical limit is a few days)

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses that the returned URL is accessible without authentication, time-limited, and anyone with the link can download. This adds valuable security context.

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-load the purpose and required input, then add context on security and use case. Every sentence is valuable.

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?

While no output schema is present, the description implicitly indicates a URL is returned. The use case and input are well covered. Slight gap: no explicit mention of output structure.

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 coverage is 100%, so baseline is 3. The description adds context for artifact_url ('Pass the artifact URL...') but does not significantly enhance meaning beyond the schema. No further detail on expires_in_hours.

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 'Create a time-limited public download URL for a build artifact' and specifies the source of the artifact URL (get_build or wait_for_build). This distinguishes it from sibling tools.

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 explicitly tells when to use: pass the artifact URL from get_build or wait_for_build, and for sharing with testers without Codemagic access. It does not explicitly state when not to use, but the context is clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
nameYesDisplay name for the group e.g. 'External Beta Testers'
internalNoCreate an internal group (Apple org members only, no beta review required). Default: false (external group).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive. The description adds critical behavioral context: external groups require beta app review before testers can install, while internal groups skip review. This goes beyond what annotations provide.

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 sentences concisely deliver purpose and key behavior. The header immediately states the action, and the second sentence adds crucial operational nuance. No unnecessary words or redundancy.

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

Completeness5/5

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

For a simple creation tool with 3 basic parameters and no output schema, the description covers the essential context: what it does, the key distinction between internal/external, and the implication for testing workflow. No gaps remain.

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 coverage is 100% with detailed parameter descriptions. The tool description adds a note about review requirements that ties to the 'internal' parameter, but it mostly reinforces the schema definition. For app_id and name, no additional meaning is added.

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 starts with a specific verb+resource: 'Create a new TestFlight beta group for an app.' It clearly distinguishes from sibling tools like list_testflight_groups and add_testflight_tester, and explains the internal/external split, which further clarifies the tool's role.

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 context on when to use internal vs external groups (internal for fast QA without review, external requiring review). However, it does not explicitly mention when to avoid this tool or suggest alternatives (e.g., adding testers), leaving some guidance implicit.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the variable group
team_idNoTeam ID to create the group under
app_idNoApp ID to create the group under

TDQS

A4.4/5.0
Behavior3/5

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

Annotations indicate non-readonly and non-destructive, which matches the creation action. The description adds scoping constraints but no details on permissions, error states, or side effects.

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 only two sentences, both essential: the first states purpose and prerequisites, the second gives post-creation guidance. No redundant or missing words.

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 creation tool with no output schema, the description covers the main scenario and next steps. It lacks details on validation behavior (e.g., if both team_id and app_id are provided) but is largely adequate.

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?

The schema has 100% coverage for parameter descriptions. The description adds value by explaining the purpose of team_id vs app_id and the limitation for personal accounts, helping the agent choose correctly.

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 creates a new variable group in Codemagic, specifying team-level vs app-level groups. It distinguishes from sibling tools like add_variable, which adds variables to existing groups.

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

Usage Guidelines5/5

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

The description provides explicit guidance on required parameters (team_id or app_id) and when each is appropriate (personal accounts cannot use team_id for global groups). It also directs the agent to use add_variable for non-secret variables after creation.

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

delete_cacheA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe Codemagic app ID
cache_idNoSpecific cache ID to delete (from list_caches). If omitted, all caches are deleted.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds important behavioral context: 'Deletion is asynchronous — the API returns immediately and completes in the background.' This goes beyond what annotations provide.

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 with no wasted words. Front-loaded with the action and resource, efficiently covering both modes and async behavior.

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

Completeness5/5

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

Given no output schema, the description covers the key behavioral aspect (async deletion) and parameter behavior. It is complete for a delete tool with two parameters.

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 coverage is 100% with both parameters documented. The description provides no additional meaning beyond the schema, except reinforcing the behavior for cache_id. Baseline 3 is appropriate as the schema already handles parameter semantics.

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 it deletes a build cache for a Codemagic app, and differentiates between deleting a specific cache (with cache_id) or all caches (when omitted). This distinguishes it from sibling tools like delete_variable or delete_webhook.

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 explains the two usage modes (specific cache vs all caches) but does not explicitly state when to use this tool versus alternatives or provide any when-not guidance. Usage is implied by the parameter behavior.

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

delete_variableA
Destructive

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

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe variable group ID
variable_idYesThe variable ID to delete (from list_variable_groups)

TDQS

A4.7/5.0
Behavior5/5

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

The description adds value beyond annotations by stating 'This cannot be undone', reinforcing the destructiveHint=true annotation. It also explains the source of the variable_id. No contradictions.

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 sentences, no redundant information, front-loaded with purpose. Every sentence is earned.

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

Completeness5/5

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

Given the tool's simplicity (two required parameters, destructive, no output schema), the description is complete. It covers purpose, parameter sourcing, and irreversibility, which is sufficient for correct agent invocation.

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?

Schema coverage is 100%, so baseline is 3. The description adds meaning by indicating that variable_id is obtained from list_variable_groups, which provides sourcing context beyond the schema's description of 'The variable ID to delete'.

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 'Delete a variable from a Codemagic variable group' and identifies the resource (variable within a group). It distinguishes from sibling tools like list_variables or add_variable by specifying the verb 'Delete' and the context of variable groups.

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 a clear usage context by noting that the variable_id comes from list_variable_groups, implying a prerequisite. However, it does not explicitly state when to use this tool versus alternatives or when not to use it, which would have earned a 5.

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

delete_webhookB
Destructive

Delete a webhook subscription from a Codemagic app

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe Codemagic app ID
webhook_idYesThe webhook ID to delete (from list_webhooks)

TDQS

B3.2/5.0
Behavior2/5

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

The description aligns with the destructiveHint annotation but adds no additional behavioral context beyond the annotation. It does not disclose irreversibility, immediate effects, or any side effects, which would be valuable for a destructive 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 concise, using a single sentence that is front-loaded with the key action. It is efficient but could include a bit more detail without becoming verbose.

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 destructive tool with 2 parameters and no output schema, the description is somewhat complete. However, it lacks caveats about irreversibility or permission requirements, leaving some gaps.

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 coverage is 100% with both parameters having descriptions. The description adds no extra semantic value beyond what the schema provides, so baseline score of 3 is appropriate.

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 (Delete), the resource (webhook subscription), and the context (from a Codemagic app). It is specific and distinct from sibling tools like list_webhooks.

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, nor does it mention prerequisites such as listing webhooks first to obtain the webhook_id. The schema description for webhook_id references list_webhooks, but the description itself lacks usage context.

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

detect_project_typeA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathsYesFile paths in the repository relative to the root. Include at least two directory levels for best results.
package_json_contentNoContent of package.json if present — used to detect React Native vs Ionic by inspecting dependencies

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so description doesn't need to state safety. It adds value by describing return values and a usage tip, which goes beyond annotations.

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 effective sentences, front-loaded with purpose, no wasted words.

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

Completeness5/5

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

No output schema, but description lists return fields. Parameter usage is clear with actionable advice. Tool is simple and fully explained.

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?

Schema covers both parameters with descriptions (100% coverage). Description adds practical guidance: file_paths should include at least two directory levels, and package_json_content helps detect React Native vs Ionic.

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 it detects Codemagic project type from repository file listing, specifies return values (template type, confidence, debug template), and no sibling tool duplicates this functionality.

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?

Explicitly notes that providing package.json content improves accuracy for JS/TS projects, giving a clear when-to-use hint for that parameter. No explicit when-not, but no alternative tools exist, so context is clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
languageNoBCP-47 language tag e.g. en-US, fr-FRen-US

TDQS

A4/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. 'Fetch' implies read-only operation, but doesn't explicitly state no side effects or authentication requirements. 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.

Conciseness5/5

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

Two sentences: first states purpose and returns, second gives usage guideline. Extremely concise and front-loaded with essential 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?

No output schema, but description details return fields (title, short description, full description). Simple fetch operation, sufficiently complete for its complexity.

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 coverage is 100% (both parameters described in schema). Description adds no additional meaning beyond schema for package_name and language. Baseline 3.

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 'Fetch the current Google Play store listing' and specifies returned fields (title, short description, full description). Distinguishes from iOS counterpart and sibling set tool.

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?

Explicitly says 'Use before set_android_store_listing to review existing text.' Provides clear context for when to use, though no explicit exclusion of alternatives.

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

get_asc_release_statusA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must fully convey behavior. It indicates a read operation ('Get') and what data is included, which is sufficient for a non-destructive tool. However, it does not disclose potential side effects, authentication requirements, rate limits, or response structure, leaving gaps for an AI agent.

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, front-loaded sentence that efficiently conveys the tool's purpose and scope. Every word adds value, and no extraneous information is present.

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?

Despite lacking an output schema, the description provides a good overview of what the dashboard includes (build, TestFlight, App Store version, submission state). It is reasonably complete for a read-only tool, though it could mention error handling or format. The description is clear enough for most use cases.

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?

The input schema covers the sole parameter app_id with a description, achieving 100% coverage. The description adds no further parameter details beyond the schema, so it meets the baseline of 3 without adding extra value.

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 a specific verb 'Get' and clearly identifies the resource as 'full release pipeline status dashboard for an app'. It lists concrete components (latest build, TestFlight, App Store version, submission state) which distinguishes it from siblings like get_asc_review_status that focus on a single aspect.

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 use for obtaining a comprehensive release status, but it does not explicitly state when to use this tool over siblings (e.g., get_asc_review_status, get_build) nor provide exclusions or context about prerequisites. The guidance is reasonable but not explicit.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID

TDQS

A3.8/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 full burden. The description implies a read operation ('Get'), but does not explicitly state safety, idempotency, or any constraints such as required permissions or rate limits. For a simple get operation, this is minimally adequate.

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 extremely concise with two sentences. No unnecessary words. Every sentence adds value: first states purpose, second provides usage guidance.

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 get status tool with one parameter, the description is largely complete. No output schema exists, but the description says it returns 'status' implicitly. It does not describe the format of the response or possible values, but the tool's purpose is straightforward.

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 100% (app_id is described in the schema). The description does not add any parameter semantics beyond what the schema already provides. Baseline 3 is appropriate.

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?

Clearly states the tool gets the current App Store review status for an app. The verb 'get' and resource 'App Store review status' are specific. Does not explicitly distinguish from sibling tool 'get_asc_release_status', but the name and description imply a difference.

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?

Provides explicit context: 'Call this after submitting to the App Store to monitor progress and check for blockers.' This tells the agent when to use the tool. No exclusions or alternatives mentioned, but the usage context is clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idYesThe build ID

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. While it mentions auth token requirements for artifact URLs, it does not state whether the operation is read-only, has side effects, or any other safety information. The read-only nature is implied but not explicitly stated, which is a 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?

Two sentences, front-loaded with the core purpose, followed by essential context. No wasted 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 tool with one parameter and no output schema, the description is adequate but lacks specifics on the return structure beyond 'full details'. It covers the key points but could be more complete about what exactly is returned.

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?

The description adds value beyond the schema by specifying that the build_id comes from trigger_build or list_builds, giving the agent source context. Although the schema has 100% coverage, the description's additional guidance compensates for the schema's minimal description.

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 'Get full details for a single build including artifact download URLs', which is a specific verb-resource pair. It distinguishes itself from sibling tools like list_builds and get_build_logs by focusing on a single build with full details and download URLs.

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 tells the agent when to use this tool: after trigger_build or list_builds, and how to use the results (artifact URLs with specific tools). It provides clear context for proper invocation, though it does not explicitly mention when not to use it or alternatives.

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

get_build_logsA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idYesThe Codemagic build ID
step_nameNoFetch logs for this specific step name only. If omitted, logs are fetched for failed steps (or none if the build succeeded).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, which the description matches. It adds behavioral details: 'by default returns logs for failed steps only' and 'Always returns the step list with statuses first', informing the agent about the response structure beyond what annotations provide.

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?

Three sentences, each earning its place: first states purpose, second explains default behavior and use case, third covers the optional parameter and return format. No unnecessary words.

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?

Given no output schema and low complexity, the description adequately covers return behavior (step list first) and the two scenarios. It is complete enough for an agent to understand what the tool does and when to use it, though more explicit output structure details could improve it.

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 coverage is 100% and both parameters are well-described in the schema. The description adds minimal extra meaning: it restates the schema's explanation for step_name very closely. Baseline 3 is appropriate.

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 starts with 'Fetch logs for a Codemagic build', clearly stating the verb and resource. It distinguishes from siblings like 'get_build' and 'get_test_results' by focusing on logs and specifying the default scope (failed steps).

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 explicitly states the primary use case ('diagnosing why a build failed') and explains how to fetch logs for a specific step using step_name. While it doesn't mention when not to use it or list alternatives, the context is sufficiently clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'

TDQS

A4.2/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 is non-destructive and read-only, but no other behavioral traits are disclosed. Adequate but not detailed.

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 sentences, front-loaded with purpose and returns, followed by usage guidance. No redundant 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?

Covers purpose, parameters, return structure, and usage context. Could mention return format more, but sufficient for a simple read 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?

Schema coverage is 100% with clear descriptions for both parameters. The description adds value by explaining the return structure and grouping by locale.

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 it pulls the current App Store listing text for all locales of an app version, listing specific fields returned. This distinguishes it from sibling tools like set_ios_store_listing.

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?

Explicitly advises using this tool before set_ios_store_listing to review live data, providing clear context for its use.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
tracksNoComma-separated track names to check e.g. 'production,beta'. Defaults to all tracks.

TDQS

A4.4/5.0
Behavior5/5

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

Despite no annotations, the description clearly indicates a read-only operation (get) with no destructive actions, fully disclosing its behavior.

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 succinct sentences with no filler; each sentence adds essential 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?

While the tool simplicity is covered, the description does not explicitly state the return value format (e.g., integer). Otherwise complete.

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 coverage is 100% and the description adds no new meaning beyond the schema's parameter descriptions. Baseline 3 is appropriate.

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 retrieves the highest versionCode from Google Play, distinguishing it from siblings like 'get_build' or 'list_google_play_bundles'.

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?

Explicitly advises using it before a release build to determine the next BUILD_NUMBER by incrementing the result. Could mention alternatives but the context is clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idYesCodemagic build ID
artifact_urlNoDirect URL to a JUnit XML artifact — if provided, skips artifact search. Use the short_lived_download_url from get_build or wait_for_build.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses build must be terminal, artifact search behavior, skip logic with artifact_url, output summary structure (pass/fail/error/skip with failure details), and prerequisite of test_report glob. Lacks mention of error handling if no JUnit found, but broadly informative.

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 paragraph of 5 sentences, front-loaded with main action. No wasted words, but could be more structured with line breaks for readability. Efficient but not maximally structured.

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?

Given complexity (no output schema), description covers input requirements, behavioral constraints (terminal state), output summary, platform scope, and prerequisite. Lacks details on exact output format or error cases, but is comprehensive enough for an agent to use correctly.

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?

Schema description coverage is 100%, so baseline is 3. The description adds value by explaining artifact_url's purpose (skip search, use from wait_for_build) and how it relates to the workflow. This goes beyond the schema's raw descriptions.

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 fetches and parses test results from a Codemagic build, specifying the verb (fetch, parse), resource (test results from build), and distinguishing it from sibling tools like get_build or get_build_logs by focusing on JUnit XML parsing. It covers multiple platforms and mentions optional artifact URL shortcut.

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?

Provides clear when-to-use context: after build reaches terminal state, can use artifact_url from wait_for_build, requires codemagic.yaml with test_report glob. Does not explicitly exclude scenarios or compare to alternatives, but the information is sufficient for an agent to decide.

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

get_webhook_urlA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe Codemagic app ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already show readOnlyHint=true; description adds no contradiction and explains the URL's purpose, but no extra behavioral traits like rate limits.

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 with no wasted words: first states purpose, second gives usage.

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

Completeness5/5

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

Simple tool with single parameter and no output schema; description fully explains what the URL is used for, making it complete.

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?

Only one parameter app_id with full schema description; description adds no further detail beyond the schema.

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 tool gets an incoming webhook URL for a Codemagic app, distinguishing it from sibling tools like list_webhooks, delete_webhook.

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?

Explicitly instructs to paste the URL into Git provider settings for automatic build triggers, but does not mention when not to use or alternatives.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_typeYesThe project type to get a template for. Call list_yaml_template_types for all valid values.

TDQS

A4.4/5.0
Behavior4/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 discloses important behaviors: templates only cover build/signing, Android default linux_x2, personal account restriction. Could mention output format but acceptable.

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?

Concise at 2 sentences plus a caveat. Front-loaded with purpose. Could be slightly more structured but efficient.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description covers purpose, scope, exceptions, and sibling tool. Complete enough for agent to use correctly.

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 100% and already explains the parameter well. The tool description adds little beyond the schema, so baseline 3 is appropriate.

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 gets a starter codemagic.yaml template for a given project type, and specifies it covers build and signing only, differentiating it from publishing tools and sibling list_yaml_template_types.

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

Usage Guidelines5/5

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

Explicitly tells when to use (get template) and when not (publishing handled separately via App Store Connect tools), and advises to call list_yaml_template_types first. Provides platform-specific caveats for Android and personal accounts.

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

list_applicationsA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoTeam ID to list apps for. If omitted, lists apps for the authenticated user.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. The word 'list' implies a read-only operation, but no explicit mention of safety (e.g., no destructive side effects) or authentication needs. It is adequate but lacks detail beyond the basic action.

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 with no extraneous information. Every sentence adds value: the first states the action, the second explains its importance.

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 tool with one optional parameter and no output schema, the description is complete. It explains the purpose, the role in the workflow, and the parameter. Could mention the return value (list of apps with IDs) but it's implied by the purpose.

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?

The input schema describes the only parameter 'team_id' with full coverage. The description adds no additional semantics beyond what the schema already provides, so baseline 3 is appropriate.

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 it lists all applications and explicitly mentions its role as a prerequisite to get app IDs needed by other tools. The verb 'list' is specific and the resource 'applications' is well-defined.

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

Usage Guidelines5/5

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

Explicitly tells when to use it: 'Call this first to get the app IDs needed by all other Codemagic tools.' This provides clear guidance on its placement in workflows and distinguishes it from siblings.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, but the description accurately describes the read operation and the critical output (ASC app ID). Lacks detail on authentication or rate limits, but this is sufficient for a simple list 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?

Two short sentences with no redundancy. Front-loaded with action and purpose.

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

Completeness5/5

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

Complete for a parameterless list tool with no output schema. The description fully informs the agent of the tool's role and when to use it.

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?

No parameters exist, so schema coverage is 100%. The description adds value by linking the output (ASC app ID) to the purpose.

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 it lists apps in App Store Connect and explicitly identifies the primary purpose: getting the ASC app ID needed by other tools, distinguishing it from siblings.

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

Usage Guidelines5/5

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

Explicitly instructs to call this first, establishing it as a prerequisite for all other App Store Connect tools.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID

TDQS

C2.7/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 only mentions listing builds and a subsequent action, but fails to disclose any behavioral traits such as read-only nature, rate limits, pagination, or error conditions. The user is left to assume the tool is safe and returns all builds without side effects.

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 that combines purpose and usage instructions. While concise, it tries to convey too many ideas at once, reducing clarity. A more structured format with separate purpose and usage sections would improve readability.

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?

The description lacks important context such as the return value structure (list of builds with which fields?), error handling, and permissions needed. Since there is no output schema, the description should at least indicate what the tool returns. The mention of 'highest version number' hints at the output but is insufficient for a complete understanding.

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?

The input schema has 100% coverage with a description for 'app_id'. The tool description adds no additional meaning beyond what the schema provides. Thus, it meets the baseline expectation but does not enhance understanding.

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

Purpose3/5

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

The description states it lists TestFlight builds for an app, but it mixes this with specific workflow instructions (find highest version, increment, pass to trigger_build). The core purpose is clear but muddled by additional operational guidance, and it does not differentiate from the sibling tool 'list_builds' which may also list builds.

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 before triggering a release build, providing a specific scenario. However, it does not explicitly state when to use this tool versus alternatives like 'get_latest_build_number', nor does it mention any exclusions or prerequisites.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe team ID to list builds for
app_idNoFilter by Application ID
statusNoFilter by build status
branchNoFilter by git branch
workflow_idNoFilter by workflow ID
limitNoMaximum number of builds to return (default 50, max 500). Use filters to narrow results instead of raising this.

TDQS

A4/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. Discloses return of 'build IDs and status' and hints at list behavior, but omits common traits like pagination, ordering, or default sorting.

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 sentences: first defines purpose, second provides usage guidance. No wasted words, efficient structure.

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?

Given 6 parameters and no output schema, description adequately covers purpose and return summary. Lacks detail on pagination or limit behavior, but otherwise complete for a list tool.

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 covers 100% of parameters with descriptions. The tool description adds no extra meaning beyond 'optional filters', so baseline score of 3 is appropriate.

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 'List builds for a team with optional filters', specifying verb (List), resource (builds), and scope. Distinguishes from sibling get_build by directing users to get_build for full details.

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?

Explicitly states when to use get_build instead of list_builds, providing clear context. Does not cover all alternatives (e.g., when to use other list tools) but sufficient for main distinction.

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

list_cachesA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe Codemagic app ID

TDQS

A4.2/5.0
Behavior4/5

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

The annotations declare readOnlyHint=true, so the tool is safe. The description adds that caches are scoped to a workflow, which is behavioral context beyond the annotation. No contradictions.

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 sentences with no wasted words. The main action is front-loaded, and the structure is efficient.

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 list tool with one parameter and no output schema, the description provides enough context: it lists caches, scopes to a workflow, and mentions cache IDs for downstream use.

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 coverage is 100% with the app_id parameter fully described. The description does not add meaning beyond the schema, so baseline score of 3 is appropriate.

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 it lists build caches for a Codemagic app, specifying that each cache is scoped to a workflow. It distinguishes itself from sibling tools like delete_cache and other list tools by focusing on caches.

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 advises using cache IDs with delete_cache to free storage or force clean builds, providing a clear use case. However, it does not explicitly mention when not to use this tool or compare it to other list tools.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name, e.g. com.example.myapp

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so the description carries the full burden. It indicates the tool is read-only (list) and returns version codes, but does not disclose pagination behavior, rate limits, or what happens if no bundles exist. Adequate but not detailed.

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 sentences, no wasted words. First sentence defines function, second provides usage context. Perfectly concise and front-loaded.

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?

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is sufficient to understand what it does and when to use it. It could mention the return format or potential performance implications, but overall complete enough.

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 coverage is 100%, so the baseline is 3. The description adds no additional meaning to the package_name parameter beyond what the schema already provides (e.g., format or constraints).

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 it lists uploaded App Bundles (AAB) with version codes, using a specific verb and resource. It distinguishes from siblings like upload_to_google_play and list_google_play_tracks by its focus on bundles, but does not explicitly differentiate.

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 explicitly advises using this tool before triggering a new build to audit existing uploads, providing clear context. It does not mention when not to use or alternatives, but the usage guidance is sufficient for a list tool.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
max_resultsNoMaximum number of reviews to return (default 50). Pages of 100 are fetched transparently until the limit is reached.
max_star_ratingNoFilter to reviews at or below this star rating — e.g. 2 returns only 1 and 2 star reviews
translation_languageNoBCP-47 language code to translate review text into (e.g. en-US). Useful for apps with non-English reviews.

TDQS

A4.4/5.0
Behavior4/5

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

Reveals key behavioral traits: only text-containing reviews returned, pagination (pages of 100 fetched transparently), translation support, and inclusion of review IDs. With no annotations, the description adequately discloses behavior, though it could explicitly state that the tool is read-only or mention rate limits.

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?

Four sentences, tightly written with no redundancy. First sentence states purpose and key constraint, second gives usage advice, third connects to sibling, fourth notes ordering. Every sentence earns its place.

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 no annotations, the description covers input and behavioral details well but omits the structure of the returned reviews (e.g., fields like text, rating, date). For a list tool, the output structure is useful context. Adequate but not fully complete.

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

Parameters5/5

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

Schema coverage is 100%, and description adds significant value beyond schema descriptions: clarifies max_star_rating usage for negative reviews, explains max_results paging behavior, and mentions translation_language for non-English reviews. Package_name is straightforward but well-contextualized.

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 'List recent Google Play user reviews for an app' with specific verb and resource. Mentions that only text-containing reviews are returned, distinguishing from all reviews. Also connects to sibling tool reply_to_google_play_review by noting review IDs are included.

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?

Provides practical advice on using max_star_rating to focus on negative reviews with an example. Notes ordering by last modified date. No explicit when-not-to-use or alternative comparisons needed since no direct sibling for same resource, but guidance is clear and actionable.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name, e.g. com.example.myapp

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided. The description implies a read-only operation but does not explicitly state it has no side effects, permissions needed, or rate limits. Adequate 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.

Conciseness4/5

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

Two sentences, no unnecessary words. First sentence defines purpose, second gives workflow advice. Efficient but could separate purpose from usage.

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, the description does not explain return format or fields like 'release info'. For a simple list tool, it covers the basic workflow but lacks output details.

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 coverage is 100% with a clear parameter description. The tool description adds no extra meaning beyond what the schema provides, so baseline score applies.

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 lists Google Play tracks with release info and version codes. It distinguishes from siblings like 'get_latest_build_number' and 'promote_google_play_release', though it includes secondary usage guidance.

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?

Provides a specific use case (finding highest versionCode and setting BUILD_NUMBER) but does not explicitly state when to use this tool versus alternatives 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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoIf true, return all supported device types instead of just the common ones

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the default returns two types, all=true returns full matrix, and it returns pixel dimensions. It does not mention rate limits or side effects, but for a read-only list operation this is adequate.

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 three sentences long, each sentence serves a purpose: stating the function, describing default behavior, and explaining usage. No fluff, front-loaded with purpose.

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

Completeness5/5

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

Given the simplicity of the tool (one optional parameter, no output schema), the description is complete. It tells the agent what to expect (device types and dimensions) and how to use the output.

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

Parameters5/5

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

Schema coverage is 100% and the description adds significant value: it explains the effect of all=true (full matrix) and the default behavior (two most-required types). This goes beyond the schema's brief description.

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 lists supported screenshot device types and their required pixel dimensions. It distinguishes itself from sibling tools by explicitly linking its output to the upload_ios_screenshots tool.

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 clear usage guidance: use the returned deviceType values as the device_type parameter for upload_ios_screenshots. It also explains the default behavior and the all parameter. While it doesn't explicitly mention when not to use it, the context is sufficient.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/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 doesn't disclose whether the operation is read-only, requires authentication, or any potential side effects. While listing teams is likely safe, the description lacks explicit behavioral context.

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 short, purposeful sentences. No wasted words. The first sentence states the core purpose, the second provides essential usage guidance. Highly concise.

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?

The description is mostly complete: it covers purpose and usage integration. However, it does not describe the return format (e.g., list of team objects with ID and name) nor any potential empty results. The lack of output schema is not compensated by a description of the output structure.

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?

There are zero parameters, so the schema is fully covered. No parameter semantics are needed, and the baseline score of 4 is appropriate.

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 ('List') and the resource ('teams the authenticated Codemagic account belongs to'). It distinguishes itself from sibling list tools by focusing on teams, and even explains the purpose of the returned data for use with other tools.

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

Usage Guidelines5/5

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

The explicit instructions to use the returned team IDs with list_applications, list_builds, and other tools provide clear guidance on when to use this tool and how its output is applied.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID

TDQS

A4/5.0
Behavior3/5

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

No annotations provided. The description indicates a read-only list operation but does not disclose details like pagination, ordering, or authentication requirements. For a simple list tool, this is minimally adequate.

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 sentences, zero redundancy. The first sentence states the action and resource, the second provides immediate utility context. No wasted words.

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 single-parameter list tool with no output schema, the description is complete: it tells what it does and how to use the results. Could mention if listing includes all groups regardless of status, but not essential.

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 coverage is 100% with app_id described as 'The App Store Connect app ID'. The description adds minimal extra meaning by saying 'for an app', slightly reinforcing the parameter's purpose. Baseline score is appropriate.

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 resource 'TestFlight beta groups for an app'. It distinguishes from sibling tools like create_testflight_group (creates groups) and upload_to_testflight (uses groups) by explicitly stating the output usage.

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 usage context: 'Use a group name from this list in the beta_group parameter of upload_to_testflight'. While it lacks when-not-to-use, the guidance is clear and practical for the tool's purpose.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoTeam ID to list groups for
app_idNoApp ID to list groups for

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that secret values are never returned, implying read-only behavior and no side effects. For a simple listing tool, this is sufficient, though it could mention pagination or rate limits.

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 well-structured sentences. First states purpose, second adds a critical usage note. No fluff, front-loaded.

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?

No output schema, so description must compensate. It mentions group names are returned but doesn't describe the full output structure (e.g., array with IDs, names). Also doesn't clarify that both parameters are optional but at least one might be needed. Adequate but not fully complete.

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 coverage is 100%, so baseline is 3. The description adds no additional meaning beyond repeating 'team or app'. Both parameters already have clear schema descriptions.

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 lists variable groups for a team or app in Codemagic. It distinguishes from siblings like list_variables and create_variable_group by specifically mentioning groups and their use in trigger_build.

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 explains when to use the tool (to list variable groups) and hints at usage in trigger_build. It also warns that secrets are not returned, advising to use the UI for secrets. However, it doesn't explicitly contrast with other list tools or specify prerequisites like providing at least one parameter.

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

list_variablesA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe variable group ID (from list_variable_groups)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds value by disclosing that secret variable values are returned as null, which is a critical behavioral trait not captured by annotations. This goes beyond mere read-only safety.

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 concise: three sentences, front-loaded with the core purpose, followed by output details and usage guidance. No superfluous information.

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

Completeness5/5

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

For a simple list tool with one parameter and no output schema, the description covers all necessary aspects: what it lists, the masking of secrets, and how to use the results. It is fully complete.

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 coverage is 100% with a clear description for group_id. The tool description does not add additional meaning beyond what the schema provides for parameters, so it meets the baseline for high coverage.

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 lists variables in a Codemagic variable group and specifies the output (IDs, names, values, with secrets as null). It distinguishes itself from sibling tools like add_variable, delete_variable, and update_variable by mentioning usage of variable IDs with them.

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 clear context: it indicates where the group_id comes from (list_variable_groups) and suggests that the output IDs are used with update_variable and delete_variable. While it doesn't explicitly state when not to use it, 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.

list_webhooksA
Read-only

List webhook subscriptions configured for a Codemagic app

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe Codemagic app ID

TDQS

A3.6/5.0
Behavior3/5

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

The annotation readOnlyHint=true already indicates the tool is safe. The description adds that it lists existing subscriptions, which is consistent. However, it does not disclose any additional behavioral traits (e.g., pagination, ordering, or empty result behavior).

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, concise sentence that front-loads the verb and resource. Every word is necessary; no redundancy.

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?

Given the tool's simplicity (one parameter, no output schema, annotations present), the description is mostly complete. It lacks explicit mention of the return format, but for a list tool this is often implied.

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?

The schema describes the single parameter app_id with 'The Codemagic app ID', which is adequate. The description does not add further semantics beyond the schema.

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 specifies the verb 'List' and the resource 'webhook subscriptions', and scopes it to 'configured for a Codemagic app'. This distinguishes it from sibling tools like delete_webhook or get_webhook_url.

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. No context about prerequisites, limitations, or when to prefer another tool is given.

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 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe application ID

TDQS

A4/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 the non-obvious behavior of yaml workflows appearing only after first build, but lacks details on authentication, pagination, error handling, or side effects. Adequate but not exhaustive.

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 (28 words) with no fluff. It front-loads the core action, then provides return info, a cross-reference, and a limitation. Every sentence adds value.

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 list tool with one parameter and no output schema, the description covers the essential aspects: what it does, what it returns, how to use results, and a caveat. Minor gap: output structure not explicitly confirmed (e.g., array of objects), but still mostly complete.

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 coverage is 100% and the description does not add significant semantics beyond the schema's parameter description. Baseline of 3 is appropriate as the description provides no additional format or usage details for app_id.

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 resource 'workflows for an application', and specifies what is returned (names and IDs). It distinguishes itself from sibling list tools by focusing on workflows and mentions a specific use case with trigger_build.

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 explicitly tells the agent to use the returned ID in trigger_build and notes a limitation (yaml-defined workflows appear only after first build). While it does not explicitly say when not to use it or compare with siblings, the context is clear and helpful.

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

list_yaml_template_typesA

List all available codemagic.yaml template types

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits (e.g., auth requirements, whether it's read-only), but it only states the action. It does not confirm safety or non-destructiveness, leaving agents guessing.

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 with no wasted words. It is front-loaded and efficient for its purpose.

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, parameterless listing tool, the description is minimally adequate. However, given sibling tools that use template types, it could be improved by explaining that the output feeds into tools like 'get_yaml_template'.

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?

There are no parameters, so the schema is complete (100% coverage). The description adds the context of 'all available' and 'codemagic.yaml template types', providing meaning beyond the empty schema.

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 ('list') and the resource ('codemagic.yaml template types'), making it distinct from sibling tools like 'get_yaml_template' or 'validate_codemagic_yaml'.

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 (e.g., 'get_yaml_template' for a specific template). The description lacks context for an agent to decide between listing types and retrieving a specific template.

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

pingA

Check that the server is alive and return its version

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description fully discloses the tool's behavior: checking server liveness and returning its version. It is clear and transparent.

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, concise sentence that efficiently conveys the tool's purpose without any extraneous 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 ping tool, the description is complete enough. It indicates it returns a version, but lacks details on error handling or response format. However, given the simplicity, it is adequate.

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

Parameters5/5

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

The tool has no parameters and the schema description coverage is 100%, so no additional parameter information is needed.

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 'check' and the resource 'server', and it distinguishes from sibling tools that deal with builds, apps, and other specific operations.

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 this tool vs alternatives, but its purpose as a simple health check is evident from the context.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesYesMap of BCP-47 locale code to release note text, e.g. { 'en-US': 'Bug fixes and performance improvements.' }
platformYesTarget platform — determines which char limit applies. 'both' uses the stricter Android limit of 500.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully discloses the tool's behavior: it checks BCP-47 locale codes and character limits per platform, with 'both' using Android's stricter limit. It does not mention side effects or response format, but as a validation tool, the core behavior is well described.

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 with zero fluff. Front-loaded purpose, followed by necessary details. Every word earns its place.

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 two-parameter validation tool with no output schema, the description covers the validation rules and constraints adequately. It could mention return values (e.g., validation result structure) but is not strictly necessary given the simplicity.

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?

Schema coverage is 100%, so the schema already describes both parameters. The description adds value by explaining the 'both' platform option and the specific character limits (Android 500, iOS 4000), going beyond the schema's generic descriptions.

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 a specific verb 'validate' and clearly identifies the resource 'localized release notes' and the context 'before submitting to the App Store or Google Play'. It distinguishes from sibling tools like 'set_ios_store_listing' or 'upload_to_google_play' by focusing on validation, not submission.

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 states when to use the tool ('before submitting to the App Store or Google Play'), implying the workflow phase. It also provides guidance on using platform='both' for stricter validation. No explicit alternatives or when-not-to-use, but the context is clear enough for an agent.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
source_trackYesTrack to promote from
target_trackYesTrack to promote to
user_fractionNoStaged rollout fraction 0.0–1.0 (e.g. 0.1 = 10%). Omit for full rollout.
release_statusNoOverride release status. Default: completed (full rollout) or inProgress (staged).

TDQS

A5/5.0
Behavior5/5

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

Annotations are minimal (readOnlyHint=false, destructiveHint=false). Description adds significant behavioral context: explains promotion without re-uploading, effects of user_fraction, halting, and resuming. No contradiction with annotations.

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?

Three sentences: first states purpose, second explains user_fraction, third covers halt/resume. Front-loaded, no redundant words, efficient and clear.

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

Completeness5/5

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

Covers all parameters (package_name implied by standard schema), explains promotion workflow, staged rollout, and edge cases (halt/resume). No output schema needed; context fully supports correct usage.

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

Parameters5/5

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

Although schema coverage is 100%, description adds meaning beyond enum values: explains user_fraction as staged rollout percentage (0.1 = 10%), and how release_status and tracks interact for halt/resume. This is highly informative.

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 the tool promotes releases between Google Play tracks without re-uploading, using specific verbs and resource. It distinguishes from siblings like upload_to_google_play (which involves uploading) and set_rollout_fraction (focused on rollout fraction, not track promotion).

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

Usage Guidelines5/5

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

Provides explicit when-to-use: for staged rollout set user_fraction, for halting set tracks to production and release_status='halted', for resuming set same tracks with inProgress and user_fraction. Gives clear alternative scenarios and parameter combinations.

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

release_versionA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses that the tool immediately makes the update available or starts a phased rollout, adding behavioral context beyond the annotations. Annotations already indicate destructiveness, and the description elaborates the effect, though it could mention reversibility or prerequisites.

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 sentences, front-loaded with the core action, and no wasted words. It efficiently conveys purpose, usage, and alternatives.

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

Completeness5/5

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

Given the tool's simplicity (2 required params, no output schema, annotations present), the description is complete. It covers purpose, state prerequisites, effects, and sibling alternatives adequately.

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?

With 100% schema coverage, the description adds no additional meaning beyond the schema's parameter descriptions. It meets the baseline for high coverage but does not enhance parameter understanding.

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 releases an approved App Store version from 'Pending Developer Release', specifying the verb and resource. It distinguishes itself from the sibling 'set_phased_release' by mentioning an alternative for gradual rollouts.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool (for versions in 'Pending Developer Release' state) and when not to use it (for gradual rollout, use set_phased_release instead), providing clear context and an alternative.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
review_idYesReview ID from list_google_play_reviews
reply_textYesDeveloper reply text — max 350 characters

TDQS

A4.7/5.0
Behavior5/5

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

Discloses that replies are limited to 350 characters and that existing replies are replaced. Annotations indicate not read-only and not destructive, which aligns.

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 sentences, front-loaded with the action, concise and includes practical tips without redundancy.

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

Completeness5/5

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

Covers all necessary aspects: purpose, parameter sources, constraints, and best practices. No output schema needed for this simple mutation.

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?

All parameters already have schema descriptions (100% coverage). The description adds value by indicating the source of review_id and reinforcing the character limit.

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 'Post or update a developer reply to a Google Play user review', specifying the verb and resource. Distinguishes from sibling tools like list_google_play_reviews and other mutation tools.

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?

Advises to get review_id from list_google_play_reviews and provides guidance on writing helpful replies. Could be more explicit about when not to use, but context is clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
csvYesRaw CSV string from Play Console data safety export (5 columns: question ID, response ID, TRUE/FALSE value, requirement type, human-readable label)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only indicate non-readOnly and non-destructive. The description adds critical behavioral context: 'Takes effect immediately — there is no staging step and no GET endpoint to retrieve current labels.' This reveals the immediate and irreversible nature beyond what annotations provide.

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 compact paragraph of five sentences, each adding essential information. It front-loads the main action and efficiently covers input source, usage scenarios, and behavioral implications without redundancy.

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?

Given the tool has two well-described parameters, no output schema, and sibling tools, the description covers the key aspects: purpose, input format, when to use, and side effects. It does not explain the response or error handling, but the immediate effect note compensates.

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?

Schema coverage is 100% with detailed descriptions for both parameters. The description adds value by explaining the source of the CSV ('exported from Play Console → App content → Data safety → Export CSV'), which supplements the schema's technical 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 verb 'Submit' and the resource 'data safety declaration for a Google Play app', with additional context on what the declaration describes. It distinguishes from sibling tools that handle store listings, uploads, or other Google Play operations, though no explicit comparison is made.

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 specifies when to use the tool: 'Re-upload whenever data practices change' and accepts CSV from a specific Play Console export path. It implies when not to use it (if no GET endpoint exists, avoid retrieval), but does not explicitly mention alternatives or exclusion scenarios.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
languageNoBCP-47 language tag e.g. en-US, fr-FRen-US
titleNoApp title (max 50 characters)
short_descriptionNoShort description shown in search results (max 80 characters)
full_descriptionNoFull description shown on the store listing page (max 4000 characters)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate a write operation (readOnlyHint=false, destructiveHint=false). The description adds valuable behavioral details: partial update, immediate effect, and no staging. This provides deeper insight beyond the annotation schema.

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: first states purpose and key constraint, second adds behavioral note. No redundant or vague wording. Every sentence earns its place.

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?

Given no output schema, the description sufficiently covers update behavior, partial update, and immediate effect. It could optionally mention return value, but for a mutation tool this is adequate. Completeness is high for the tool's complexity.

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?

The input schema covers all parameters with descriptions (100% coverage). The description adds meaning by explaining the partial update semantics, which tells the agent that omitted fields are untouched. This is extra context beyond the schema.

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 'Update the Google Play store listing for a specific language,' which is a specific verb and resource. This differentiates it from siblings like get_android_store_listing (read) and upload_to_google_play (binary upload).

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 explicitly notes partial update behavior ('Only the fields you provide are updated') and immediate effect ('Changes go live immediately on commit; there is no staging step'). While it doesn't explicitly compare to alternatives, the context signals show a distinct sibling set.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
uses_non_exempt_encryptionYesSet to false for apps that only use HTTPS/TLS (most apps). Set to true only for apps with custom proprietary encryption.
build_idNoSpecific build ID to update — defaults to the latest build

TDQS

A4.6/5.0
Behavior4/5

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

Discloses that it modifies export compliance status, which aligns with destructiveHint=false and readOnlyHint=false. However, does not discuss reversibility or side effects on existing submissions, but the mutation is straightforward.

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?

Three well-structured sentences with no fluff. First sentence states purpose, second gives context, third provides practical guidance. Front-loaded effectively.

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?

Provides sufficient context for a simple boolean setter with three parameters, including workflow relevance and parameter defaults. Could mention what happens after setting but not critical given no output schema.

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?

Adds meaningful context beyond the schema: explains why uses_non_exempt_encryption is needed and when to set true/false, and clarifies default for build_id. Schema coverage is 100%, so description supplements well.

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 tool sets export compliance declaration for iOS builds, with specific verb 'Set' and resource. Distinguishes from siblings by focusing on a compliance step not covered by other tools.

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

Usage Guidelines5/5

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

Explicitly states when it's required (before App Store submission and TestFlight external distribution) and provides guidance on setting false for most apps vs true for custom encryption. Also explains default behavior for build_id parameter.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'
localeNoBCP-47 locale code e.g. en-US, fr-FRen-US
nameNoApp name (app-info, max 30 characters)
subtitleNoApp subtitle shown below the name (app-info, max 30 characters)
privacy_policy_urlNoURL to the app's privacy policy (app-info)
descriptionNoFull app description (version, max 4000 characters)
keywordsNoComma-separated keywords for App Store search (version, max 100 characters)
promotional_textNoPromotional text shown above the description (version, max 170 characters)
marketing_urlNoURL to a marketing page for this version (version)
support_urlNoURL to the app's support page (version)
whats_newNoWhat's new text for this version (version, max 4000 characters)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations confirm non-read-only and non-destructive. Description adds partial update behavior, version scoping, and staging/validation process. No contradictions.

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?

Three sentences, front-loaded with purpose, no wasted words. Each sentence contributes useful 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 mutation tool with 12 parameters and no output schema, description covers behavior, scoping, and staging well. Slight lack of error handling details, but sufficient.

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?

Schema covers 100% of parameters. Description groups fields into app-info and version categories, and clarifies partial update behavior, adding meaning beyond the schema.

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 'Update App Store listing text for a single locale', specifying a precise verb and resource. The tool is distinct from siblings like get_ios_store_listing and set_android_store_listing.

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?

Provides clear context: only provided fields change, omitted fields left as-is. Distinguishes app-info vs version field scopes. No explicit alternatives, but the scope is well-defined.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'
actionYescreate: set up phased rollout before submission | pause: halt rollout | resume: continue after pause | complete: release to all users now

TDQS

A4.3/5.0
Behavior5/5

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

With minimal annotations (only readOnlyHint and destructiveHint), the description adds extensive behavioral detail: the rollout timeline, stateful nature, and effect of each action. It explains prerequisites and recovery scenarios, fully carrying the transparency burden.

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 paragraph, efficiently front-loaded with the tool's purpose. It sequentially covers the rollout concept, timeline, then each action with one-liner explanations. No redundant words; every sentence earns its place.

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 mutation tool with no output schema, the description covers actions, timeline, and prerequisites well. Minor gaps: it doesn't specify if you can resume after complete, or describe return values. Overall, it's sufficiently complete for an AI agent to use correctly.

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?

Schema coverage is 100%, so baseline is 3. The description adds value by embedding actions in practical context (e.g., 'use if a critical bug is found' for pause). While schema already describes each enum, the description enriches meaning for an AI agent.

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 manages a phased rollout for an App Store version. It explains the timeline and four actions. While it doesn't explicitly differentiate from sibling tools like set_rollout_fraction, the purpose is specific and unambiguous.

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 context for each action: create before submission, pause for critical bugs, resume to continue, complete to release fully. It gives practical scenarios, but lacks explicit exclusions or mention of alternatives (e.g., for immediate full release).

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name
trackYesThe track with the staged rollout
version_codeYesVersion code of the release to update (from list_google_play_tracks)
rollout_fractionYesNew rollout fraction 0.0–1.0 (e.g. 0.5 = 50%)

TDQS

A4/5.0
Behavior3/5

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

Annotations indicate the tool is neither read-only nor destructive. The description adds the precondition that the version code must correspond to a release currently in staged rollout. No additional behavioral traits (e.g., permissions, reversibility) 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.

Conciseness5/5

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

The description consists of two concise sentences. The first sentence states the purpose, the second provides usage guidance and a prerequisite. No unnecessary words.

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 tool with no output schema and clear input parameters, the description covers the key aspects: purpose, usage scenario, required inputs, and a source for one parameter. It is mostly complete, though it could mention the outcome of the adjustment.

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 100%, so baseline is 3. The description provides a hint about where to get the version_code ('from list_google_play_tracks') but otherwise repeats schema information. Minimal added value beyond the schema.

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 'adjust' and the resource 'staged rollout percentage for an existing release on a Google Play track'. It is specific and distinguishes from sibling tools like promote_google_play_release.

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 gives clear context for when to use the tool ('to gradually expand a rollout') and a prerequisite ('requires the version code'). It does not explicitly mention when not to use or list alternatives, but the context is sufficient for most cases.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'
localeNoBCP-47 locale e.g. 'en-US', 'de-DE', 'zh-Hans' (default: en-US)en-US
whats_newNoWhat's New in this version (required by Apple for every release)
descriptionNoFull app description
keywordsNoComma-separated search keywords
promotional_textNoPromotional text shown above the description
support_urlNoSupport URL
marketing_urlNoMarketing URL

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate this is a write operation (readOnlyHint=false). The description adds that What's New is required per Apple and that the call should be made once per locale. It does not contradict annotations and provides useful behavioral context, though it could mention permission requirements or response details.

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?

Three concise sentences, front-loaded with the main purpose. Every sentence adds value (purpose, usage pattern, follow-up). No redundant or vague language.

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

Completeness5/5

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

Given the tool has 9 parameters (all well-documented in schema) and no output schema, the description provides sufficient context: identifies required fields, locale handling, and post-call validation step. An agent can correctly invoke this tool with the provided information.

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?

Schema coverage is 100%, but the description adds practical semantics: notes that What's New is required for submission, explains the locale default (en-US) and suggests adding other locales if supported. This goes beyond the schema's field descriptions.

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 ('Update App Store version localization metadata') and specifies the exact fields (What's New, description, keywords, etc.). It distinguishes the tool from siblings like set_ios_store_listing (which handles store-level listing) and validate_app_submission (which checks submission readiness).

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

Usage Guidelines5/5

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

Explicitly states when to use: before submitting for review, per locale, with en-US as required default. Also provides a clear follow-up step: 'Use validate_app_submission afterward.' No ambiguity about alternatives.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aab_urlYesThe AAB download URL from a Codemagic build artifact

TDQS

A4.3/5.0
Behavior4/5

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

Annotations are non‑destructive and not read‑only. The description adds behavioral context: 'no track, no review, no version code ceremony' and explains the output (install URL). No contradictions.

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?

Three sentences, front‑loaded with the main action, no wasted words.

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

Completeness5/5

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

For a single‑parameter tool with no output schema, the description explains the return value and prerequisite, providing sufficient context for correct use.

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 coverage is 100% with a clear description for aab_url. The description does not add further parameter details beyond the schema, so baseline score applies.

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 (upload), the resource (AAB from Codemagic), and the result (install URL for internal app sharing). It distinguishes from siblings like upload_to_google_play by emphasizing no track or review.

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 gives context for use ('Ideal for quick QA before promoting to a track') and a prerequisite ('Testers need the internal app sharing feature enabled'). It does not explicitly list when not to use or name alternatives, but the purpose is clear enough for an agent.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idYesThe App Store Connect build ID (from list_asc_builds)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate not read-only and not destructive, which aligns with the 'submit' action. The description adds behavioral context: Apple reviews once, then all external groups can access. No contradictions.

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?

Description is four sentences, each adding value. No fluff, front-loaded with the core action, and well-structured.

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?

The tool is simple (one param, no output schema). The description covers prerequisites (build ID from list_asc_builds), the review process, and distinction between internal/external groups. Missing details like potential errors or delays, but adequate for the complexity.

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 coverage is 100% with one parameter (build_id) described. The description mentions 'Get the build ID from list_asc_builds', which reinforces but doesn't add significant new meaning beyond the schema.

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 'Submit a build for TestFlight beta app review' and explains its purpose (required before external beta groups can install). It distinguishes from sibling tools like 'submit_for_app_store_review' by specifying the TestFlight context.

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 explains when to use this tool (before external beta groups can install) and when not (internal groups do not require beta review). It also provides a source for the build ID, but doesn't explicitly mention alternatives like 'share_app_internally'.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'
build_idYesBuild UUID from upload_build_to_asc or list_asc_builds

TDQS

A4.7/5.0
Behavior5/5

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

Annotations indicate non-read-only and non-destructive. The description adds critical behavioral context: the build must have processingState VALID, and prerequisites must be met. It warns about expected states without contradicting annotations.

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 extremely concise, with two sentences. The first sentence states the core action, and the second provides essential usage guidance and an alternative. Every sentence is valuable and front-loaded.

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

Completeness5/5

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

For a three-parameter tool with no output schema, the description is complete. It includes prerequisites, alternative tools, and validation steps, ensuring the agent can use it correctly in context.

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 coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema parameter descriptions. It references build_id and version but provides no additional parameter-specific semantics.

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 with a specific verb and resource: 'Attach a processed build to an App Store version and submit it for review.' It distinguishes from siblings by referencing prerequisite tools like list_asc_builds and validate_app_submission.

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

Usage Guidelines5/5

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

Explicit guidelines are provided: use only after the build's processingState is VALID (confirmed via list_asc_builds), and after setting version metadata and export compliance. The alternative validate_app_submission is mentioned for catching blockers.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe application ID
workflow_idYesThe workflow ID to run
branchNoGit branch to build
tagNoGit tag to build
variablesNoEnvironment variables to inject into the build
groupsNoEnvironment variable groups to include
labelsNoLabels to attach to the build
yaml_contentNoA codemagic.yaml file content to use for this build. When provided, the yaml is passed inline and does not need to exist in the repository.
instance_typeNoOverride the instance type for this build. Common values: mac_mini_m2, mac_mini_m4, linux_x2, linux_x4, windows_x2. Must be available on your billing plan. If omitted, the instance type from codemagic.yaml is used. IMPORTANT: Personal accounts (no team) can only use mac_mini_m2 — linux_x2, linux_x4, and mac_mini_m4 are not available on personal accounts.

TDQS

A4/5.0
Behavior3/5

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

Annotations are minimal (non-readonly, non-destructive). Description adds workflow context (validate yaml, wait for build) but does not disclose error cases, rate limits, or permission requirements. It explains yaml passing mechanism but lacks transparency on build costs or time.

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 paragraph front-loaded with main purpose, then details. Every sentence adds value, but could be structured with bullet points for readability. No wasted words, but slightly dense.

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 complexity (9 params, no output schema), description covers core usage flow and companion tools. Lacks return value format and error handling. Since no output schema, should describe response structure minimally.

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?

Schema coverage is 100% with parameter descriptions. Description adds extra meaning: explains how to use variables for BUILD_NUMBER in release builds, and specifies instance_type restrictions for personal accounts. Compensates for schema's lack of enums or detailed formats.

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 'Trigger a new build on Codemagic' with specific verb and resource. It distinguishes from siblings by referencing companion tools like wait_for_build, get_yaml_template, and validate_codemagic_yaml.

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?

Provides explicit guidelines: for release builds, determine BUILD_NUMBER first; use yaml_content with validation; call wait_for_build after. Mentions alternatives indirectly but does not explicitly state when not to use this tool.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe variable group ID
variable_idYesThe variable ID to update (from list_variable_groups)
nameYesNew variable name
valueYesNew variable value

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate mutation (readOnlyHint=false) and non-destructiveness. The description adds critical behavioral context: it only applies to non-secret variables and warns against handling secrets via the agent, which goes beyond annotations.

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 sentences, zero wasted words, front-loaded with the core action. Every sentence earns its place.

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?

Despite no output schema, the description covers the essential behavior and constraints. It lacks detail on error conditions or idempotency, but for a simple update tool, it is sufficient.

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?

Schema coverage is 100% with good descriptions. The description adds value by explaining the origin of variable_id (from list_variable_groups), which helps the agent understand the parameter's relationship.

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 a specific verb ('Update') and resource ('existing non-secret variable'), clearly distinguishing it from sibling tools like add_variable (create) and delete_variable (delete). The scope is well-defined.

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?

It explicitly states the source of variable_id and advises against using for secret values, guiding the agent away from misuse. However, it does not explicitly list when not to use (e.g., for public or read scenarios), but the context is clear.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Android package name e.g. com.example.myapp
languageNoBCP-47 language tag e.g. en-US, fr-FRen-US
image_typeNoImage type: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshotsphoneScreenshots
screenshot_urlsYesURLs of screenshot images to upload, in display order
replaceNoIf true, delete all existing screenshots of this type before uploading

TDQS

A4.7/5.0
Behavior5/5

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

Discloses atomicity of uploads, supported formats (JPEG, 24-bit PNG), max file size (8 MB), and that replace=true deletes existing screenshots. Annotations confirm readOnly=false and destructiveHint=false, with no contradictions.

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?

Five sentences, front-loaded with the main action, then constraints and recommended usage. Every sentence adds necessary detail without redundancy.

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

Completeness5/5

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

Covers purpose, constraints (format, size, limit), atomicity, and replace behavior. No output schema needed as tool likely returns status; description is sufficient for an agent to invoke correctly.

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?

Schema coverage is 100%, but description adds value by noting screenshot_urls are in display order, replace=true deletes all existing, and lists common image_type values beyond the schema's enum-like list.

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 explicitly states the tool downloads screenshots from URLs and uploads them to Google Play for a specific language and device type. This clearly distinguishes it from siblings like upload_ios_screenshots.

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?

Provides specific guidance on the 8-screenshot limit, replace=true recommendation, and listing common image types. Does not explicitly state when not to use but offers clear context for typical scenarios.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
ipa_urlYesThe IPA download URL from a Codemagic build artifact

TDQS

A4.8/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, but description adds crucial behavior: 'Returns immediately once the upload commits — does NOT wait for Apple's processing pipeline.' This adds value beyond annotations. Could include more details on failure/retry logic but still strong.

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?

Three sentences: purpose, immediate return behavior, and follow-up steps. No wasted words; highly efficient and front-loaded with key information.

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

Completeness5/5

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

For a tool with two simple parameters and no output schema, the description fully covers the return behavior and the necessary post-call actions (polling and subsequent call). It leaves no ambiguity about the workflow.

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

Parameters5/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds context by specifying that app_id comes from list_asc_apps and ipa_url from a Codemagic build artifact, enhancing understanding beyond the schema.

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 'Download an IPA from a Codemagic artifact URL and upload it to App Store Connect,' specifying the verb (upload) and resource (App Store Connect). It distinguishes itself from sibling tools like submit_for_app_store_review by explaining its immediate return behavior.

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

Usage Guidelines5/5

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

Explicitly provides a complete workflow: after calling this tool, poll list_asc_builds until processingState is VALID, then call submit_for_app_store_review. It also implies when not to use (if synchronous completion needed).

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

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'
localeNoBCP-47 locale code e.g. en-US, fr-FRen-US
device_typeYesDevice type string e.g. IPHONE_65, IPAD_PRO_3GEN_129 (from list_ios_screenshot_types)
screenshot_urlsYesURLs of screenshot images to upload, in display order
replaceNoIf true, delete all existing screenshots for this device type before uploading

TDQS

A4.4/5.0
Behavior4/5

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

Adds behavioral context beyond annotations: describes format constraints (PNG no alpha, JPEG), size limit (10 MB), count limit (10 per set), and the effect of replace (delete existing before upload). Annotations only provide readOnlyHint and destructiveHint, so description adds significant value.

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?

Four sentences, each serving a purpose: summary, constraints, prerequisite, recommendation. No redundant or filler content. Front-loaded with most important 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?

Given the tool has 6 parameters, no output schema, and moderate complexity, the description covers prerequisites, constraints, and parameter rationale. Could mention that screenshots are linked to the specified app_id and version, but overall adequate for agent understanding.

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?

Schema coverage is 100%, so baseline is 3. Description adds value by explaining device_type requires prior API call and recommends replace=true. Provides practical usage context for parameters beyond schema descriptions.

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 'upload' with specific resource 'iOS screenshots to App Store Connect for a specific device type and locale.' It distinguishes from sibling tools like upload_android_screenshots by specifying platform and screenshot type.

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?

Provides when-to-use guidance: recommends setting replace=true for refreshing a set. Advises calling list_ios_screenshot_types first for valid device_type values. Does not explicitly mention when not to use, but context of sibling tools implies differentiation.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aab_urlYesThe AAB download URL from a Codemagic build artifact
trackYesThe Google Play track to publish to
release_nameNoName of the release. If omitted, generated from the AAB version name.
release_notesNoWhat's new in this release, as plain text
release_notes_languageNoBCP-47 language tag for the release notes (default: en-US)
draftNoUpload as a draft release instead of publishing immediately

TDQS

A4.1/5.0
Behavior3/5

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

Annotations (readOnlyHint=false, destructiveHint=false) are minimal, so the description carries the burden. It adds behavioral context like the source of the artifact (Codemagic) and the track recommendation, but misses prerequisites (e.g., app must exist in Play Console) and potential side effects (e.g., overwriting existing releases). The behavior is adequately but not thoroughly described.

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 front-loaded with the core purpose in the first sentence, followed by two short sentences with usage guidance. Every sentence contributes meaning, and there is no redundancy. It is appropriately concise.

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 the tool's complexity (6 parameters, no output schema), the description covers the main workflow and provides key guidance. However, it omits important context like authentication requirements, whether the app must already be added to Google Play (sibling add_application exists), and what the tool returns. The agent likely needs additional information for correct invocation.

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 coverage is 100%, so each parameter is already described in the schema. The description adds marginal value: it specifies that aab_url should come from wait_for_build, recommends the internal track, and notes that release_name is optional with auto-generation. This enhances understanding but does not significantly surpass the schema's own descriptions.

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: downloading an AAB artifact from Codemagic and publishing it to a Google Play track. It distinguishes the tool from siblings by mentioning manual promotion via Play Console, implying a separate tool for promotion (promote_google_play_release). The verb+resource combination is specific and unambiguous.

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

Usage Guidelines5/5

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

The description explicitly instructs to use the AAB artifact URL from wait_for_build and advises starting with the internal track for safety. It also hints at using other tools for promotion ('can be promoted manually'), providing clear when-to-use and alternative paths.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID
ipa_urlYesThe IPA download URL from a Codemagic build artifact
beta_groupNoTestFlight beta group name to distribute to after upload

TDQS

B3.4/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds no behavioral context beyond what is obvious (download and upload). It does not disclose network requirements, authentication needs, rate limits, or any potential side effects, leaving the agent without additional safety or expectation management.

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, front-loaded with the primary function and ending with the optional distribution capability. Every part earns its place, with no fluff or redundancy.

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?

Given the tool's simplicity (3 parameters, no output schema, annotations present), the description covers the core workflow and optional step. It omits prerequisites like App Store Connect access or Codemagic API keys, but these are commonly understood for such a tool. Overall, it is sufficiently complete for an agent to understand the tool's role.

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 coverage is 100%, so the schema already fully documents parameters. The description loosely reiterates the purpose of ipa_url and beta_group but adds no new constraints or format details. Baseline 3 is appropriate as the description does not fall short but also does not enhance the schema.

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 it downloads an IPA from Codemagic and uploads to TestFlight via App Store Connect, and optionally distributes to a beta group. It is specific about the resource (TestFlight) and action (upload), but does not explicitly distinguish it from siblings like upload_build_to_asc, which may handle similar uploads.

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 the tool is for uploading TestFlight builds from Codemagic artifacts and optionally distributing to beta groups. However, it provides no explicit guidance on when to use this tool versus alternatives (e.g., upload_build_to_asc or submit_beta_review), nor does it mention prerequisites or exclusions.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesThe App Store Connect app ID (from list_asc_apps)
versionYesApp Store version string e.g. '1.2.3'

TDQS

A4.3/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It discloses it returns an ordered remediation plan and requires iteration, but doesn't explicitly state if it's read-only or what permissions are needed. Adequate but could be more explicit about side effects.

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?

Three efficient sentences: purpose, what it checks and returns, and workflow instruction. No redundancy or extraneous detail.

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

Completeness5/5

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

Given the tool's simplicity (2 simple params, no output schema), the description covers purpose, parameters, return type (ordered remediation plan), and usage workflow. Complete for the complexity level.

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?

Schema coverage is 100% with descriptions. The description adds context: app_id source (list_asc_apps) and version format example ('1.2.3'). Provides slight additional value beyond schema.

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 runs a 'preflight readiness check' for an App Store version before submission, listing specific checks and contrasting with publishing. It distinguishes from siblings by specifying the iterative remediation workflow and referencing publish_to_app_store.

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?

Explicitly says 'Call this before publish_to_app_store with submit_for_review=true' and describes the iterative process of fixing issues and re-calling. While it doesn't list exclusions or alternatives, the context is clear.

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

validate_codemagic_yamlA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
yaml_contentYesThe full contents of a codemagic.yaml file

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states that validation is against a schema, implying it is a read-only check, but it does not disclose side effects, permissions needed, or whether it only checks syntax or also semantic rules. Adequate but minimal.

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?

A single, clear sentence that conveys the essential function without any unnecessary words. Every part adds value, making it highly concise and well-structured.

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 1-parameter tool with no output schema, the description is functional but lacking. It does not explain what the validation output looks like (e.g., success/failure messages, error details) or whether it validates all aspects of the YAML. Some behavioral context is missing.

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?

The only parameter, yaml_content, is fully described in the schema as 'The full contents of a codemagic.yaml file'. The description adds no additional semantic information beyond the schema itself, so baseline score of 3 applies.

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: to validate a codemagic.yaml file against the official Codemagic JSON schema. It uses a specific verb (Validate) and resource (codemagic.yaml file), and it is distinct from siblings like get_yaml_template or detect_project_type.

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. For example, when to validate versus using get_yaml_template to get a template first. The description does not mention prerequisites or when validation would be appropriate.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idYesThe Codemagic build ID to check

TDQS

A4.2/5.0
Behavior4/5

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

No annotations, but description fully discloses non-polling behavior, immediate return, and what happens on terminal state (full details and artifact URLs). No side effects mentioned, but not needed for read-only check.

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?

Four sentences, front-loaded with purpose, no wasted words, efficient and clear.

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 check tool with no output schema, description explains return content and usage pattern. Could mention error handling for invalid build_id, but overall complete given low complexity.

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?

Only one parameter 'build_id'; schema already describes it as 'The Codemagic build ID to check'. Description adds minimal context beyond schema. With 100% schema coverage, baseline 3 is appropriate.

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 it checks the current status of a Codemagic build, distinct from siblings like 'get_build' and 'cancel_build'.

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?

Explicitly says it returns immediately and requires repeated calls with the same build_id; provides expected time range (10–40 minutes) and frequency (20+ times normal). Lacks explicit alternatives but context is clear.

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. 63 tool updatesv0.1.0
    • First observedadd_application
    • First observedadd_testflight_tester
    • First observedadd_variable
    • First observedcancel_build
    • First observedcheck_publish_readiness
    • First observedcreate_public_artifact_url
    • First observedcreate_testflight_group
    • First observedcreate_variable_group
    • First observeddelete_cache
    • First observeddelete_variable
    • First observeddelete_webhook
    • First observeddetect_project_type
    • First observedget_android_store_listing
    • First observedget_asc_release_status
    • First observedget_asc_review_status
    • First observedget_build
    • First observedget_build_logs
    • First observedget_ios_store_listing
    • First observedget_latest_build_number
    • First observedget_test_results
    • First observedget_webhook_url
    • First observedget_yaml_template
    • First observedlist_applications
    • First observedlist_asc_apps
    • First observedlist_asc_builds
    • First observedlist_builds
    • First observedlist_caches
    • First observedlist_google_play_bundles
    • First observedlist_google_play_reviews
    • First observedlist_google_play_tracks
    • First observedlist_ios_screenshot_types
    • First observedlist_teams
    • First observedlist_testflight_groups
    • First observedlist_variable_groups
    • First observedlist_variables
    • First observedlist_webhooks
    • First observedlist_workflows
    • First observedlist_yaml_template_types
    • First observedping
    • First observedprepare_release_notes
    • First observedpromote_google_play_release
    • First observedrelease_version
    • First observedreply_to_google_play_review
    • First observedset_android_data_safety
    • First observedset_android_store_listing
    • First observedset_export_compliance
    • First observedset_ios_store_listing
    • First observedset_phased_release
    • First observedset_rollout_fraction
    • First observedset_version_metadata
    • First observedshare_app_internally
    • First observedsubmit_beta_review
    • First observedsubmit_for_app_store_review
    • First observedtrigger_build
    • First observedupdate_variable
    • First observedupload_android_screenshots
    • First observedupload_build_to_asc
    • First observedupload_ios_screenshots
    • First observedupload_to_google_play
    • First observedupload_to_testflight
    • First observedvalidate_app_submission
    • First observedvalidate_codemagic_yaml
    • First observedwait_for_build

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (e.g., add vs. delete vs. list for each resource), but the sheer number (63) creates subtle overlap risk (e.g., multiple upload tools for different stores).

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., add_application, get_build_logs, promote_google_play_release). No mixing of conventions.

Tool Count2/5

63 tools is excessively high for a single server, far beyond the 3–15 range for well-scoped sets. Many niche tools (e.g., set_android_data_safety) contribute to bloat, making agent navigation difficult.

Completeness4/5

The tool set covers the full mobile CI/CD lifecycle (build, test, deploy, manage store listings) with only minor gaps (e.g., no delete_application or list TestFlight testers). Agents can work around these.

Maintenance

ActivityInactive
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

  • A
    license
    A
    quality
    B
    maintenance
    A local Python MCP server that exposes the Codemagic CI/CD REST API as Claude-callable tools. Trigger builds, manage apps, download artifacts, and clear caches — all from Claude Code or Claude Desktop without leaving the chat.
    25
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Codemagic CI/CD API, enabling app management, build operations, artifact handling, cache control, and team management through natural language.
    13
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides AI agents with tools to build, deploy, and manage Flutter applications, including APK/AAB generation, keystore management, and CI/CD integration.
    9
    1
    MIT

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