
Generate App Store Screenshots With Cursor
Add the Screenies MCP server to Cursor's mcp.json, sign in once, and have the agent upload your Simulator captures and generate an App Store screenshot set from chat.
On this page
- Rule files, local editors, and a hosted server
- Add Screenies to mcp.json
- Sign in from Cursor's Customize panel
- A first run in agent chat
- Approvals: which tools to let run
- Getting captures from the Simulator into the upload
- Fixes, translations, and the credit meter
- Screenies credits from Cursor
- Questions about Screenies in Cursor
To generate App Store screenshots with Cursor, add Screenies as a remote MCP server in mcp.json, sign in once in the browser, and ask the agent to upload your app captures and build a set. Cursor calls the tools, you approve each call in chat, and the finished PNGs come back as download links.
Here's the longer version. Cursor reads MCP servers from a JSON file, either ~/.cursor/mcp.json for every project or .cursor/mcp.json inside one repository. Screenies runs at https://screenies.app/mcp and signs you in with OAuth, so the entry is a single URL with no API key or header. After that, the agent can create your app in Screenies, request upload URLs, push your Simulator captures to them with curl, start a generation, and poll until the slides are done. Your real screens go into the device frame in code, and the image model only paints the background behind them. A set of five iPhone slides costs five credits, the same as starting it from the web dashboard.
Rule files, local editors, and a hosted server
The live results for this search mix three different setups. ScreenshotWhale's Cursor post installs a rule file into .cursor/rules that teaches the agent to call its service, and free exports carry a watermark. ParthJadhav's app-store-screenshots is an agent skill that scaffolds a Next.js screenshot editor into your project, which you then run and edit yourself. AppLaunchFlow and Screenies both expose hosted MCP servers, where Cursor lists the tools directly and nothing is added to your repository. A rule file is text the model reads, so it works only as well as the model follows it; an MCP server gives Cursor typed tools with declared inputs, and Cursor shows you each call before it runs. If you already set this up in the terminal, the Claude Code screenshot workflow uses the same server with a claude mcp add command instead of a JSON file.
Add Screenies to mcp.json
Open ~/.cursor/mcp.json (or create .cursor/mcp.json at the root of your app's repository) and add this entry:
{
"mcpServers": {
"screenies": {
"url": "https://screenies.app/mcp"
}
}
}
The global file makes the server available in every Cursor window. The project file is useful when only one repository ships an iOS app, and you can commit it so teammates get the same entry, though each person still signs in with their own account. If you'd rather not edit JSON, the Add to Cursor button on the Screenies Cursor setup page opens a one-click install link that writes the same entry.
Sign in from Cursor's Customize panel
Once the entry is saved, open Customize from the Cursor sidebar. screenies appears in your MCP servers with a sign-in prompt beside it. Click it and a browser window opens on Screenies, where you log in with Google and approve the connection on a consent page. Your password stays with Screenies. What Cursor receives is an access token limited to the workspaces and apps you belong to, and your Screenies account settings can cut it off later. If the local callback port Cursor uses is busy, the sign-in still completes on another port. When the server shows as connected, its tools appear under the server name, and Cursor's MCP logs (in the Output panel) are the place to look if they don't.
A first run in agent chat
Open agent chat in the repository for your app and describe what you want in plain words. A prompt that works well:
Create a Screenies app for FocusBlocks, a Pomodoro timer for students who lose track of study time. Upload the five PNGs in
./store-captures, then generate a portrait iPhone set from all five.
From there the agent picks the tools itself. create_app takes the name, a description, and an App Store category, and the description is the input that most affects the result, so give it what the app does and who it's for. If the app is already live, pass the App Store URL: Screenies can then show a ratings badge, but only when the app has at least 100 ratings with a 4.5 average. request_screenshot_upload returns one signed URL per file, valid for 30 minutes, and the agent sends each capture with a curl -X PUT in Cursor's terminal. Files can be PNG, JPEG, or WebP up to 10 MB each. Then generate_screenshot_set starts the batch, and get_batch_status reports progress. A batch usually takes three to six minutes, and each finished slide has a download link that stays valid for 24 hours.
Screenies writes the headline for each slide as part of its plan, and those are set in code on top of the artwork. You get 1 to 10 slides per set, one device and orientation per batch: iPhone, iPad, Android phone, or Android tablet, portrait or landscape. The output sizes are listed on the App Store screenshot sizes page.
Approvals: which tools to let run
Cursor asks before it runs an MCP tool, the same way it asks before a terminal command. For a screenshot run that can mean a dozen prompts, so it helps to know which calls are safe to allowlist. Tools that only report state, such as whoami, list_apps, get_app, get_batch_status, and get_credit_balance, are good candidates, and approving them automatically saves most of the clicks during polling. Keep the prompt on for generate_screenshot_set, regenerate_failed, localize_set, and generate_logo, because each one spends credits, and for the delete_ tools, which remove files from your app. The same goes for buy_credits, which opens a Stripe Checkout page for a credit pack and is limited to workspace owners; the agent is told to call it only after you pick a pack and agree to the price, but a manual approval is the better guarantee.
Getting captures from the Simulator into the upload
Cursor's agent can run shell commands, so it can collect the source screens as well as upload them. With your app open in a booted iOS Simulator, xcrun simctl io booted screenshot ./store-captures/home.png saves the current screen at the device's native resolution. Navigate to the next screen, run it again, and repeat for each screen you want in the set. Clear out debug banners and placeholder data first, because the capture is what ends up inside the device frame. For an iPad set, capture from an iPad Simulator and ask for device: tablet, since the source screens should match the device and orientation you generate.
Fixes, translations, and the credit meter
Most changes after the first run don't need a new generation. Ask the agent to rewrite one headline and it calls edit_headline, which costs nothing; ask it to swap two slides and it calls reorder_set, which also moves any translated copies. When one slide fails, regenerate_failed retries that slide only, and the failed attempt's credit comes back automatically. For other languages, localize_set sets translated headlines on the artwork you already have, at 0.1 credits per slide per locale. A prompt like "check my credit balance, then localize the finished set into German and Japanese" gives the agent enough to report the cost before it starts.
Open the Cursor setup page for the install button and the config snippet.
Screenies credits from Cursor
Each Cursor approval for generate_screenshot_set is a spend decision: one credit per phone slide and two per tablet slide, charged at the same rate as a run started in the Screenies dashboard. Asking the agent for get_credit_balance before it starts tells you up front whether the batch will start, since a run that costs more than your balance is refused before any credit is charged. Credits are sold in one-time packs starting at $9 for 12 and don't expire, and the pricing page compares the three packs.
Questions about Screenies in Cursor
Does Screenies need an API key in the Cursor config?
The entry is only the URL, with no key or header. Cursor handles the OAuth sign-in in your browser, and you can revoke that access from your Screenies account at any time.
Can Cursor save the finished PNGs into my repository?
The download links from get_batch_status are ordinary HTTPS URLs, so you can ask the agent to fetch each one with curl -o into a folder such as ./store-output. Each link lasts 24 hours, and the agent can call get_batch_status again for fresh ones. From there, the App Store Connect upload guide covers getting them into your listing.
Why does Cursor list screenies with no tools?
Usually the sign-in didn't finish. Open Customize, click the sign-in prompt beside screenies again, and approve the consent page. If the tools still don't appear, the MCP logs in Cursor's Output panel show the error from the connection.
What should the agent write in the app description?
What the app does, who it's for, and its main features, because create_app uses that text to plan the set. Cursor's agent already has your repository open, so asking it to draft the description from your README or onboarding copy and show it to you before calling the tool usually beats writing it from scratch.
Related guides

Generate App Store Screenshots With Claude Code
Connect Screenies' remote MCP server to Claude Code and generate, localize, and download a full App Store screenshot set from prompts, with no local build to run.

Remote MCP Server OAuth on Cloudflare Workers
How Screenies helps MCP clients find the login flow, checks access tokens inside a Cloudflare Worker, and limits tools to the user's workspace permissions.

How to Make App Store Screenshots
A step-by-step process for turning raw app captures into an uploaded App Store listing set, from simulator capture to App Store Connect.