Powered by Appeeky.
A scriptable CLI + MCP + TypeScript SDK for the App Store Connect API.
Ship iOS, macOS, tvOS and visionOS apps from your terminal, CI or AI agent: versions and metadata, App Review submissions, TestFlight, customer reviews, screenshots, in-app purchases, subscriptions, signing and reports.
| Package | Binaries | Role |
|---|---|---|
@appeeky/app-store-connect-cli |
appstore, appstore-mcp |
CLI + MCP server |
- Install
- Quick start
- Multi-account
- Common workflows
- Full API coverage
- MCP
- Agent skills
- SDK
- Documentation
- Development
- Contributing
- License
npm install -g @appeeky/app-store-connect-cliThis installs both binaries:
appstore: CLIappstore-mcp: MCP server (stdio)
appstore --help
appstore-mcp --helpAlso available with other package managers:
pnpm add -g @appeeky/app-store-connect-cli
yarn global add @appeeky/app-store-connect-cli
bun add -g @appeeky/app-store-connect-cliCreate an API key in App Store Connect → Users and Access → Integrations → App Store Connect API. Note the Key ID and Issuer ID and download the .p8 (never commit it).
appstore accounts add my-team \
--key-id ABC123DEFG \
--issuer-id 00000000-0000-0000-0000-000000000000 \
--private-key-path ~/.appstoreconnect/AuthKey_ABC123DEFG.p8 \
--default
appstore whoamiOr with environment variables:
export ASC_KEY_ID=ABC123DEFG
export ASC_ISSUER_ID=00000000-0000-0000-0000-000000000000
export ASC_PRIVATE_KEY_PATH=~/.appstoreconnect/AuthKey_ABC123DEFG.p8 # or ASC_PRIVATE_KEY with the PEMIndividual keys work too: leave out the issuer id.
Precedence: flags (--key-id, --issuer-id, --private-key) → ASC_* env → --account / default account in ~/.config/appstore/config.json.
appstore apps list
appstore --app com.example.app versions list
appstore --app com.example.app builds latest
appstore --app com.example.app reviews summaryWrites need --confirm:
appstore --app com.example.app versions create 2.4.0 --confirmappstore accounts add studio --key-id … --issuer-id … --private-key-path … --default
appstore accounts add client-acme --key-id … --issuer-id … --private-key-path …
appstore --account client-acme apps list
appstore apps register 1234567890 --to studio --bundle-id com.studio.app --defaultDetails: docs/authentication-accounts.mdx.
export ASC_APP_ID=1234567890
appstore versions create 2.4.0 --confirm
appstore versions set-localization VERSION_ID en-US --whats-new "Faster sync." --confirm
appstore versions attach-build VERSION_ID BUILD_ID --confirm
appstore submit VERSION_ID --confirm
appstore phased-release start VERSION_ID --confirmappstore builds latest
appstore testflight groups create "QA" --internal --confirm
appstore testflight groups add-build GROUP_ID BUILD_ID --confirm
appstore testflight testers invite ada@example.com --group GROUP_ID --confirm
appstore testflight submit BUILD_ID --confirmappstore reviews list --rating 1,2 --unanswered
appstore reviews respond REVIEW_ID "Thanks, fixed in 2.4.1!" --confirmappstore reports sales --date 2026-10-18 --vendor 85012345
appstore reports finance --date 2026-09 --region ZZappstore ops list subscriptions
appstore ops call appstore_list_subscription_groups '{"appId":"1234567890"}'Every operation in Apple's App Store Connect OpenAPI spec (4.5.1: 1,303 operations) is available as a named, validated operation generated from the spec: appstore_api_ + the snake_case operationId, e.g. apps_getCollection → appstore_api_apps_get_collection.
appstore api list --search "app clips" # search names, paths, summaries
appstore api describe appstore_api_beta_groups_create_instance # params, enums, body schema + example
appstore api call appstore_api_apps_app_clips_get_to_many_related --param id=1234567890 --param limit=10
appstore api call appstore_api_apps_get_collection --param filter[bundleId]=com.example.app --all
appstore api call appstore_api_beta_groups_create_instance --body @group.json --confirm
appstore api GET /v1/apps/1234567890/appClips # raw requestQuery parameters use Apple's names (filter[platform], fields[apps], include, sort, limit) or a grouped object ({"filter": {"platform": "IOS"}}). Path ids are checked to be a single segment, writes need --confirm, and --all pagination is capped.
MCP does not register 1,300 tools: agents use appstore_search_operations, appstore_describe_operation and appstore_call_operation (local and hosted; hosted writes still need X-ASC-Allow-Writes: true). Hosted REST: GET /v1/ops?q=…, GET /v1/ops/<name>, POST /v1/ops/<name>.
When Apple ships a new spec: pnpm generate:types && pnpm generate:ops, then commit. Details: docs/concepts/full-api-coverage.mdx, reference: docs/reference/api-operations.mdx.
{
"mcpServers": {
"app-store-connect": {
"command": "appstore-mcp"
}
}
}Read-only:
appstore-mcp --read-onlySee docs/mcp/setup.mdx.
Hosted, without a key file (uses your App Store Connect connection in Appeeky):
{
"mcpServers": {
"app-store-connect": {
"url": "https://asc-api.appeeky.com/mcp",
"headers": { "Authorization": "Bearer YOUR_APPEEKY_API_KEY" }
}
}
}Read-only unless you add "X-ASC-Allow-Writes": "true". See docs/mcp/hosted.mdx.
Workflow skills for coding agents: releases, TestFlight, reviews, media, monetization, signing, reports and troubleshooting.
appstore install-skillsOr:
npx skills add ./skills --skill '*' -g -yDocs: docs/skills/overview.mdx.
The same client ships as a TypeScript SDK in this monorepo (packages/core, import @appeeky/app-store-connect-core), with request types generated from Apple's OpenAPI spec. It is bundled into the published CLI and not published separately yet. See docs/sdk/overview.mdx.
- Site: asc.appeeky.com
- Source:
docs/
cd docs && npx mintlify devgit clone https://github.com/appeeky/app-store-connect-cli.git
cd app-store-connect-cli
pnpm install
pnpm build
pnpm test
pnpm typecheck
pnpm lintRegenerate the OpenAPI types with pnpm generate:types, the generated operations with pnpm generate:ops, and the curated operations reference with pnpm docs:ops. pnpm check:generated verifies the reference pages offline.
Contributions are welcome. See CONTRIBUTING.md for setup, package layout and testing notes.
MIT — see LICENSE.
This project is an independent tool for the App Store Connect API and is not affiliated with, endorsed by, or sponsored by Apple Inc. App Store, App Store Connect, TestFlight, iOS, macOS, tvOS and visionOS are trademarks of Apple Inc.
