App Store Connect MCP Server (SardorbekR/appstore-connect-mcp) is an MCP server listed on the M8ven Trust Index. It scores 56 out of 100, grade D. It declares 190 tools. No publisher has claimed this listing.
A Model Context Protocol (MCP) server for Apple's App Store Connect API. Manage your iOS, macOS, tvOS, and visionOS apps directly from Claude, Cursor, or any MCP-compatible client.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
SardorbekR
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
list_appsList all apps in your App Store Connect account. Returns app IDs, names, bundle IDs, and SKUs.
get_appGet detailed information about a specific app by its ID.
list_app_versionsList all App Store versions for an app. Can filter by platform and version state.
get_app_versionGet detailed information about a specific app version.
create_app_versionCreate a new App Store version for an app.
list_version_localizationsList all localizations for an App Store version. Returns description, keywords, what's new, and URLs for each locale.
get_version_localizationGet detailed information about a specific version localization.
create_version_localizationCreate a new localization for an App Store version. Add descriptions, keywords, and other metadata in a specific locale.
update_version_localizationUpdate an existing version localization. Only provided fields will be updated.
delete_version_localizationDelete a version localization. Cannot delete the primary locale.
list_app_infosList app info records for an app. Use this to get the appInfoId needed for localization operations.
list_app_info_localizationsList all localizations for an app info. Returns app name, subtitle, and privacy policy info for each locale.
update_app_info_localizationUpdate an app info localization. Use this to change app name, subtitle, or privacy policy URL for a locale.
list_beta_groupsList all beta groups for an app. Returns group names, public link info, and settings.
list_beta_testersList all beta testers in a specific beta group.
add_beta_testerAdd a new beta tester to a beta group by email address.
remove_beta_testerRemove a beta tester from a beta group.
list_screenshot_setsList all screenshot sets for a version localization. Each set represents a different display type (device size).
list_screenshotsList all screenshots in a screenshot set.
upload_screenshotUpload a new screenshot to a screenshot set. Provide the local file path, and this tool will handle the multi-step upload process.
list_bundle_idsList all bundle IDs registered in App Store Connect. Can filter by platform.
get_bundle_idGet details of a specific bundle ID.
create_bundle_idRegister a new bundle ID in App Store Connect. The identifier must be unique and follow reverse-domain notation (e.g., com.example.app).
update_bundle_idUpdate a bundle ID's name. Note: The identifier cannot be changed.
delete_bundle_idDelete a bundle ID. Note: This cannot be undone and may affect apps using this bundle ID.
list_devicesList all registered devices in App Store Connect. Can filter by platform and status.
get_deviceGet details of a specific registered device.
list_usersList all users in your App Store Connect team. Can filter by roles.
get_userGet details of a specific team user.
list_buildsList all builds for an app.
get_buildGet details of a specific build.
list_app_categoriesList all app categories available in the App Store. Can filter by platform.
get_app_price_scheduleGet the price schedule for an app, including pricing information.
get_app_availabilityGet app availability information, including which territories the app is available in.
list_territoriesList all App Store territories (countries/regions) with their currencies. Useful for understanding which markets are available for pricing.
list_app_price_pointsList available price points for an app. Each price point represents a possible price tier showing customer price and developer proceeds in local currency. Filter by territory to see prices for a specific country.
get_price_point_equalizationsGet Apple's equivalent price points in other territories for a given price point. This is the core Purchase Power Parity (PPP) data — shows what Apple considers equivalent pricing across countries. Use list_app_price_points first to get a price point ID.
set_app_pricesSet per-territory manual pricing for an app (Purchase Power Parity). WARNING: This replaces the entire price schedule — include ALL territory prices, not just changes. The base territory price must be included in manualPrices. Use list_app_price_points and get_price_point_equalizations to find price…
list_subscription_groupsList all subscription groups for an app. Subscription groups contain auto-renewable subscriptions and define upgrade/downgrade relationships.
get_subscription_groupGet details of a specific subscription group by its ID.
create_subscription_groupCreate a new subscription group for an app. A subscription group must be created before adding individual subscriptions to it.
update_subscription_groupUpdate the reference name of a subscription group.
list_subscription_group_localizationsList the localizations for a subscription group. These provide the localized name shown to users on the subscription management page.
get_subscription_group_localizationGet a single subscription group localization by its ID. Returns the localized name, locale, custom app name, and description.
create_subscription_group_localizationCreate a localization for a subscription group. Provides the localized group name shown to users on the App Store subscription management page.
update_subscription_group_localizationUpdate an existing subscription group localization. Can update the group name, custom app name, or custom app description.
list_subscriptionsList all auto-renewable subscriptions within a subscription group.
get_subscriptionGet details of a specific auto-renewable subscription by its ID.
create_subscriptionCreate a new auto-renewable subscription within a subscription group.
update_subscriptionUpdate the metadata of an existing auto-renewable subscription.
delete_subscriptionDelete an auto-renewable subscription. Only subscriptions in MISSING_METADATA or DEVELOPER_REMOVED_FROM_SALE state can be deleted.
list_subscription_localizationsList all localizations (translated names and descriptions) for a subscription.
create_subscription_localizationCreate a localized name and description for a subscription in a specific locale.
update_subscription_localizationUpdate the localized name or description for a subscription localization.
delete_subscription_localizationDelete a localization for a subscription.
list_subscription_price_pointsList available price points for a subscription, showing customer price and developer proceeds. Optionally filter by territory. Use offset to paginate beyond the first 200 results.
list_subscription_pricesList the current prices set for a subscription, including price tier and territory details. Use this to read existing pricing before making changes.
get_subscription_availabilityGet the territory availability configuration for a subscription — shows which territories it is available in and whether it is automatically available in new territories.
set_subscription_availabilitySet the territory availability for a subscription. Controls which countries/regions the subscription is available in, and whether it is automatically available in new territories Apple adds.
create_subscription_priceSet the price for a subscription in a specific territory. Use list_subscription_price_points to find the price point ID for the desired price tier. The price takes effect on startDate (or immediately if null).
list_promotional_offersList all promotional offers configured for a subscription. Promotional offers target existing or previously subscribed customers via offer codes.
create_promotional_offerCreate a promotional offer for a subscription. Use offerMode FREE_TRIAL for a trial offer (no prices needed). Use PAY_AS_YOU_GO or PAY_UP_FRONT for discounted paid offers and supply prices per territory. The offerCode is the string customers redeem.
update_promotional_offerUpdate an existing promotional offer's attributes or prices. Supply only the fields you want to change. To update prices, provide the full new prices array.
delete_promotional_offerDelete a promotional offer from a subscription.
list_promotional_offer_pricesList the prices set for a promotional offer, with resolved price tier and territory details.
list_in_app_purchasesList in-app purchases for an app. Covers one-time purchases — non-consumable (a 'lifetime' unlock), consumable, and non-renewing. Optionally filter by type.
get_in_app_purchaseGet details of a specific in-app purchase, including its state and product ID.
create_in_app_purchaseCreate a new in-app purchase. Defaults to NON_CONSUMABLE — a one-time 'lifetime' purchase that permanently unlocks the app. After creating, add a localization, set a price, and set availability before submitting for review. productId and type cannot be changed later.
update_in_app_purchaseUpdate an in-app purchase's reference name, Family Sharing setting, or review note. productId and type are immutable.
delete_in_app_purchaseDelete an in-app purchase. Only possible before it has been approved/sold.
list_in_app_purchase_localizationsList the localized display names and descriptions for an in-app purchase.
create_in_app_purchase_localizationAdd a localized display name (and optional description) for an in-app purchase. At least one localization is required before submission.
update_in_app_purchase_localizationUpdate the display name or description of an in-app purchase localization.
delete_in_app_purchase_localizationDelete an in-app purchase localization.
list_in_app_purchase_price_pointsList available price points for an in-app purchase, showing customer price and developer proceeds. Filter by territory to find a price point ID for set_in_app_purchase_price. Supports offset-based pagination.
set_in_app_purchase_priceSet pricing for an in-app purchase. WARNING: This replaces the entire price schedule. Provide only the base territory to let Apple auto-equalize all other territories, or provide a full per-territory list for manual Purchase Power Parity (PPP) pricing. Use list_in_app_purchase_price_points to find p…
get_in_app_purchase_availabilityGet the territory availability of an in-app purchase, including which territories it is available in.
set_in_app_purchase_availabilitySet the territory availability of an in-app purchase. Set availableInNewTerritories to auto-enable future App Store territories, and optionally restrict to a specific list of territories.
submit_in_app_purchase_for_reviewSubmit an in-app purchase to App Review. This is an outward-facing action: the purchase must already have metadata, a localization, a price, and availability set. App Store Connect also typically requires a review screenshot on the in-app purchase before it can pass review — uploading review screens…
get_in_app_purchase_price_point_equalizationsGet Apple's equivalent price points in other territories for an in-app purchase price point — the core Purchase Power Parity (PPP) data for one-time purchases. Use list_in_app_purchase_price_points to get a base price point ID, then feed the per-territory results into set_in_app_purchase_price.
list_in_app_purchase_pricesList the current per-territory prices set for an in-app purchase, with resolved customer price and territory. Returns developer-set (manual) prices by default; set includeAutomatic to also include Apple's auto-equalized prices. Use this to read existing pricing or verify a set_in_app_purchase_price …
create_analytics_report_requestCreate a new analytics report request for an app. Use ONGOING for continuous reports or ONE_TIME_SNAPSHOT for a single snapshot. Reports take time to generate after creation.
list_analytics_report_requestsList all analytics report requests for an app. Shows whether each request is active or stopped due to inactivity.
get_analytics_report_requestGet details of a specific analytics report request.
delete_analytics_report_requestDelete an analytics report request. This stops report generation and removes access to existing reports.
list_analytics_reportsList analytics reports available for a report request. Can filter by category (APP_STORE_ENGAGEMENT, COMMERCE, APP_USAGE, FRAMEWORKS_USAGE, PERFORMANCE).
list_analytics_report_instancesList report instances (dated snapshots) for an analytics report. Each instance represents data for a specific processing date. Can filter by granularity (DAILY, WEEKLY, MONTHLY) and processing date.
list_analytics_report_segmentsList downloadable segments for a report instance. Each segment contains a URL for downloading the report data, along with its checksum and size.
download_analytics_report_segmentDownload and parse an analytics report segment from its pre-signed URL. The segment data is gzip-compressed TSV. Returns parsed headers and rows (as key-value objects). Use list_analytics_report_segments to get the download URL first.
get_sales_reportget_finance_reportget_app_perf_metricsGet performance and power metrics for an app (e.g., launch time, memory, battery, hangs). Returns Xcode-style metrics data with values per device and percentile. Use this for app-level aggregate metrics across all builds.
get_build_perf_metricsGet performance and power metrics for a specific build. Same metric types as get_app_perf_metrics but scoped to a single build. Useful for comparing performance between builds.
list_diagnostic_signaturesList power and performance diagnostic signatures for a build. Signatures represent recurring performance issues (disk writes, hangs, slow launches) grouped by call stack. Use list_diagnostic_logs with a signature ID to get detailed logs.
list_diagnostic_logsList diagnostic logs for a specific diagnostic signature. Returns individual log entries for a given performance issue. Use list_diagnostic_signatures first to get a signature ID.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
When Vitest UI server is listening, arbitrary file can be read and executed
Vitest allows Remote Code Execution when accessing a malicious website while Vitest API server is listening
Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default
Undici: Malicious WebSocket 64-bit length overflows parser and crashes the client
Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_window_bits Validation
APP_STORE_CONNECT_ISSUER_IDexport ="YOUR_ISSUER_ID"APP_STORE_CONNECT_KEY_IDexport ="YOUR_KEY_ID"APP_STORE_CONNECT_P8_CONTENTYes Raw content of .p8 key (alternative to path)APP_STORE_CONNECT_P8_PATHexport ="/path/to/AuthKey.p8"Tool annotations
81/190 tools have annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
190/190 tools missing one or more hints — list_apps (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_app (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); list_app_versions (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +187 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool test coverage
Only 0/190 tools referenced in tests (0%)
Write tests that reference each tool by name so every tool has at least one test.
Production dependencies are patched
0 critical, 5 high severity in production deps — @modelcontextprotocol/sdk@1.0.0 (high), undici@6.6.0 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Dev dependencies
2 critical/high in dev-only deps (does not ship to users)
Upgrade dev dependencies when convenient.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/sardorbekr/appstore-connect-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check