shots

Hosted MCP server for generating App Store screenshots, app icons, ASO listing copy, and localization for mobile apps.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Shots: General command dispatch for Shots. Pass a command name and optional args. Call `help.schema` for a command's full JSON Schema, `help.examples` for recipes, or `help.search` to find commands. A
  • Shots Batch: Execute up to 10 independent Shots commands in one roundtrip. Results are keyed by caller-provided id.
  • Generate Screenshot: Generate one App Store screenshot for 3 generation credits. For small targeted changes to an existing screenshot, use `shots` command `screenshots.revise` instead. Pass a complete

What data it sees

Do you need an account

No: the server works without sign-in

Hosted MCP server for generating App Store screenshots, app icons, ASO listing copy, and localization for mobile apps. Works with Codex, Claude Code, Cursor, Gemini CLI, and all MCP-compatible AI coding agents. Generates professional app marketing assets directly from your codebase using AI.

Server tool list (6)

Raw names from tools/list. Only developers need these.

shotsGeneral command dispatch for Shots. Pass a command name and optional args. Call `help.schema` for a command's full JSON Schema, `help.examples` for recipes, or `help.search` to find commands. Available commands: | Command | Risk | Params | Description | |---|---|---|---| | `apps.get` | none | appId | App context (metadata, listings, jobs) | | `apps.import` | medium | [appId], [appStoreUrl], [appStoreId], [country], [locale] | Import app from App Store (creates R2 media) | | `apps.list` | none | — | List user's apps | | `apps.update_listing` | low | appId, [locale], [title], [subtitle], [description], [keywords[]], [whatsNew] | Save locale-specific App Store listing copy | | `apps.update_research` | low | appId, research | Write/replace app research markdown | | `apps.upsert` | low | [appId], [name], [appStoreId], [bundleId], [appStoreUrl], [country], [primaryLocale], [developer], [genres[]], [copyright], [description], [ratingAverage], [ratingCount], [version], [releaseNotes] | Create or update app record | | `media.import_url` | medium | appId, kind=app_store_screenshot|app_screenshot|reference|icon|icon_moodboard, sourceUrl, [locale], [filename] | Upload image from URL to R2 | | `screenshots.delete` | low | mediaId | Delete screenshot and remove it from listing selections | | `screenshots.get` | none | mediaId | Fetch one screenshot | | `screenshots.list` | none | [appId], [locale], [limit] | List screenshots with stable IDs | | `screenshots.listing` | none | appId, [platform], [locale] | List screenshots selected for an app's store page (defaults to English/en-US) | | `screenshots.promote` | low | mediaId | Promote screenshot to App Store listing | | `screenshots.revise` | high | mediaId, feedback, [referenceMediaIds[]] | Revise screenshot (1 generation credit) | | `screenshots.translate` | high | mediaId, locale, [textMappings] | Translate screenshot (1 generation credit) | | `screenshots.unpromote` | low | mediaId | Remove from listing | | `icons.delete` | low | mediaId | Delete an app icon candidate | | `icons.get` | none | mediaId | Fetch one app icon | | `icons.list` | none | appId | List generated and imported app icons | | `icons.set_current` | low | mediaId | Set an app icon as the current selected icon | | `gallery.browse` | none | [search], [category], [style], [color], [device], [tone], [font], [tag], [screenType], [sort=recent|popular|name], [page], [perPage], [limit], [groupLimit] | Browse gallery apps with Typesense filters and facets | | `gallery.categories` | none | — | List all gallery categories with app counts | | `gallery.ensure_app` | medium | input, [country], [screenshotLimit] | Find or import an App Store app into the public inspiration gallery and return its public page URL and screenshots | | `gallery.favorites` | none | [limit] | List user's favorited gallery screenshots | | `gallery.get_app` | none | [slug], [galleryAppId], [appStoreId], [screenshotLimit] | Get one public gallery app, its public page URL, and inspiration screenshots | | `gallery.search_apps` | none | query, [category], [style], [color], [device], [tone], [font], [tag], [screenType], [sort=recent|popular|name], [page], [perPage], [limit] | Text search for apps in gallery | | `gallery.search` | none | query, [category], [style], [color], [device], [tone], [font], [tag], [screenType], [sort=recent|popular|name], [page], [perPage], [limit] | Search gallery screenshots by text query | | `gallery.search_similar` | none | query, [category], [style], [color], [device], [tone], [font], [tag], [screenType], [sort=recent|popular|name], [page], [perPage], [limit] | Search public gallery screenshots by visual style or concept text | | `gallery.submit_app` | medium | input, [country] | Submit app to gallery from an App Store URL or numeric ID and return its public gallery page URL — prefer gallery.ensure_app for inspiration workflows | | `gallery.toggle_favorite` | low | galleryScreenshotId | Favorite or unfavorite a gallery screenshot | | `jobs.get` | none | jobId | Check generation job status | | `jobs.list` | none | appId, [status], [limit] | List recent generation jobs for an app | | `usage.get` | none | — | Check plan, usage, billing state | | `appstore.lookup` | none | [appStoreUrl], [appId], [country], [locale] | Look up public App Store metadata | | `search.app_images` | none | appId, query, [kind=app_store_screenshot|app_screenshot|reference|icon|icon_moodboard], [limit] | Search media descriptions for uploaded screenshots and references | | `feedback.report` | low | category=user_feedback|feature_request|bug|quality_issue|unsupported_workflow|user_frustration|user_delight|other, title, details, [sentiment=negative|neutral|positive|mixed], [severity=low|medium|high], [tags[]], [appId], [mediaId], [jobId], [relatedTool], [relatedCommand], [userQuote], [agentContext] | Report user feedback, product ideas, unsupported workflows, tool/infrastructure bugs, or quality problems to the Shots team | | `help.examples` | none | [command], [tag], [limit] | Show examples defined by each command | | `help.schema` | none | command | Show the full JSON Schema for one command's args | | `help.search` | none | query, [limit] | Search available command names, descriptions, args, and tags |
shots_batchExecute up to 10 independent Shots commands in one roundtrip. Results are keyed by caller-provided id.
generate_screenshotGenerate one App Store screenshot for 3 generation credits. For small targeted changes to an existing screenshot, use `shots` command `screenshots.revise` instead. Pass a complete plain-text or markdown prompt — the server appends dimensions, constraints, and reference metadata. When using public gallery inspiration, pass `galleryInspirationScreenshotId`; it is style-only and uses medium generation quality. Call this tool again for each additional screenshot.
generate_icon_moodboardGenerate a 2048x2048 moodboard with ~20 numbered app icon concepts. Use this as a brainstorming step — the user picks favorites by number, then generate individual icons. Costs 5 generation credits.
generate_iconGenerate one 1024x1024 app icon source artwork. Provide style direction (style, symbol, background) to control the output. Costs 3 generation credits.
billingManage billing: create a checkout URL, buy generation credit top-ups, or open the billing portal.