Skip to main content
Glama

Install App Store signing profiles

setup_app_store_signing
Destructive

Set up App Store binary signing without cloud-signing permission: download and install IOS_APP_STORE provisioning profiles, then write a manual-signing ExportOptions.plist for build_and_archive.

Instructions

Prepare App Store binary signing without the cloud-signing permission many API keys lack: downloads the app's IOS_APP_STORE provisioning profiles (app + extensions), installs them, and writes a manual-signing ExportOptions.plist for build_and_archive. Needs an Apple Distribution certificate already in the keychain. Pro feature.

Input Schema

NameRequiredDescriptionDefault
app_idYesApp Store Connect app ID
output_plistNoWhere to write ExportOptions.plist (default ./ExportOptions.plist)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true, and the description adds real context: a prerequisite (Apple Distribution certificate in keychain), a Pro gate, and the side effects of installing profiles. It does not warn that writing output_plist will overwrite an existing file at that path, which is the specific destruction an agent should anticipate.

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

Conciseness4/5

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

A single dense sentence-set, front-loaded with the tool's purpose and constraints in a logical order (why, what, prerequisite, availability). Every clause carries information; the only mild cost is a long first clause before the actions.

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

Completeness4/5

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

For a two-parameter mutation tool with no output schema, the description covers the goal, ordering relative to build_and_archive, prerequisites, and the Pro requirement. The gap is the absence of any statement about overwrite behavior or what the tool returns on success.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented, including the default for output_plist. The description mentions the plist file and its role but adds no format or syntax detail beyond the schema, so the 3 baseline applies.

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

Purpose5/5

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

States specific verbs and resources: downloads IOS_APP_STORE provisioning profiles (app + extensions), installs them, and writes a manual-signing ExportOptions.plist. It also situates itself in the workflow by naming build_and_archive, so an agent can distinguish it from generic release/upload siblings.

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?

Explains the condition that selects this tool – prepare signing without the cloud-signing permission many API keys lack – which implicitly tells the agent when it is unnecessary (when cloud signing is available) and that it precedes build_and_archive. No explicit 'do not use' clause or named alternative tool, so not a full 5.

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