codemagic-mcp-server
The codemagic-mcp-server provides AI agents with tools to manage the full mobile app delivery pipeline across Codemagic CI/CD, App Store Connect, and Google Play — covering building, testing, signing, and publishing.
Codemagic CI/CD
List teams, apps, workflows, and builds; trigger builds with optional inline
codemagic.yamland environment variable injectionPoll build status, cancel builds, fetch logs and artifact download URLs
Add Git repositories, manage webhooks, variable groups, and build caches
YAML Configuration
Validate
codemagic.yamlagainst the official schemaGenerate starter templates for Android, iOS, Flutter, React Native, Unity, .NET MAUI, and more
Auto-detect project type from a repository file listing
App Store Connect (iOS)
List apps, builds, and TestFlight beta groups; add testers; submit builds for beta review
Upload IPAs to TestFlight or App Store Connect; set export compliance
Manage per-locale version metadata (What's New, description, keywords), app-info metadata, and screenshots
Run preflight validation, submit for App Store review, release approved versions, and manage phased rollouts
Google Play (Android)
List tracks (internal, alpha, beta, production) and uploaded AABs; upload AABs to tracks or Internal App Sharing
Promote releases between tracks, adjust staged rollout fractions, get the latest version code
Get/update store listing text and screenshots per language; submit data safety CSV
List user reviews and post developer replies
Testing & Validation
Fetch and parse JUnit XML test results from Codemagic builds (pass/fail/error/skip summaries with stack traces)
Validate localized release notes against BCP-47 locale codes and platform character limits (Android: 500, iOS: 4000)
Run aggregate publish-readiness checks for iOS or Android, distinguishing agent-fixable from human-required items
Workflow Prompts
Built-in guided prompts for onboarding, iOS release, Android release, and first-time publisher setups (
/onboarding,/ios_release,/android_release,/first_publish_ios,/first_publish_android)
Manage TestFlight, upload and submit builds, set listing metadata, validate, submit for review, and release to the App Store.
Manage teams, apps, builds, artifacts, logs, variable groups, caches, and webhooks on Codemagic CI/CD.
Publish AABs, promote releases, manage staged rollouts, set listing text and screenshots, and manage user reviews on Google Play.
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.
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_builds → get_yaml_template → trigger_build → wait_for_build → upload_build_to_asc → set_version_metadata → validate_app_submission → submit_for_app_store_review → release_version
Android: get_latest_build_number → get_yaml_template → trigger_build → wait_for_build → upload_to_google_play → promote_google_play_release
Related MCP server: Codemagic
Prerequisites
Node.js 20 or 22 (LTS)
asc CLI — asccli.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 |
| Your Codemagic API token. Found in Codemagic → Account settings. |
App Store Connect tools (iOS)
Variable | Description |
| App Store Connect API key ID |
| App Store Connect issuer ID |
| Base64-encoded |
| Set to |
Google Play tools (Android)
Variable | Description |
| 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.jsonInstallation
Using npx (recommended)
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-serverThen 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 buildThen 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.jsClaude 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.jsonWindows:
%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 |
| Starting from scratch — connect a repo, get a first build passing |
| Build a signed AAB and publish it to Google Play |
| Build a signed IPA and upload it to TestFlight |
| One-time setup for first-time iOS App Store publishers — Apple Developer enrollment, app record, age rating, privacy labels |
| 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 |
|
Windows |
|
Tools
Codemagic
Tool | Description |
| Check that the server is running |
| List teams the authenticated account belongs to |
| List apps in your Codemagic account or team |
| List workflows for an app |
| List builds with optional filters (app, status, branch, workflow) |
| Get full details for a single build including artifacts |
| Fetch per-step log text for a build — by default returns failed steps only |
| Trigger a build; optionally supply an inline |
| Single-check tool — returns status immediately; call again until terminal state |
| Cancel a running or queued build |
| Connect a Git repository to Codemagic; auto-generates SSH deploy keys for SSH URLs |
| Get the incoming webhook URL to paste into your Git provider settings |
| List webhook subscriptions configured for an app |
| Delete a webhook subscription from an app |
| List build caches for an app |
| Delete all caches or a specific cache by ID |
| Create a time-limited public download URL for a build artifact |
App Store Connect (iOS)
Tool | Description |
| List apps in App Store Connect |
| List TestFlight builds for an app |
| List TestFlight beta groups |
| Get the App Store review state for an app |
| Full release pipeline dashboard (builds, TestFlight, App Store) |
| Download an IPA from Codemagic and upload to TestFlight |
| Submit a TestFlight build for external beta review (required before external groups) |
| Add a tester by email to TestFlight, optionally to a group |
| Create an internal or external TestFlight beta group |
| Declare encryption usage for a build (required before App Store submission) |
| Set "What's New" text and other per-locale metadata for an App Store version |
| Preflight check — returns an ordered list of blockers before submission |
| Upload an IPA to App Store Connect (fast, non-blocking); poll |
| Attach a processed build to a version and submit for App Store review |
| Release an approved App Store version immediately |
| Create, pause, resume, or complete a phased rollout |
| Pull current App Store listing text for all locales (name, description, keywords, etc.) |
| Update App Store listing text for a locale — only provided fields are changed |
| List supported screenshot device types and their required pixel dimensions |
| Download screenshots from URLs and upload to App Store Connect for a device type and locale |
Google Play (Android)
Tool | Description |
| List tracks (internal, alpha, beta, production) with release info |
| List uploaded AABs by version code |
| Download an AAB from Codemagic and publish to a Google Play track |
| Get the highest version code across all (or specified) tracks |
| Promote a release between tracks (internal → alpha → beta → production) |
| Expand, halt, or resume a staged rollout by setting the user fraction |
| Upload an AAB to Internal App Sharing for instant QA install links |
| Fetch current Google Play store listing for a language (title, descriptions) |
| Update Google Play store listing for a language — only provided fields are changed |
| Download screenshots from URLs and upload to Google Play for a language and device type |
| Submit the data safety declaration CSV (exported from Play Console) — re-upload when data practices change |
| List recent user reviews with optional star rating filter (e.g. 1–2 stars only); includes developer reply status and review IDs |
| Post or update a developer reply to a user review (max 350 characters) |
Testing
Tool | Description |
| 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 |
Cross-store
Tool | Description |
| Validate localized release notes — checks BCP-47 locale codes and char limits (Android: 500, iOS: 4000) |
| 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 for a team or app |
| Create a new variable group (team or app scoped) |
| Add a non-secret variable to a group |
| List variables in a group (required to get IDs before updating or deleting) |
| Update the name or value of a variable by ID |
| Delete a variable from a group by ID |
YAML
Tool | Description |
| Validate a |
| Get a starter |
| List all supported project types for |
| Detect the project type from a repository file listing — returns the recommended template and debug template to start with |
Prompts
Prompt | Description |
| Zero to first debug build — add repo, get template, trigger build, configure webhook |
| Signed AAB from build to Google Play — build number, template, trigger, publish, promote |
| Signed IPA from build to App Store — build number, template, trigger, TestFlight, metadata, validate, submit, release |
| One-time setup checklist for first-time iOS publishers — Apple Developer enrollment, app record, age rating, privacy labels, then hands off to /ios_release |
| 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 toolThe 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_buildaccepts an optionalyaml_contentparameter. 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_NUMBERand$VERSION_NAMEas plain variables — no store lookups happen inside the YAML. The agent determines the correct values vialist_asc_buildsorlist_google_play_tracksbefore triggering, then passes them through thevariablesparameter oftrigger_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_applicationsandlist_buildsaccept an optionalteam_id. Without it, they operate on the authenticated user's personal account.Variable groups and secrets:
add_variableonly 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 intrigger_buildvia thegroupsparameter.
Available Tools
63 toolsadd_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.
| Name | Required | Description | Default |
|---|---|---|---|
| repository_url | Yes | SSH or HTTPS URL of the Git repository | |
| team_id | No | Team ID to add the app to |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| Yes | Tester email address | ||
| group | No | Beta group name or ID to add the tester to (from list_testflight_groups) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | The variable group ID to add the variable to | |
| name | Yes | Variable name, e.g. FLUTTER_VERSION | |
| value | Yes | Variable value |
TDQS
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.
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.
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.
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.
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.
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_buildADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | The Codemagic build ID to cancel (from trigger_build or list_builds) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Target platform | |
| app_id | No | App Store Connect app ID — required for iOS (from list_asc_apps) | |
| version | No | App Store version string e.g. '1.2.0' — required for iOS | |
| package_name | No | Android package name e.g. com.example.myapp — required for Android | |
| language | No | BCP-47 language for listing check, Android only (default: en-US) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_url | Yes | The artifact url from a build artifact (returned by get_build or wait_for_build) | |
| expires_in_hours | No | How many hours until the public URL expires (default: 24, max: practical limit is a few days) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| name | Yes | Display name for the group e.g. 'External Beta Testers' | |
| internal | No | Create an internal group (Apple org members only, no beta review required). Default: false (external group). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the variable group | |
| team_id | No | Team ID to create the group under | |
| app_id | No | App ID to create the group under |
TDQS
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.
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.
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.
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.
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.
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_cacheADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The Codemagic app ID | |
| cache_id | No | Specific cache ID to delete (from list_caches). If omitted, all caches are deleted. |
TDQS
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.
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.
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.
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.
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.
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_variableADestructive
Delete a variable from a Codemagic variable group. The variable_id comes from list_variable_groups. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | The variable group ID | |
| variable_id | Yes | The variable ID to delete (from list_variable_groups) |
TDQS
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.
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.
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.
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.
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.
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_webhookBDestructive
Delete a webhook subscription from a Codemagic app
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The Codemagic app ID | |
| webhook_id | Yes | The webhook ID to delete (from list_webhooks) |
TDQS
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.
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.
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.
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.
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.
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_typeARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_paths | Yes | File paths in the repository relative to the root. Include at least two directory levels for best results. | |
| package_json_content | No | Content of package.json if present — used to detect React Native vs Ionic by inspecting dependencies |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| language | No | BCP-47 language tag e.g. en-US, fr-FR | en-US |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | The build ID |
TDQS
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.
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.
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.
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.
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.
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_logsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | The Codemagic build ID | |
| step_name | No | Fetch logs for this specific step name only. If omitted, logs are fetched for failed steps (or none if the build succeeded). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| tracks | No | Comma-separated track names to check e.g. 'production,beta'. Defaults to all tracks. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | Codemagic build ID | |
| artifact_url | No | Direct 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
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.
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.
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.
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.
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.
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_urlARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The Codemagic app ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_type | Yes | The project type to get a template for. Call list_yaml_template_types for all valid values. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Team ID to list apps for. If omitted, lists apps for the authenticated user. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team ID to list builds for | |
| app_id | No | Filter by Application ID | |
| status | No | Filter by build status | |
| branch | No | Filter by git branch | |
| workflow_id | No | Filter by workflow ID | |
| limit | No | Maximum number of builds to return (default 50, max 500). Use filters to narrow results instead of raising this. |
TDQS
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.
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.
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.
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.
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.
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_cachesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The Codemagic app ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name, e.g. com.example.myapp |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| max_results | No | Maximum number of reviews to return (default 50). Pages of 100 are fetched transparently until the limit is reached. | |
| max_star_rating | No | Filter to reviews at or below this star rating — e.g. 2 returns only 1 and 2 star reviews | |
| translation_language | No | BCP-47 language code to translate review text into (e.g. en-US). Useful for apps with non-English reviews. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name, e.g. com.example.myapp |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | If true, return all supported device types instead of just the common ones |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | No | Team ID to list groups for | |
| app_id | No | App ID to list groups for |
TDQS
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.
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.
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.
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.
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.
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_variablesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | The variable group ID (from list_variable_groups) |
TDQS
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.
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.
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.
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.
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.
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_webhooksARead-only
List webhook subscriptions configured for a Codemagic app
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The Codemagic app ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The application ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | Map of BCP-47 locale code to release note text, e.g. { 'en-US': 'Bug fixes and performance improvements.' } | |
| platform | Yes | Target platform — determines which char limit applies. 'both' uses the stricter Android limit of 500. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| source_track | Yes | Track to promote from | |
| target_track | Yes | Track to promote to | |
| user_fraction | No | Staged rollout fraction 0.0–1.0 (e.g. 0.1 = 10%). Omit for full rollout. | |
| release_status | No | Override release status. Default: completed (full rollout) or inProgress (staged). |
TDQS
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.
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.
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.
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.
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.
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_versionADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| review_id | Yes | Review ID from list_google_play_reviews | |
| reply_text | Yes | Developer reply text — max 350 characters |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| csv | Yes | Raw CSV string from Play Console data safety export (5 columns: question ID, response ID, TRUE/FALSE value, requirement type, human-readable label) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| language | No | BCP-47 language tag e.g. en-US, fr-FR | en-US |
| title | No | App title (max 50 characters) | |
| short_description | No | Short description shown in search results (max 80 characters) | |
| full_description | No | Full description shown on the store listing page (max 4000 characters) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| uses_non_exempt_encryption | Yes | Set to false for apps that only use HTTPS/TLS (most apps). Set to true only for apps with custom proprietary encryption. | |
| build_id | No | Specific build ID to update — defaults to the latest build |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' | |
| locale | No | BCP-47 locale code e.g. en-US, fr-FR | en-US |
| name | No | App name (app-info, max 30 characters) | |
| subtitle | No | App subtitle shown below the name (app-info, max 30 characters) | |
| privacy_policy_url | No | URL to the app's privacy policy (app-info) | |
| description | No | Full app description (version, max 4000 characters) | |
| keywords | No | Comma-separated keywords for App Store search (version, max 100 characters) | |
| promotional_text | No | Promotional text shown above the description (version, max 170 characters) | |
| marketing_url | No | URL to a marketing page for this version (version) | |
| support_url | No | URL to the app's support page (version) | |
| whats_new | No | What's new text for this version (version, max 4000 characters) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' | |
| action | Yes | create: set up phased rollout before submission | pause: halt rollout | resume: continue after pause | complete: release to all users now |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name | |
| track | Yes | The track with the staged rollout | |
| version_code | Yes | Version code of the release to update (from list_google_play_tracks) | |
| rollout_fraction | Yes | New rollout fraction 0.0–1.0 (e.g. 0.5 = 50%) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' | |
| locale | No | BCP-47 locale e.g. 'en-US', 'de-DE', 'zh-Hans' (default: en-US) | en-US |
| whats_new | No | What's New in this version (required by Apple for every release) | |
| description | No | Full app description | |
| keywords | No | Comma-separated search keywords | |
| promotional_text | No | Promotional text shown above the description | |
| support_url | No | Support URL | |
| marketing_url | No | Marketing URL |
TDQS
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.
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | The App Store Connect build ID (from list_asc_builds) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' | |
| build_id | Yes | Build UUID from upload_build_to_asc or list_asc_builds |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The application ID | |
| workflow_id | Yes | The workflow ID to run | |
| branch | No | Git branch to build | |
| tag | No | Git tag to build | |
| variables | No | Environment variables to inject into the build | |
| groups | No | Environment variable groups to include | |
| labels | No | Labels to attach to the build | |
| yaml_content | No | A 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_type | No | Override 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | The variable group ID | |
| variable_id | Yes | The variable ID to update (from list_variable_groups) | |
| name | Yes | New variable name | |
| value | Yes | New variable value |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | The Android package name e.g. com.example.myapp | |
| language | No | BCP-47 language tag e.g. en-US, fr-FR | en-US |
| image_type | No | Image type: phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, tvScreenshots, wearScreenshots | phoneScreenshots |
| screenshot_urls | Yes | URLs of screenshot images to upload, in display order | |
| replace | No | If true, delete all existing screenshots of this type before uploading |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| ipa_url | Yes | The IPA download URL from a Codemagic build artifact |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' | |
| locale | No | BCP-47 locale code e.g. en-US, fr-FR | en-US |
| device_type | Yes | Device type string e.g. IPHONE_65, IPAD_PRO_3GEN_129 (from list_ios_screenshot_types) | |
| screenshot_urls | Yes | URLs of screenshot images to upload, in display order | |
| replace | No | If true, delete all existing screenshots for this device type before uploading |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| aab_url | Yes | The AAB download URL from a Codemagic build artifact | |
| track | Yes | The Google Play track to publish to | |
| release_name | No | Name of the release. If omitted, generated from the AAB version name. | |
| release_notes | No | What's new in this release, as plain text | |
| release_notes_language | No | BCP-47 language tag for the release notes (default: en-US) | |
| draft | No | Upload as a draft release instead of publishing immediately |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID | |
| ipa_url | Yes | The IPA download URL from a Codemagic build artifact | |
| beta_group | No | TestFlight beta group name to distribute to after upload |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | The App Store Connect app ID (from list_asc_apps) | |
| version | Yes | App Store version string e.g. '1.2.3' |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| yaml_content | Yes | The full contents of a codemagic.yaml file |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | The Codemagic build ID to check |
TDQS
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.
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.
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.
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.
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.
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.
63 tool updates
v0.1.0- First observed
add_application - First observed
add_testflight_tester - First observed
add_variable - First observed
cancel_build - First observed
check_publish_readiness - First observed
create_public_artifact_url - First observed
create_testflight_group - First observed
create_variable_group - First observed
delete_cache - First observed
delete_variable - First observed
delete_webhook - First observed
detect_project_type - First observed
get_android_store_listing - First observed
get_asc_release_status - First observed
get_asc_review_status - First observed
get_build - First observed
get_build_logs - First observed
get_ios_store_listing - First observed
get_latest_build_number - First observed
get_test_results - First observed
get_webhook_url - First observed
get_yaml_template - First observed
list_applications - First observed
list_asc_apps - First observed
list_asc_builds - First observed
list_builds - First observed
list_caches - First observed
list_google_play_bundles - First observed
list_google_play_reviews - First observed
list_google_play_tracks - First observed
list_ios_screenshot_types - First observed
list_teams - First observed
list_testflight_groups - First observed
list_variable_groups - First observed
list_variables - First observed
list_webhooks - First observed
list_workflows - First observed
list_yaml_template_types - First observed
ping - First observed
prepare_release_notes - First observed
promote_google_play_release - First observed
release_version - First observed
reply_to_google_play_review - First observed
set_android_data_safety - First observed
set_android_store_listing - First observed
set_export_compliance - First observed
set_ios_store_listing - First observed
set_phased_release - First observed
set_rollout_fraction - First observed
set_version_metadata - First observed
share_app_internally - First observed
submit_beta_review - First observed
submit_for_app_store_review - First observed
trigger_build - First observed
update_variable - First observed
upload_android_screenshots - First observed
upload_build_to_asc - First observed
upload_ios_screenshots - First observed
upload_to_google_play - First observed
upload_to_testflight - First observed
validate_app_submission - First observed
validate_codemagic_yaml - First observed
wait_for_build
TDQS
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).
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.
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.
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
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
Set up & manage mobile CI/CD on Bitrise: build, test, distribute iOS, Android, Flutter, RN apps.
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
AI-agent operations for App Store Connect and Google Play, with approval before live publishing.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Related MCP Servers
- AlicenseBqualityDmaintenanceTransforms AI assistants into mobile development powerhouses with 36 tools for Flutter, Android, and iOS development, including intelligent device management, automated builds, testing, and deployment workflows.31227MIT
- AlicenseAqualityBmaintenanceA 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.252MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Codemagic CI/CD API, enabling app management, build operations, artifact handling, cache control, and team management through natural language.133MIT
- AlicenseNot gradedqualityDmaintenanceAn 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.91MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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