Skip to main content
Glama

upload_ipa

Destructive

Uploads a local iOS .ipa to App Store Connect through Apple's Build Uploads API; provide version and build number, then poll upload status before assigning the build.

Instructions

MUTATES App Store Connect: upload a local iOS .ipa through Apple Build uploads API. Provide the IPA version and build number. Returns upload IDs; processing is asynchronous, so poll get_build_upload and list_builds before assigning the build.

Input Schema

NameRequiredDescriptionDefault
appIdYes
versionYes
filePathYes
buildNumberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds behavior the annotations cannot convey: the operation is asynchronous, returns upload IDs, and the build must not be assigned until polling with get_build_upload/list_builds succeeds. It omits auth requirements and what happens on a failed/partial upload.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the mutating nature of the call, then inputs, then the async follow-up workflow. No filler or redundant restatement of the tool name.

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

Completeness3/5

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

There is no output schema, and the description usefully explains that the return is upload IDs consumed asynchronously, which is the key missing piece. However, for a four-parameter destructive mutation with zero schema documentation, the undefined appId and filePath semantics leave an agent guessing before invocation.

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

Parameters2/5

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

Schema description coverage is 0% across four required parameters, so the description carries the full burden. It only clarifies 'version' and 'buildNumber' by naming them; 'appId' and 'filePath' are left undefined, with no indication of path format, absolute vs relative, or whether the file must be pre-staged locally.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'MUTATES App Store Connect: upload a local iOS .ipa through Apple Build uploads API.' That is unambiguous and clearly separable from upload_screenshot or the create_* siblings in the same namespace.

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

Usage Guidelines4/5

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

It states the prerequisite inputs ('Provide the IPA version and build number') and gives explicit downstream routing: 'poll get_build_upload and list_builds before assigning the build.' It does not state when not to use this tool or any auth/permission prerequisites, so it falls short of a full when/when-not/alternatives treatment.

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