App Store Connect MCP server, with a policy gate.
Connect App Store Connect to your agents with the .p8 key encrypted server-side — not pasted into an agent's JSON config — then manage subscriptions and releases through dry-run previews, app scoping, purpose-specific grants, hard limits, and a complete audit trail.
https://app.gentkey.com/mcpclaude.ai (web & mobile) · Claude Code · Cursor · any MCP clientWhat’s free, what needs a grant.
Reads: Apps, builds, TestFlight, customer reviews, sales, analytics, subscription groups and products, in-app purchases, prices, territories, offers, localizations, and images work with no grant.
Writes: Product creation, pricing and territory changes, offer campaigns and code generation, versioned metadata and image uploads, TestFlight changes, and App Review submissions each require a purpose-specific grant and support dry-run previews.
| Grant | What it governs |
|---|---|
app-store-connect.read | Apps, builds, TestFlight, reviews, reports, analytics, products, prices, territories, offers, localizations, and images — on by default |
app-store-connect.write.tester | Adding and removing TestFlight testers |
app-store-connect.write.beta | Distributing builds to TestFlight groups and expiring builds |
app-store-connect.write.product | Creating subscription groups, subscriptions, and in-app purchases |
app-store-connect.write.pricing | Changing subscription and in-app-purchase prices and territory availability |
app-store-connect.write.offer | Creating subscription offers and code batches, and removing introductory offers |
app-store-connect.write.metadata | Creating metadata versions, localizations, App Review screenshots, and promotional images |
app-store-connect.write.review | Submitting app and monetization metadata versions for App Review |
Bounds the gate enforces with arithmetic.
app-store-connect.write.offer · max territories/call = 5 · max codes/call = 1,000An agent can create a five-country win-back campaign or generate 1,000 one-time codes, but a 175-country rollout or 25,000-code batch is denied before Apple sees it. The owner can preview the exact action first and every decision remains attributed in the audit log.
Connect once, use everywhere.
Sign in at gentkey.com, add App Store Connect (api key), then point each client at your endpoint. Every client completes a standard OAuth flow and lands in your Gentkey — your connections, nobody else’s.
claude.ai (web & mobile)
- Settings → Connectors
- Add custom connector
- Paste
https://app.gentkey.com/mcpand finish the OAuth prompt
Claude Code
claude mcp add --transport http \
gentkey https://app.gentkey.com/mcpCursor
// .cursor/mcp.json
{
"mcpServers": {
"gentkey": { "url": "https://app.gentkey.com/mcp" }
}
}Things agents do with App Store Connect here.
- What's the crash-free rate on the latest build?
- Summarize this week's customer reviews and flag the angry ones.
- Preview changing the US monthly subscription price to the $7.99 price point.
- Create a three-month win-back offer in the US and Canada for customers who lapsed 2–12 months ago.
- Add French and Japanese localizations to the new subscription metadata version, then submit it for review.
Custody, gating, and audit — built in.
The model never sees a credential
Your App Store Connect key is encrypted at rest and injected server-side at call time. Your stored credential never enters a context window.
Writes need a grant
Anything that changes state needs a capability you granted explicitly — revoke it and the next call is denied.
A trail you can act on
Every decision is attributed to the agent that made it — allowed, denied, or denied by constraint.
Fair questions.
Where does my App Store Connect API key live?
Encrypted at rest on Gentkey's server (AES-256-GCM) and used only at call time. The usual alternative — a .p8 private key pasted into an MCP server's local JSON config — leaves Apple credentials in plaintext on every machine an agent runs on.
Can an agent change subscription pricing without approval?
Only after the owner explicitly grants app-store-connect.write.pricing. Every pricing write supports dry_run, verifies Apple's opaque price-point ID against the specified product and territory, obeys the grant's velocity limits, and is app-scoped and audited. Revoking the grant or using the write freeze blocks the next call immediately.
Does Gentkey use Apple's current versioned metadata workflow?
Yes. Subscription groups, subscriptions, and in-app purchases use Apple's App Store Connect API 4.4.1 metadata versions: create a draft version, attach v2 localizations and promotional images, then submit that exact version through the review-submission flow. Gentkey does not build new work on Apple's deprecated direct-localization endpoints.
What happens when an agent calls a App Store Connect write tool it hasn't been granted?
The call is denied at the gateway — nothing reaches App Store Connect — and the denial is recorded in the audit log along with the grant that would have authorized it, so you can decide deliberately instead of finding out later.
Where are my credentials stored?
Encrypted at rest (AES-256-GCM) on Gentkey's server and injected server-side at call time. No credential you store with Gentkey ever enters a model's context window or an agent's config file.
Can I use this from claude.ai's free plan?
Yes — and it's the strongest case for a gateway: free claude.ai accounts currently get a single custom connector, so pointing that one slot at Gentkey puts every connector you've linked behind it.
How do I revoke an agent's access?
Revoke the grant (the next write is denied) or revoke the agent's tokens entirely in one click. Other agents and their grants are untouched — no shared key to rotate.
Is Gentkey affiliated with App Store Connect?
No. Gentkey is an independent MCP gateway. Trademarks belong to their owners; where an official App Store Connect MCP server exists, Gentkey proxies it and adds custody, gating, and audit on top.
Often connected together.
Cut App Store Connect a smaller key.
Sign in, connect App Store Connect, and grant your first scoped capability in under a minute.