Agent C — App Store Screenshots
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
AI-designed App Store screenshot sets from your app's screens, uploaded to App Store Connect.
| Author | io.theagentc |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 247 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Agent C — App Store Screenshots": {
"url": "https://api.theagentc.io/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (10)
list_appsread-onlyThe user's apps in Agent C, with how many screenshots each has uploaded.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
add_appAdd an app by its App Store link (imports name, icon, description), or by name if it isn't released yet. Importing a live app takes ~10-30s; poll list_apps until status is 'ready'.
Parameters:
name— string — Only for apps not on the App Store yetapp_store_url— string — e.g. https://apps.apple.com/us/app/…/id123456789
Hints: read-only no · destructive no · idempotent not declared · open-world yes
get_upload_linkBest way to upload screenshots from files on disk: returns a one-time URL (valid 30 min) to POST the image files to with curl (multipart field 'files', up to 10 per request). Use this instead of upload_screenshots when you have a shell, so large images don't pass through the conversation.
Parameters:
app_id(required) — string — app_id from list_apps / add_appreplace— boolean — First upload clears the app's old screenshots. Use false to add iPad / iPhone Duo captures next to the iPhone ones.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
upload_screenshotsUpload 1-10 raw screenshots of the app (plain captures of the real UI, ideally 4-10, in the order you'd like them considered). Each item is base64 image data (PNG/JPEG) or a public https URL. By default replaces the app's screenshot library — pass replace=false when adding iPad or iPhone Duo captures next to the iPhone ones.
Parameters:
app_id(required) — string — app_id from list_apps / add_appimages(required) — arrayreplace— boolean
Hints: read-only no · destructive no · idempotent not declared · open-world yes
design_setClaude art-directs a full App Store screenshot set from the uploaded screenshots: opening shot, headline per slide, close-ups, palette. Returns watermarked preview images, the slide list and a link to open it in the Agent C studio. Takes ~40-60 seconds.
Parameters:
app_id(required) — string — app_id from list_apps / add_appfocus— string — Optional: what to emphasize (feature, audience, angle).device— string — Screenshot size: iPhone 6.9" (1320x2868), 6.5" (1284x2778), iPad 13" (2064x2752), or the optional iPhone Duo inner (2007x2853) / outer (1398x2034) displays. iPad and Duo need the app's real iPad / Duo simulator screenshots uploaded first (replace=false); iPhone-only apps should skip iPad. Duo is export-only: App Store Connect's API doesn't accept Duo uploads yet, so send_to_app_store refuses Duo sets.opener— string — Opening slide: hand holding the phone, big app icon, lifestyle photo, or a plain phone. auto lets Claude pick.include— string — What to make: the screenshot set, screenshots + the App Store product page header (iOS 27), or only the header
Hints: read-only no · destructive no · idempotent not declared · open-world yes
get_setread-onlyCurrent slides, unlock status and fresh preview images for a set.
Parameters:
set_id(required) — string — set_id returned by design_set
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
edit_setChange one slide (headline, subline, screenshot, layout, position, or remove it), the opening shot, the device size, or the App Store header (header_*). Re-renders previews. Free.
Parameters:
set_id(required) — string — set_id returned by design_setslide— integer — 1-based slide number to changedevice— string — Screenshot size: iPhone 6.9" (1320x2868), 6.5" (1284x2778), iPad 13" (2064x2752), or the optional iPhone Duo inner (2007x2853) / outer (1398x2034) displays. iPad and Duo need the app's real iPad / Duo simulator screenshots uploaded first (replace=false); iPhone-only apps should skip iPad. Duo is export-only: App Store Connect's API doesn't accept Duo uploads yet, so send_to_app_store refuses Duo sets.layout— stringopener— stringremove— booleaninclude— string — What to make: the screenshot set, screenshots + the App Store product page header (iOS 27), or only the headermove_to— integersubline— stringheadline— string — Wrap words in *stars* to color themscreenshot— integer — 1-based screenshot to show on this slideheader_layout— string — Header visual: lifestyle photo, three phones, big icon, or a hand holding the phoneheader_subline— stringheader_headline— string — App Store header headline (*stars* color words). No prices, URLs, platform names or #1 claims.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
unlock_setUnlock clean, full-resolution files for a set. Uses a free unlock if the user has one; otherwise returns a $9.99 Stripe checkout link the USER must open and pay. Studio subscribers are already unlocked. Ask the user before calling.
Parameters:
set_id(required) — string — set_id returned by design_set
Hints: read-only no · destructive no · idempotent not declared · open-world yes
export_setRender the unlocked set at exact App Store pixels without watermark and return download links (valid 7 days). Includes the product page header (3840x1646) and search-results image (3840x2560) when the set has a header.
Parameters:
set_id(required) — string — set_id returned by design_set
Hints: read-only no · destructive no · idempotent not declared · open-world yes
send_to_app_storedestructiveUpload the unlocked set into the app's editable version in App Store Connect, replacing that language's screenshots for this device size (not iPhone Duo — export_set those). Never submits for review. Requires the user to have connected App Store Connect in Agent C. If the app has no editable version, ask the user, then call with create_version=true.
Parameters:
set_id(required) — string — set_id returned by design_setlocale— stringcreate_version— boolean
Hints: read-only no · destructive yes · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.