A release is a state machine. Here is who drives each state.
App Store Connect moves a version through fixed
states. Most of those transitions have an API. A few do not, and no MCP server can invent one. Amber lists
the tool calls your agent makes. Red marks the stages only the website can do, and
asc_guide hands you those steps with the deep link.
-
Manual, one time
The app record exists
POST /v1/appsis forbidden for API keys, so the record is created once on the website.ASC website > Apps > +
-
Prepare for submission
Metadata, price, availability, age rating
Character limits are validated before the write, so Apple does not bounce it. Price equalizes to about 175 territories.
update_version_metadata · set_app_metadata · set_app_price · set_app_availability · set_age_rating
-
Build processing
Compile, sign, upload, attach
Manual-signing profiles are created via the API, then the archive is built and uploaded locally with Xcode's toolchain.
setup_app_store_signing · build_and_archive · upload_binary · wait_for_build · attach_build
-
Assets and products
Screenshots, subscriptions, in-app purchases
Screenshots upload per display type. Subscriptions get a group, localization, territory availability, a USA base price fanned out to every territory, and a free trial.
upload_screenshots · create_subscription · create_iap · set_iap_review_screenshot
-
Manual, website only
Privacy nutrition label and EU trader status
Neither is in the public API. Both tools return the exact checklist plus the deep link instead of pretending to write them.
set_privacy_nutrition · set_eu_trader_status
-
Waiting for review
Preflight, then submit
Preflight audits the whole version and reports every blocker with the fix. If this app's first in-app purchases are pending, submit aborts on purpose: only the website can bundle those with a version.
release_preflight · submit_for_review
-
Ready for sale
Release, or roll out over 7 days
Outward-facing calls require an explicit confirm flag, so an agent cannot ship to the public by accident.
release_version · manage_phased_release
Common questions, answered directly
How is this different from an MCP server that wraps the API?
Wrappers expose Apple's endpoints one to one, which can mean hundreds of tools. That fills an agent's context and leaves the sequencing to it. This server ships 41 opinionated tools that each complete a job: one call sets an age rating by merging the full declaration set, one call prices a subscription across every territory and adds the trial, one call audits a version before submission.
What does it actually cost?
Nothing, for the first seven days. Ask your agent to run
asc_start_trial and every tool unlocks for a week, no card, nothing to cancel. After that Pro is
$9 per month through Polar, cancel any time. Six tools stay free with no asc-mcp account: the setup check, the playbook, the trial starter, listing apps,
app details, and review status. The first three need nothing at all. The other three read from App Store
Connect, so they need your own Apple API key, the same one every other tool here uses.
Where does my API key go?
Nowhere. The .p8 stays on your machine, JWTs are signed locally, and calls go straight from your computer to api.appstoreconnect.apple.com. Nothing proxies through this project. The only network call it makes elsewhere is a license check that sends your license key, not your credentials.
One narrow exception, and only when you call asc_start_trial: that request sends the email
address you give it, so the key can reach you, and a SHA-256 hash of your Issuer ID computed on your machine,
so one Apple developer account cannot take unlimited trials. The Issuer ID itself, the Key ID and the .p8 are
never transmitted. Both values are covered by the
privacy policy, and you can delete them at any
time.
Can an agent submit or release my app by mistake?
No. submit_for_review, release_version, and upload_binary each refuse to run without an explicit confirm flag, so an agent has to be told twice. Reviews are the same: the reply tool writes a draft and never posts it.
Has this shipped a real app?
Yes. The control plane drove a 1.0 submission end to end in June 2026, including metadata, age rating, build attach, screenshots, three in-app purchase products priced across 175 territories, and the submission itself. Every limitation listed on this page was found by hitting it live, not by reading the docs.
Try it on your own app first.
Every tool, free for seven days, without a card. Ask your agent to
run asc_start_trial and it unlocks in the same conversation, no restart.
Free
$0
asc_start_trial, 7 days of everything below, no card, nothing to cancelasc_setup_check, diagnoses your setup with a live authenticated callasc_guide, the full playbook per flow with manual steps flaggedlist_apps,app_details,review_status- No asc-mcp account, no signup, no card. Three of the six need nothing at all; the other three read from Apple with your own API key
Pro
$9 per month
- All 41 tools, including the full write and control plane
- Metadata, screenshots, builds, TestFlight, submit, release, phased rollout
- Subscriptions and in-app purchases, priced and localized in one call
- Reviews, sales reports, preflight audits, keyword and competitor intelligence
- Cancel any time in Polar. Your license key is emailed and recoverable.
Lost your key? Recover it here.
Your .p8 never leaves your machine, and no App Store Connect data passes through this project. Privacy · Terms. This control plane drove a real 1.0 submission end to end in June 2026. Questions go to a person: povkonop@gmail.com.
What $9 buys that free does not
Every other App Store Connect MCP server is free, and two of them expose far more tools than this one. That is the honest comparison, so here it is.
| Project | Price | Tools | What it is |
|---|---|---|---|
asc-mcp (@pofky/asc-mcp, this project) |
$9 per month, 6 tools free with no expiry | 41 | Tools shaped like jobs, a preflight audit before you submit, and a maintained record of what Apple's API refuses to do at all |
| Heimdall | Free, MIT | 890 | Generated from Apple's OpenAPI spec across 13 profiles, plus macros and a confirm-before-write flag |
| zelentsov-dev/asc-mcp | Free, MIT | 502 | Generated across worker groups, and it covers Xcode Cloud, which this server does not |
| fastlane | Free, MIT | Not applicable | The incumbent CLI. Ruby toolchain and lane files. Not an MCP server, so an agent reaches it by shelling out and parsing text rather than by calling a typed tool |
| App Store Connect | Included with the $99/year Apple Developer Program | Not applicable | Apple's own console, in a browser, by hand |
Competitor tool counts, licences and prices read from each project on 7 September 2026. These projects ship fast and the counts change; the links go to the source so you can check today's numbers yourself.
So why pay. Not for the tool count, which is a
losing number here and always will be: a generated server gets one tool per endpoint for free. You pay for
the part that cannot be generated, which is knowing what Apple will not let you do. The App Privacy label,
EU trader status, the first in-app purchase of an app, and the app record itself cannot be created or set
through the App Store Connect API at all, no matter which client you point at it, and finding that out costs a
release. This server
flags every one of them inline, before you start, and keeps the list current by hitting the live API and
being refused. Read the list, it
is public and it is the product. The six free tools include asc_guide, which serves that same
list to your agent mid-task, so you can check the claim before paying anything.
Three steps, about five minutes
On Claude Desktop, skip all of it. Download the .mcpb bundle and open it. Claude installs it in one click, asks for your Issuer ID, and lets you pick your .p8 with a file picker. No config file, no restart. The steps below are for every other client.
- Create an App Store Connect API key. In App Store Connect, open Users and Access, then
Integrations, then App Store Connect API. Generate a key with the App Manager role and download the .p8.
Apple only lets you download it once. Drop it in Apple's standard folder and the Key ID is read from the
filename.
mv ~/Downloads/AuthKey_*.p8 ~/.appstoreconnect/private_keys/
- Run init. It finds the key, asks for your Issuer ID and optional Pro key, and prints a
paste-ready config block. Add
--writeand it merges the block into your client config for you, after backing it up.npx @pofky/asc-mcp init --write
- Restart your client and check. Ask your agent to run the setup check. It verifies the key, the
Issuer ID, a live authenticated call, and your license tier, and prints the exact fix for anything wrong.
npx @pofky/asc-mcp doctor
Works with Claude Code, Claude Desktop, Cursor, Windsurf, Cline, and any other MCP client that speaks stdio. Requires Node 18 or newer. Building and uploading a binary additionally needs a Mac with Xcode.
What the App Store Connect API cannot do
This list matters more than the feature list. Anyone who tells you an agent can do all of App Store Connect has not tried these:
Create an app record
Forbidden for API keys. Create it once on the website, then everything after is automatable.
Set the App Privacy nutrition label
The data usage resource is not public. set_privacy_nutrition returns the checklist and the deep link.
Declare EU trader status
No API attribute exists, and it is a legal declaration. set_eu_trader_status returns the steps.
Submit an app's first in-app purchases
Apple requires the first products to be submitted with the version, which only the website can do.
submit_for_review detects this and stops rather than orphaning your version. Later products submit fine over the API.
Post a public reply to a review
Reading reviews is in the API, replying is not. draft_review_response writes the reply for you to paste.
Use Xcode cloud signing with a least-privilege key
It fails with a permissions error. setup_app_store_signing creates real distribution profiles and an
ExportOptions.plist for manual signing instead, which works.