Skip to main content
Glama

BCD — Bridge Control Delegate

ios_testflight

Destructive

Archive a scheme and upload the build to App Store Connect for TestFlight, with an App Store Connect API key kept on this Mac (keyId and issuerId; the issuer is remembered after the first upload). An uploaded build cannot be taken back and its build number is used up: confirm with the user first. buildNumber defaults to a UTC timestamp so every upload is new. Runs as a background job and returns its jobId; poll ios_build_status with it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyIdNoApp Store Connect API key ID; the key file stays in ~/.appstoreconnect/private_keys. With it, Xcode may update signing profiles
schemeYes
teamIdNoApple Developer team ID for signing, when the project has none (DEVELOPMENT_TEAM)
projectYes.xcodeproj or .xcworkspace path from ios_projects
deviceIdNoComputer name or id from list_devices. Optional with one computer online or a default set.
issuerIdNoApp Store Connect issuer ID; remembered on this Mac after the first TestFlight upload
buildNumberNoSets CURRENT_PROJECT_VERSION
configurationNo
workSessionIdNoWork session from create_work_session. Pass the same ID on every call in this conversation; omit for legacy unscoped work.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and openWorldHint=true, and the description goes well beyond them: the upload is irreversible, the build number is consumed, user confirmation is required, credentials live in ~/.appstoreconnect and the issuer is remembered after first use, and the call runs asynchronously returning a jobId. This is exactly the behavioral context annotations cannot convey.

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

Conciseness5/5

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

Four tightly packed sentences, front-loaded with the action, then the irreversible side effect, then the default, then the async return contract. No filler and no repetition of schema text.

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

Completeness5/5

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

For a 9-parameter destructive async tool with no output schema, the description covers the irreversibility, the credential model, the buildNumber default, the user-confirmation requirement, and the return/polling contract. Nothing an agent needs to invoke it safely is missing.

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

Parameters4/5

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

Schema coverage is 78%, so the baseline is 3, but the description adds real meaning: buildNumber defaults to a UTC timestamp so each upload is unique (the schema only says it sets CURRENT_PROJECT_VERSION), and it explains that issuerId is persisted after the first upload. Two parameters (configuration, workSessionId) get no description-level elaboration, which keeps this from a 5.

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

Purpose5/5

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

States a precise compound action — archive a scheme then upload to App Store Connect for TestFlight — which cleanly separates it from ios_archive, ios_build, ios_test and ios_build_status. The verb+resource+destination are all explicit, so an agent can route to it without opening the schema.

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

Usage Guidelines4/5

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

Gives a concrete prerequisite behavior ('confirm with the user first') and routes the agent to the follow-up sibling ('poll ios_build_status with it'). It also explains when to rely on the default buildNumber. It stops short of an explicit when-to-use-this-vs-ios_archive rule, so it is strong but not fully prescriptive.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources