Skip to main content
Glama
swlittles

App Store Connect MCP

by swlittles

Upload screenshots

upload_screenshots
DestructiveIdempotent

Upload screenshots to an App Store Connect version's screenshot set, replacing or appending images in display order. Preview changes with a dry run, then apply after confirmation.

Instructions

Uploads images to one screenshot set of the version being prepared. mode "replace" makes the set exactly these files in this order (the old ones are deleted only after the new ones are processed); mode "append" adds them at the end. Files already in the set (same MD5) aren't uploaded again, so re-running is safe.

Destructive: dry_run defaults to true and returns the plan. Show it to the user, then call again with dry_run: false. Needs ASC_WRITE=1.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appNoApp ID, bundle ID or exact app name. Defaults to ASC_APP_ID, or to the only app the key can see.
modeNoreplace
filesNoAbsolute image paths, in display order.
folderNoFolder of .png/.jpg files, used in natural filename order (1, 2, …, 10). Use instead of files.
localeNoLocalization, e.g. en-US. Defaults to the app's primary locale.
dry_runNoDefaults to true: return the plan without changing anything. Call again with dry_run: false to apply it.
versionNoApp Store version string (e.g. "1.2"), "editable" (the version being prepared; the default) or "live".
platformNoPlatform. Defaults to IOS.
display_typeYesScreenshot display type, e.g. APP_IPHONE_67 (6.9" iPhone, 1320×2868), APP_IPHONE_65, APP_IPAD_PRO_3GEN_129 (13" iPad, 2064×2752), APP_DESKTOP, APP_APPLE_TV, APP_APPLE_VISION_PRO, APP_WATCH_ULTRA.
wait_minutesNoMinutes to wait for Apple to process uploaded images (usually under a minute). If time runs out, re-run the same call to continue.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, but the description adds real behavioral context beyond them: old images are deleted only after the new ones are processed (atomicity), MD5-based dedup makes re-runs safe (substantiates idempotency), and it requires ASC_WRITE=1. It also flags the destructive nature and the two-step dry_run confirmation pattern. 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.

Conciseness4/5

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

Front-loaded with the core action, then behavior, then the safety workflow. Two tight paragraphs with little waste. Minor redundancy: dry_run's default and behavior are restated from the schema, and the destructive sentence partially overlaps the annotation.

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 10-parameter mutation tool with no output schema, the description covers the essentials: what it does, ordering/atomicity, dedup, auth requirement, and the required dry_run confirmation loop. It leaves some parameters (display_type, wait_minutes, version/platform values) to the well-covered schema, which is acceptable given 90% coverage, but does not describe the plan object returned by dry_run.

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 90%, so the baseline is 3, but the description adds genuine meaning: it explains mode's replace-vs-append semantics (replace makes the set exactly these files in order; append adds at the end) and why re-running is safe (MD5 dedup on the files parameter). This meaningfully complements the enum without restating it.

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

Purpose4/5

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

States a specific verb+resource+scope: "Uploads images to one screenshot set of the version being prepared." An agent can tell it operates on a whole set rather than a single slot, which helps versus replace_screenshot. However, it never names or contrasts with the closest siblings (replace_screenshot, reorder_screenshots, list_screenshots), so full sibling differentiation is left to inference.

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 concrete workflow guidance: dry_run defaults to true, show the plan to the user, then re-call with dry_run: false, and explains that re-running is safe. It also documents when to use replace vs append. It lacks an explicit "use this instead of replace_screenshot when..." routing, so it stays at clear-context rather than explicit-alternatives.

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