Skip to main content
Glama

Preview Upload

preview_upload
DestructiveIdempotent

Upload Fastlane preview images to App Store Connect iPhone preview sets via asc CLI after preview checks pass; dry-run by default and requires approval for live uploads.

Instructions

Upload fastlane/app_previews// to the editable version's iPhone preview sets via the asc CLI (needs human approval unless dry_run).

Use when: preview_check is clean and self-review passed. dry_run=true (default) sends nothing. MD5-idempotent; refuses while preview_check has problems. Returns: {ok, uploaded/planned: [...], dry_run} or an approval_required refusal.

Input Schema

NameRequiredDescriptionDefault
app_dirYesAbsolute path to the app project directory (contains app.spec.json), e.g. /Users/me/Apps/MyApp.
dry_runNoIf true (default) nothing is changed or sent and the exact plan/command is returned; false performs the live action.
localesNoLocale codes to upload; omit for every locale in fastlane/app_previews/.
replaceNoIf true, replace preview sets that already exist on App Store Connect.
approval_idNoApproval id from a previous approval_required refusal; omit on the first call. The human approves out-of-band with `appfactory approve <id>`, then call again with the same arguments and this id.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.1.5
    • addedInput schema / properties / app_dir / description
      Added value: +"Absolute path to the app project directory (contains app.spec.json), e.g. /Users/me/Apps/MyApp."
    • addedInput schema / properties / approval_id / description
      Added value: +"Approval id from a previous approval_required refusal; omit on the first call. The human approves out-of-band with `appfactory approve <id>`, then call again with the same arguments and this id."
    • addedInput schema / properties / dry_run / description
      Added value: +"If true (default) nothing is changed or sent and the exact plan/command is returned; false performs the live action."
    • addedInput schema / properties / locales / description
      Added value: +"Locale codes to upload; omit for every locale in fastlane/app_previews/."
    • addedInput schema / properties / replace / description
      Added value: +"If true, replace preview sets that already exist on App Store Connect."
  2. First observedv0.1.1

TDQS

A4.6/5.0
Behavior5/5

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

Goes beyond the annotations (destructiveHint, idempotentHint, openWorldHint) by disclosing the human-approval gate, the MD5-idempotency mechanism, the refusal condition, and the return/refusal shapes. The approval_required refusal path in particular is information the 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.

Conciseness4/5

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

Front-loaded with the action, then 'Use when', dry_run, idempotency, and return shape in tight form. Every sentence earns its place, though the opening sentence is dense enough to require a second read.

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 destructive, approval-gated upload tool with five parameters, the description supplies preconditions, default safety behavior, refusal handling, and the round-trip approval workflow. An output schema exists, yet the description still frames the result usefully for planning.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents app_dir, dry_run, locales, replace, and approval_id in detail. The description reinforces the dry_run default and idempotency but does not add syntax or semantics beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource — uploads fastlane/app_previews/<locale>/ to the editable version's iPhone preview sets — and names the mechanism (asc CLI). It is clearly distinguishable from siblings like preview_check, preview_brief, and preview_review_log.

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

Usage Guidelines5/5

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

Gives an explicit precondition ('Use when: preview_check is clean and self-review passed'), an exclusion ('refuses while preview_check has problems'), and the safe default ('dry_run=true (default) sends nothing'). An agent knows exactly when this tool is and isn't appropriate.

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

Deploy Server

Other Tools