Write What's New in every language with Cursor
Cursor already knows what changed in this release. Ask it to turn that into What's New, translate it, and stage it for every language on your listing. MetaRun holds each one to Apple's limits and shows the before and after per language.
Setup checked October 2026 against Cursor MCP docs, Cursor CLI
Connect Cursor once
01 · Add to ~/.cursor/mcp.json (or .cursor/mcp.json for one project)
{
"mcpServers": {
"metarun": {
"url": "https://metarun.dev/api/mcp"
}
}
}02 · Or use the install link
Opens Cursor with the server filled in.
https://cursor.com/link/mcp/install?name=metarun&config=eyJ1cmwiOiJodHRwczovL21ldGFydW4uZGV2L2FwaS9tY3AifQ%3D%3D03 · Sign in
When Cursor connects, MetaRun opens in your browser. Pick read-only or read and change, and you're back in the editor with the tools listed under MCP.
Prefer a personal access token (scripts, CI)?
Use a token instead
Mint a personal access token in MetaRun under Settings, MCP. It's shown once and can be revoked any time. Cursor reads ${env:METARUN_TOKEN} from your environment. Some Cursor versions start the browser sign-in even when a header is set; if that happens, signing in works the same.
{
"mcpServers": {
"metarun": {
"url": "https://metarun.dev/api/mcp",
"headers": { "Authorization": "Bearer ${env:METARUN_TOKEN}" }
}
}
}What Cursor handles here
Release notes are the last thing anyone writes. By then the version is ready, the build is processed, and twelve languages still say last month's text. Copying translations into App Store Connect one locale at a time takes longer than writing them.
Through MetaRun, Cursor writes and translates, and MetaRun does the parts that must be exact: it reads the live version, checks What's New against Apple's 4,000-character limit, stages one change per language, and reports which languages are still missing it.
Before you start
- An update, not a first release: What's New only exists after the app has shipped once.
- The version still editable (being prepared, ready for review, or rejected).
- Something to work from: a changelog, the commit log, or your own notes.
How it runs
- 01
Gather what changed
Cursor works from what it can see: your changelog, merged pull requests, the commit log since the last tag, or what you tell it.
- 02
Read the version in every language
MetaRun returns the version's localizations so the agent knows which languages exist and what they say now.
- 03
Stage one change per language
Each language gets its own preview with the old and new text. Anything over 4,000 characters is refused at preview, not by Apple after submission.
- 04
Confirm coverage
Before calling the job done, Cursor reads listing coverage, which lists any language still missing What's New.
An example session in Cursor
Use @CHANGELOG.md to write What's New for 2.4 and stage it for all languages.
- apple_list_version_localizationsVersion 2.4 has 12 languages. What's New is empty in each.
- apple_preview_set_version_localizationPreview: English (U.S.) What's New, 412 of 4,000 characters.
- Cursor asks before running apple_apply_set_version_localization. You read the preview above and approve.
- apple_apply_set_version_localizationApplied for English (U.S.).
- apple_get_listing_coverage11 languages still missing What's New. Cursor continues with those.
Illustrative: your apps, versions and numbers will differ. The tool names and their order are real.
The MetaRun tools Cursor calls
| Tool | What it does |
|---|---|
| apple_list_version_localizationsread | Every language on the version with its current What's New, description and keywords. |
| apple_preview_set_version_localizationpreview + apply | Stage What's New (or description, keywords, URLs) for one language. |
| apple_get_listing_coverageread | Which languages are still missing which fields, so the job isn't declared done early. |
| apple_get_listing_editabilityread | Whether the version's text is editable right now. |
| aso_lint_metadataread | Checks copy against App Store rules before it's staged. |
| apple_preview_set_promotional_textpreview + apply | The 170-character line above the description that changes live, without review. |
| aso_schedule_promo_textMetaRun | Schedule promotional text to switch at a set time, for example on launch day. |
Each preview has an apply twin (the same name with apply instead of preview) that only runs with the confirm token from a fresh preview, and refuses if App Store Connect changed in between. MetaRun tools save to your MetaRun workspace only (studio projects, tracked keywords), never to Apple.
What Apple enforces, and how MetaRun handles it
No What's New on a first version
Apple has no What's New field until the app has shipped once. The API rejects it and App Store Connect hides it, so MetaRun only asks for it on updates.
4,000 characters per language
What's New and the description each allow 4,000 characters. Promotional text allows 170 and is the only one of the three that changes without review.
Text locks once the version is in review
What's New is editable while the version is being prepared or after a rejection. apple_get_listing_editability tells the agent which fields are locked and why, instead of a write failing.
Adding a language creates rows Apple fills in
When a new language is added, Apple creates that language's other localization rows on its own. MetaRun's confirm token is keyed on the language, not Apple's row id, so your approved change doesn't fail as drift.
What to ask Cursor
- Ask Cursor: Use @CHANGELOG.md to write What's New for 2.4 and stage it for all languages.
- Ask Cursor: The German What's New reads stiff. Rewrite it and show me the preview.
- Ask Cursor: Set promotional text to announce the widget, live now.
Run it from a script with Cursor
The Cursor CLI runs one request without the editor with agent -p. Allow only the read tools the request needs in ~/.cursor/cli-config.json (Mcp(metarun:tool_name) rules), and keep MetaRun's apply tools out of that list.
Read-only check, safe to schedule
agent -p "List every language on the editable version of com.example.app that is missing What's New. Read only." --output-format jsonDon't run it with --force for MetaRun: that approves every tool, applies included.
How Cursor asks before a change
Cursor asks before each MCP tool call by default, following your Run Mode settings. Keep MetaRun's apply tools on ask: that prompt is the confirm step for every App Store change. In the Cursor CLI, allow rules live in ~/.cursor/cli-config.json in the form Mcp(server:tool), so you can allow MetaRun's read tools and leave the applies out.
Frequently asked questions
Who writes the translations, Cursor or MetaRun?
Cursor does. MetaRun reads the live listing, checks the limits, and stages one change per language for you to approve. Translations through your own agent don't use MetaRun's AI translation budget.
Can Cursor update release notes after the app is live?
Not What's New: it locks with the version. Promotional text is the exception and changes the live listing immediately, so that's what to use for a post-launch message.
How many languages can it handle at once?
Every language on your listing. Each one is its own preview, so you can approve some and skip others.
Will it overwrite my description by accident?
Only fields the agent names are touched, and each preview shows the field's old and new text before anything is applied.
How do I connect Cursor to App Store Connect?
Add https://metarun.dev/api/mcp to ~/.cursor/mcp.json (or use the install link) and sign in to MetaRun when Cursor opens your browser. After that, ask for "release notes" in plain words and Cursor picks the MetaRun tools.
Does Cursor see my App Store Connect key?
No. Your App Store Connect API key stays envelope-encrypted on MetaRun's servers and is decrypted per request. Cursor holds a MetaRun token that you can revoke in Settings at any time.
More with Cursor
Cursor
Localize your listing
Name, subtitle, keywords and description in every App Store language, limits checked.
OpenCursor
Submit for review
Attach the build, clear export compliance, run the readiness sweep, submit.
OpenCursor
ASO keywords
Find keywords from App Store autocomplete, track ranks, and lint your metadata.
OpenCursor
Phased release
Choose how an approved version goes out, then pause, resume or finish a phased rollout.
OpenRelease notes with another agent
In depth: Listing translation
Agent access
14-day free trial with agent access. No credit card. Your Apple key stays encrypted on MetaRun.