Run TestFlight from Cursor
A build lands in App Store Connect. Ask Cursor to give it to your internal and beta groups, write What to Test from the commits, answer export compliance, and later pull the crash reports testers sent.
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
TestFlight work comes in small pieces at awkward times: a build finishes processing while you're in the middle of something, someone has to add it to the right groups, the What to Test field is empty again, and tester feedback sits in a separate tab.
Cursor can do each piece through MetaRun, in the same session where the build was made. Crash feedback and screenshots from testers come back as data the agent can match against your code.
Before you start
- A build uploaded from Xcode, Xcode Cloud, fastlane or CI.
- Tester groups set up in App Store Connect.
- An answer for export compliance, or ITSAppUsesNonExemptEncryption in Info.plist.
How it runs
- 01
Wait for processing
Cursor reads the build list and reports when the build is processed. A build still processing can't be assigned.
- 02
Clear export compliance
If the build has no encryption answer, the agent previews the declaration, or reuses an existing one.
- 03
Assign and describe
Each group assignment and the What to Test text is its own preview.
- 04
Read what testers found
Crash feedback, crash logs and screenshot feedback come back as structured data, ready to compare with the code.
An example session in Cursor
Write What to Test for build 312 from @CHANGELOG.md.
- apple_list_buildsBuild 312 processed. No export compliance answer yet.
- apple_preview_declare_build_encryptionPreview: exempt encryption, assigned to build 312. Not revertible.
- Cursor asks before running apple_apply_declare_build_encryption. You read the preview above and approve.
- apple_apply_declare_build_encryptionDeclared.
- apple_preview_assign_build_to_groupPreview: build 312 to the Beta Club group.
- Cursor asks before running apple_apply_assign_build_to_group. You read the preview above and approve.
- apple_apply_assign_build_to_groupAssigned to Beta Club.
- apple_preview_set_what_to_testPreview: What to Test in English, from the commits since build 309.
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_buildsread | Builds with version, build number, processing state and expiry. |
| apple_list_testflight_groupsread | Internal and external tester groups. |
| apple_preview_assign_build_to_grouppreview + apply | Give a build to a tester group. |
| apple_preview_set_what_to_testpreview + apply | What to Test notes for a build, per language. |
| apple_preview_declare_build_encryptionpreview + apply | Answer export compliance so the build can be tested. |
| apple_list_testflight_crash_feedbackread | Crash reports testers submitted, with their comments. |
| apple_get_crash_logread | The crash log behind a tester's report. |
| apple_list_testflight_screenshot_feedbackread | Screenshots and comments testers sent from the app. |
| apple_preview_expire_buildpreview + apply | Stop testing a build before its 90 days are up. |
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
Builds expire after 90 days
A TestFlight build stops working 90 days after upload. Expiring one early is a preview and apply like any other change.
External testing needs Beta App Review
The first build of a version sent to external testers goes through Beta App Review. Internal testers get it as soon as it's processed.
Export compliance can't be undone
Declaring a build's encryption is permanent for that build, so the preview says it's not revertible. Setting ITSAppUsesNonExemptEncryption in Info.plist answers it at upload instead.
MetaRun doesn't upload builds
Xcode, Xcode Cloud, fastlane or your CI uploads the build. MetaRun takes over once it's in App Store Connect.
What to ask Cursor
- Ask Cursor: Write What to Test for build 312 from @CHANGELOG.md.
- Ask Cursor: Which tester groups have build 310?
- Ask Cursor: Show me the screenshot feedback testers sent today.
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 the latest five builds of com.example.app with processing state, expiry date and the tester groups each one is in. 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
Can Cursor upload a build to TestFlight?
Not through MetaRun: build upload belongs to Xcode, Xcode Cloud, fastlane or your CI. Everything after the upload (compliance, groups, notes, feedback) works through MetaRun.
Can it read crash reports from testers?
Yes. apple_list_testflight_crash_feedback returns the reports with tester comments and apple_get_crash_log returns the log, which Cursor can match against your code.
Does it work with external tester groups?
Yes, internal and external groups both. The first build of a version to external testers still goes through Apple's Beta App Review.
What does export compliance mean here?
Apple's question about whether the build uses non-exempt encryption. The agent can answer it per build, or you can set ITSAppUsesNonExemptEncryption in Info.plist so Apple never asks.
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 "testflight" 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
Submit for review
Attach the build, clear export compliance, run the readiness sweep, submit.
OpenCursor
App Privacy and compliance
Turn your privacy manifests into App Privacy answers; set age rating and export compliance.
OpenCursor
Release notes
Write What's New from your changelog and stage it in every language.
OpenCursor
Phased release
Choose how an approved version goes out, then pause, resume or finish a phased rollout.
OpenTestFlight with another agent
In depth: App Store Connect MCP server
Agent access
14-day free trial with agent access. No credit card. Your Apple key stays encrypted on MetaRun.