appdesigns App Store screenshots
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
App Store and Google Play screenshots MCP: your agent captures the app, you edit and export. Free.
| Author | click.appdesigns |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 2255 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"appdesigns App Store screenshots": {
"url": "https://appdesigns.click/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (19)
get_workflowread-onlyUse this when you are working in an app's code and can run commands (a coding agent) and the user wants App Store or Google Play screenshots of that app. Returns the full appdesigns recipe for one platform and store, as markdown: how to pick the screens, how to check and populate demo data with the user's consent, the exact capture commands (simulator or emulator, status bar, deep links), the caption rules, and the upload and hand-off steps. Not for a chat without a terminal, where the screenshots come as attachments instead. Read-only; changes nothing.
Parameters:
platform(required) — string — How the app is built: ios (Swift or Objective-C), android (Kotlin or Java), expo, react-native, flutter, or web (a web app or PWA).store— string — Which store the screenshots are for.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_devicesread-onlyUse this when the user asks which devices, frame colours or canvas sizes appdesigns offers, or before choosing a non-default device for a screenshot set. Lists them for one store, with the defaults used when you leave them out. The App Store gets Apple devices only; Google Play gets Android phones. Read-only.
Parameters:
store— string — Which store the screenshots are for.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_projectUse this when you can run shell commands on the user's machine and have their app's screenshots as local files (a coding agent). Not for a chat without a terminal, such as ChatGPT, where the upload command cannot run. Starts a screenshot set: 1 to 6 screenshots in store order, each with a screen name and a headline. Returns a project_handle and one upload command (bash and PowerShell forms) that sends every screenshot straight to storage; run it once, then call finish_project with the handle. Upload and call finish_project within 1 hour (an unfinished project lapses then); a finished one waits 72 hours to be opened. Nothing is public and no account is needed; the user saves the set to their account when they open the link finish_project returns.
Parameters:
project_name(required) — string — The app's name. It becomes the project name in the user's appdesigns library.screens(required) — array — One entry per screenshot, in the order the store should show them. The first sells the app.fold— string — iPhone Duo only: inner-open (Unfolded, the open inner display), outer-closed (Cover, the folded cover display) or outer-open (Open back, the open phone from behind, showing its cover display). The editor's names work too. Leave it out for the display the canvas is.store— string — Which store the set is for.device— string — A device id from list_devices. Defaults to iphone-17-pro-max for the App Store and pixel-11-pro for Google Play.project_id— string — A project_id from list_projects (the user signed in): the new asset is saved into that saved project of theirs. Use it, not same_project_as, to add to something the user already saved.canvas_size— string — A canvas size from list_devices, as WIDTHxHEIGHT, portrait or landscape (2868x1320 for a landscape iPhone set). Leave it out and finish_project takes the store size the screenshots are (a landscape capture makes a landscape set), else the store default (1320x2868 for iPhone, 2048x2732 for iPad, 2007x2853 for iPhone Duo, 1080x1920 for Play).frame_color— string — A colour id of that device from list_devices. Leave it out to pick one that stands out from the background.orientation— string — Which way up the set is, when canvas_size does not say: landscape for an app that runs in landscape (most games), and the phone is drawn on its side. Leave it out to follow the screenshots.same_project_as— string — The project_handle or design_handle of an earlier asset from this conversation (screenshots, a header...). The user's save then files this one in the same project, once they have saved that one.background_color— string — #RRGGBB. Use the app's brand or accent colour if you can find it in the code. Leave it out for a neutral light background.
Hints: read-only no · destructive no · idempotent no · open-world no
finish_projectdestructiveChecks that every screenshot of a project was uploaded and is a real PNG or JPEG, then returns the link that opens the set in the appdesigns editor, where the user saves it to their account and can edit and export it. Calling it again returns a fresh link and retires the previous one.
Parameters:
project_handle(required) — string — The project_handle create_project returned.
Hints: read-only no · destructive yes · idempotent no · open-world no
update_projectdestructiveChanges a screenshot set create_project made, before the user saves it: rewrite any screen's screen name or headline, or change the background colour, the frame colour or the device. The uploaded screenshots stay as they are. Returns new previews and warnings; the open_url finish_project gave then opens the new version. For anything more (the phone's place, size or fold, text styles, pieces, another canvas), use edit_asset with this project_handle as handle, no sign-in needed; once it has changed the set, keep using edit_asset. A set the user already saved changes with edit_asset by asset_id.
Parameters:
project_handle(required) — string — The project_handle create_project returned.device— string — A device id from list_devices that suits the set's canvas.screens— array — Only the screens and captions that change.frame_color— string — A colour id of the device from list_devices.background_color— string — #RRGGBB.
Hints: read-only no · destructive yes · idempotent yes · open-world no
make_screenshot_setUse this when the user has attached screenshots of their own app in this conversation and wants App Store or Google Play screenshots made from them: store listing images, framed screenshots or app mockups for the App Store or Play Store. Each screenshot is put in a real device frame on a background with the screen name and headline you write, at the store's exact size, and open_url opens the set as an editable project in the appdesigns editor. Takes 1 to 6 screenshots (PNG, JPEG, WebP or GIF, at most 20 MB each, all the same way up; landscape ones make a landscape App Store set) in store order, with one screens entry per screenshot in the same order. Each must be a raw capture of the app as the device shows it. Do not use it for images that already have a device frame, a background or marketing text (the user needs to attach the raw screenshots instead), to invent app screens that do not exist, or when nothing is attached (the user needs to attach screenshots first). The screenshots are stored privately so open_url can load them; it works for 72 hours or until the user saves the set to their account. Nothing is public and no account is needed to make the set.
Parameters:
project_name(required) — string — The app's name. It becomes the project name in the user's appdesigns library.screens(required) — array — One entry per attached screenshot, in the same order as screenshots. The first sells the app.screenshots(required) — array — The screenshots the user attached, in store order, one per screens entry.store— string — Which store the set is for: app_store for iPhone or iPad screenshots, play for Android.device— string — A device id from list_devices. Defaults to iphone-17-pro-max for the App Store and pixel-11-pro for Google Play.canvas_size— string — A canvas size from list_devices, as WIDTHxHEIGHT. Leave it out for the store default, or the store size the screenshots are; landscape screenshots make a landscape App Store set.frame_color— string — A colour id of that device from list_devices. Leave it out to pick one that stands out from the background.orientation— string — Which way up the set is, when canvas_size does not say: landscape for an app that runs in landscape (most games), and the phone is drawn on its side. Leave it out to follow the screenshots.background_color— string — #RRGGBB, for example the app's brand colour as seen in the screenshots. Leave it out for a neutral light background.
Hints: read-only no · destructive no · idempotent no · open-world no
search_libraryread-onlyUse this when a design or a saved asset needs a ready-made piece rather than art you draw: SF Symbols, emoji, 3D shapes, glows and blobs, seasonal art, store badges, ratings, payment and social marks and more (a few thousand pieces). Returns the best matches with their path, which a library layer takes (create_design and edit_asset), and one image showing them in order, left to right then down. With no match it lists the categories. Read-only.
Parameters:
query(required) — string — Words for what the piece shows, such as "heart", "sparkle", "3d cube", "apple pay", "christmas".limit— integer — How many to return, best first.category— string — Keep one category, such as sf-symbols, emoji, 3d, decorative, seasonal, badges or shapes.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_design_guideread-onlyUse this when the user wants App Store listing art (an animated product page header, a search result, In-App Event art) or a marketing image (a launch post for X, LinkedIn or Instagram, a link preview, a Play feature graphic) designed for their app and you will draw it yourself. Returns the appdesigns recipe for that asset as markdown: its size and what crops or covers it, the layer format create_design takes (phone frames included), the moves, the quality bar and the hand-off to the user. Read-only; changes nothing.
Parameters:
asset— string — The asset, as create_design names it: header, search_result, event_card, event_page, x_post, linkedin_post, link_preview, instagram_square, instagram_portrait, instagram_tall, product_hunt, wide_image or play_feature_graphic.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create_designUse this when you have designed art for an app yourself and the user should get it as an editable project: App Store listing art that loops as a video (a product page header, search result, or In-App Event card or page), or a still marketing image (an X, LinkedIn or Instagram post, a link preview, a Product Hunt image, a 16:9 image, Google Play's feature graphic). Takes 1 to 4 variants (directions for the user to choose from), each a background and layers: art you draw as SVG, library pieces, the app's icon, text, and phone frames showing the app (an iPhone, the iPhone Duo open from behind and from the front...), with moves and a loop on listing art. Checks everything and returns a preview image of each variant, warnings, a design_handle for update_design, and open_url, which opens the design in the appdesigns editor, where the user keeps a direction, tweaks any layer, saves it and exports it. Nothing is public and no account is needed. The design waits 72 hours to be opened and saved.
Parameters:
project_name(required) — string — The app's name. It becomes the project name in the user's appdesigns library.variants(required) — array — The directions, each a whole design. The first is the one you would pick.asset— string — Listing art: header (3840x1646), search_result (3840x2560), event_card (3840x2160) or event_page (2160x3840). Stills: x_post (1600x900), linkedin_post (1200x627), link_preview (1200x630), instagram_square (1080x1080), instagram_portrait (1080x1350), instagram_tall (1080x1440), product_hunt (1270x760), wide_image (1920x1080), play_feature_graphic (1024x500).animated— boolean — false for a still image (the user asked for one): the moves are kept with motion turned off, so the Motion toggle brings them back.project_id— string — A project_id from list_projects (the user signed in): the new asset is saved into that saved project of theirs. Use it, not same_project_as, to add to something the user already saved.app_store_url— string — The app's App Store link, if it is on the App Store: the editor's preview phone then shows its real name and icon, app_icon layers use its icon, and a phone layer can show one of its App Store screenshots.same_project_as— string — The project_handle or design_handle of an earlier asset from this conversation (screenshots, a header...). The user's save then files this one in the same project, once they have saved that one.screenshots_from— string — The project_handle of a screenshot set you made with create_project in this conversation (finished, not yet saved): a phone layer's screenshot n then shows that set's n-th capture, instead of an App Store screenshot. No sign-in needed.
Hints: read-only no · destructive no · idempotent no · open-world yes
update_designdestructiveChanges a design create_design made, before the user saves it: set fields of a layer by id, add, remove or reorder layers, or replace a variant's background, loop or title, or add or remove a variant. Send only what changes. Returns new preview images and warnings, like create_design; the open_url create_design gave then opens the new version. A design changed with edit_asset keeps changing there, and one the user already saved changes in the editor (or with edit_asset by asset_id once they sign you in).
Parameters:
design_handle(required) — string — The design_handle create_design returned.changes(required) — array — Applied in order. Positions count from 0 at the bottom.
Hints: read-only no · destructive yes · idempotent no · open-world no
list_projectsread-onlyUse this when the user wants to work on something they already made in appdesigns: change a screenshot set, a header or event art they saved, add to a project, or see what a project still lacks. Lists their projects (one per app) with every saved asset in each (asset_id, kind, canvas size, last edit) and what each project still needs. Needs the user signed in to appdesigns; a call without it fails asking for sign-in, and then the user signs in (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves). Read-only.
Parameters:
query— string — Only projects or assets whose name contains this, ignoring case.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_assetread-onlyUse this before changing an asset with edit_asset, or when the user asks what one looks like: one the user saved (asset_id) or a set or design you made in this conversation (handle). Returns its screens, each with its background, its layers bottom first (text, pictures and the phone, each with an id, a position as a share of the canvas and its style) and its loop if it is animated, plus warnings about what may look off, and a preview image of each screen. Also returns the revision edit_asset needs. With asset_id (something the user saved) it needs the user signed in to appdesigns (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves); with handle (a set or design you made in this conversation, not saved yet) it needs no sign-in. Read-only.
Parameters:
handle— string — Instead of asset_id: the project_handle create_project returned or the design_handle create_design returned, for something you made in this conversation that the user has not saved yet. Needs no sign-in.asset_id— string — The asset_id list_projects returned.previews— array — Which screens to preview, from 1. Default: all of them.
Hints: read-only yes · destructive no · idempotent yes · open-world no
edit_assetdestructiveUse this to change something, after get_asset: one the user saved (asset_id) or a set or design you made in this conversation (handle). Rewrite or restyle text, move, resize or recolour layers, add art you draw as SVG, a library piece (search_library), a phone frame or new text, remove or reorder layers, move or resize the phone or change its model, colour and fold, change the background or the loop, turn the whole set landscape or portrait or give it another size of the same asset (set_canvas), rename, duplicate, reorder or remove screens. Send only what changes, with the revision get_asset returned; the asset changes at once (like an edit in the editor) and the reply has the new revision, previews of the changed screens and warnings. A set or design changed this way keeps changing here: update_project and update_design no longer apply to it. With asset_id (something the user saved) it needs the user signed in to appdesigns (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves); with handle (a set or design you made in this conversation, not saved yet) it needs no sign-in.
Parameters:
revision(required) — string — The revision get_asset (or the last edit_asset) returned. If the asset changed since, nothing changes and you read it again.changes(required) — array — Applied in order, all or none. Layer positions count from 0 at the bottom of the screen's layers list, the phone included.handle— string — Instead of asset_id: the project_handle create_project returned or the design_handle create_design returned, for something you made in this conversation that the user has not saved yet. Needs no sign-in.asset_id— string — The asset_id list_projects returned.
Hints: read-only no · destructive yes · idempotent no · open-world no
save_to_accountUse this when the user is signed in and a set you made is ready: after finish_project (and any update_project), or create_design (and any update_design), once the previews look right. Saves it straight into their appdesigns library, into the project you named with project_id or same_project_as (else a new project named after it), with no link to open and nothing for them to press. Returns the saved asset_id and revision for edit_asset, and open_url, which opens the saved set in the editor. The draft's own link then opens the saved set. Needs the user signed in to appdesigns; a call without it fails asking for sign-in, and then the user signs in (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves).
Parameters:
handle(required) — string — The project_handle create_project returned, or the design_handle create_design returned.
Hints: read-only no · destructive no · idempotent yes · open-world no
replace_screenshotsdestructiveUse this when a set needs new screenshots in its phones: a recapture, a fixed screen, or a phone frame layer to fill (get_asset shows those as "phone frame: ..."), in a set the user saved (asset_id) or a set or design you made in this conversation (handle). Two calls. First with asset_id or handle and screens (each a screen number, the local file and, for a phone frame layer, its id): it returns one upload command (bash and PowerShell) that sends the files straight to storage. Run it, then call again with the same asset_id or handle, replace_handle and the revision get_asset returned: the files are checked (PNG or JPEG, the shape of the phone's screen) and swapped in, and the reply has the new revision and previews. With asset_id (something the user saved) it needs the user signed in to appdesigns (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves); with handle (a set or design you made in this conversation, not saved yet) it needs no sign-in.
Parameters:
handle— string — Instead of asset_id: the project_handle create_project returned or the design_handle create_design returned, for something you made in this conversation that the user has not saved yet. Needs no sign-in.screens— array — First call: what goes where, at most 6 files a call.asset_id— string — The asset_id list_projects returned.revision— string — Second call: the revision get_asset (or the last edit) returned.replace_handle— string — Second call: the replace_handle the first call returned, once the upload command has run.
Hints: read-only no · destructive yes · idempotent no · open-world no
translate_assetUse this when the user wants a screenshot set or listing asset in another language (a localization for the App Store or Google Play): one they saved (asset_id), or one you made in this conversation (handle). You translate every text layer yourself (get_asset lists them, with their ids); this makes a copy in that language, its images copied and the original untouched, wrapping a long translation and moving the captions under it down as the editor's own Translate set does. A saved set's copy is saved into the same project (asset_id back); a copy of yours is a new set with its own handle and link, which joins the original's project when the user saves them. Returns a preview of every screen (check the line breaks) and warnings; fix any line with edit_asset. One call per language. With asset_id (something the user saved) it needs the user signed in to appdesigns (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves); with handle (a set or design you made in this conversation, not saved yet) it needs no sign-in.
Parameters:
language(required) — string — App Store Connect's code for the language, such as de-DE, fr-FR, ja, es-MX or pt-BR.texts(required) — array — Every text layer that has words, translated. Keep names and brands as written; match the source's tone and length where the language allows.handle— string — Instead of asset_id: the project_handle create_project returned or the design_handle create_design returned, for something you made in this conversation that the user has not saved yet. Needs no sign-in.asset_id— string — The asset_id list_projects returned.
Hints: read-only no · destructive no · idempotent no · open-world no
export_assetUse this when the user wants the finished files (to upload to App Store Connect or the Play Console, or to use elsewhere) of something they saved (asset_id) or something you made in this conversation (handle). The files are made by the appdesigns editor in the user's browser, the same pixels its Export saves: open_url opens it there and makes them (a PNG per screen, and an MP4 for a screen whose loop is on), then get_export with export_id gives a command that downloads them. With asset_id (something the user saved) it needs the user signed in to appdesigns (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves); with handle (a set or design you made in this conversation, not saved yet) it needs no sign-in.
Parameters:
format— string — auto: an MP4 for each screen whose loop is on (an animated listing asset), a PNG for every other screen. png: stills only.handle— string — Instead of asset_id: the project_handle create_project returned or the design_handle create_design returned, for something you made in this conversation that the user has not saved yet. Needs no sign-in.asset_id— string — The asset_id list_projects returned.
Hints: read-only no · destructive no · idempotent no · open-world no
get_exportdestructiveUse this after export_asset, once the user has the editor open: says whether the files are made, and when they are, returns them with a command that downloads them into a folder (bash and PowerShell) and where they go next in App Store Connect or the Play Console. The command's links work until the export expires (24 hours after export_asset); each call with the files ready makes new links and retires the earlier ones, so run the command from the latest call. Pass the handle too when you exported something you made in this conversation; then it needs no sign-in, else it needs the user signed in (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves).
Parameters:
export_id(required) — string — The export_id export_asset returned.handle— string — Instead of asset_id: the project_handle create_project returned or the design_handle create_design returned, for something you made in this conversation that the user has not saved yet. Needs no sign-in.
Hints: read-only no · destructive yes · idempotent no · open-world no
feature_appdestructiveUse this when the user wants their app in the appdesigns gallery (appdesigns.click/apps): a screenshot set they saved (asset_id, from save_to_account or list_projects) is sent for review as a template other makers start from, listed with the app's icon, name and store link, so other makers get inspiration and the user gets seen. A person reviews it within 24 to 48 hours and the user gets an email when it is live. The set needs at least 3 screens, an App Store or Google Play link, and an icon: taken from the App Store link (Apple's public lookup), else the project's icon in appdesigns, else icon. Ask the user before calling it: the listing is public. Needs the user signed in to appdesigns; a call without it fails asking for sign-in, and then the user signs in (in Claude Code type /mcp, pick appdesigns and choose Authenticate (or run `claude mcp login appdesigns` in a separate terminal), in Codex run `codex mcp login appdesigns`; other agents open the sign-in page themselves).
Parameters:
asset_id(required) — string — The asset_id list_projects returned.app_name(required) — string — The app's name as the store shows it.icon— string — An https URL of the app icon (square; on appdesigns.click, Supabase storage or Apple's image CDN). Leave it out: the icon comes from the App Store link, else the project's icon.x_handle— string — The maker's X handle, if they want to be tagged when the listing is shared on X (a handle or a profile link).description— string — One line about the app, shown on its gallery page.app_store_url— string — The app's App Store page, https://apps.apple.com/... (this or play_store_url, or both).play_store_url— string — The app's Google Play page, https://play.google.com/...
Hints: read-only no · destructive yes · idempotent yes · 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.