MCP servers › io.github.devinwang › app-store-connect-mcp
MCP server · registry snapshot 2026-10-23 · last tested 2026-10-23
io.github.devinwang/app-store-connect-mcp
MCP server for Apple's App Store Connect API: 1316 tools generated from the official OpenAPI spec. — the publisher's description
Summary
io.github.devinwang/app-store-connect-mcp is a local MCP server listed in the official MCP registry at version 0.5.0. On 2026-10-23 ProtocolProbe started its published package in an isolated sandbox in read-only mode and read its inventory: 1,316 tools, 0 resources and 0 prompts.
Record checks
- met: Registry entry is active and says how to run it
- met: Source repository link opens
- met: Repository is not archived
- met: Code pushed to the repository in the 90 days before our check
- met: Repository publishes a security policy (SECURITY.md)
- met: Package names its licence with a standard (SPDX) identifier
- met: The version the registry lists can be installed and is not withdrawn
- met: npm package carries build provenance (attestation)
- met: No known critical or high advisory in the package or its dependencies
- #1,531 of 15,112 packages by monthly downloads, tied with 1 other
- Not ranked by stars: 3 stars (ranked from 10)
- #271 of 1,074 packages meeting all 9 record checks, by downloads
From public records, not a safety rating. Each check with its reason · Is it safe to install?
Key facts
- Runs
- local package
- Transport
- standard input/output
- Package
- npm · listed version current
- License
- MIT
- Dependencies
- no known high or critical advisories
- Repository
- public
- Tools
- 1,316
- Described as changing data
- 483 of 1,316 toolsAI-classified
- Mainly works on
- files and code on the machine it runs on; accounts and data in outside web servicesAI-classified
- Topic
- developer-toolsAI-classified
- Last tested
- 2026-10-23
Worth knowing before you connect it
- 483 tools are described as changing something (accounts_add, accounts_remove, accounts_switch, …): our AI model's reading of the descriptions, not something we tested. We did not call them.
- Its package is signed and carries a build record naming its source.
Each line comes from a section below, with its source and date.
How fresh this is
- Live-tested
- yes, a real session (not a text-only review)
- Last tested
- 2026-10-23
- Mode
- read-only (no tool calls)
- Latest version
- 0.5.0, published 2026-10-21 (registry, as of the 2026-10-23 snapshot)
- First listed version
- 2026-10-21 (earliest version still in the registry; older removed versions would be earlier)
- Registry data
- snapshot 2026-10-23
- Package and repository
- checked 2026-10-23
- Engine
- mcp-runtime-engine@0.1.0 · sdk@1.32.0
Changes since the last refresh
New in the registry: not in the list of 2026-10-04, listed on 2026-10-23 with version 0.5.0 (published 2026-10-21).
Source: the official MCP Registry list on 2026-10-04 and on 2026-10-23.
What it is
What does this server offer?
Observed inventoryWhat it mainly works on, as our AI model read its tool descriptions: files and code on the machine it runs on; accounts and data in outside web services.
483 of 1,316 tools are described as changing something (creating, editing, deleting, sending or running).
“List every App Store Connect account registered locally.”
Takes no inputs.
“Show which account is currently active.”
Takes no inputs.
“Register a new App Store Connect account.”
6 inputs, 4 required
namestringrequired“Short identifier used to switch accounts (e.g.”keyIdstringrequired“The Key ID from App Store Connect → Users and Access → Integrations (e.g.”issuerIdstringrequired“The Issuer ID shown on the same page — a single UUID per developer team.”keyFilestringrequired“Absolute path to the `.p8` private key file you downloaded from App Store Connect.”descriptionstringscopearray
“Remove an account from the local registry.”
1 input, 1 required
namestringrequired
“Make an existing registered account the active one.”
1 input, 1 required
namestringrequired
“Change one or more fields of an existing account.”
6 inputs, 1 required
namestringrequiredkeyIdstringissuerIdstringkeyFilestringdescriptionstringscopearray
“Verify that the active account can acquire an App Store Connect JWT.”
Takes no inputs.
- auth_revoke_cachecreates or changes datadescribed as changing data
“Drop the in-memory JWT cache so the next API call re-signs.”
Takes no inputs.
- accessibility_declarations_create_instancecreates or changes datadescribed as changing data
“POST /v1/accessibilityDeclarations (POST /v1/accessibilityDeclarations) Body shape: see OpenAPI components.schemas.AccessibilityDeclarationCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- accessibility_declarations_get_instancereads or searches
“GET /v1/accessibilityDeclarations/{id} (GET /v1/accessibilityDeclarations/{id})”
2 inputs, 1 required
fields_accessibilityDeclarationsarray or string“the fields to include for returned resources of type accessibilityDeclarations”idstringrequired“the id of the requested resource”
- accessibility_declarations_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/accessibilityDeclarations/{id} (PATCH /v1/accessibilityDeclarations/{id}) Body shape: see OpenAPI components.schemas.AccessibilityDeclarationUpdateRequest for the full JSON:API envelope.”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- accessibility_declarations_delete_instancedeletesdescribed as changing data
“DELETE /v1/accessibilityDeclarations/{id} (DELETE /v1/accessibilityDeclarations/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
Show 88 more tools
- actors_get_collectionreads or searches
“GET /v1/actors (GET /v1/actors)”
3 inputs
filter_idarray or string“filter by id(s)”fields_actorsarray or string“the fields to include for returned resources of type actors”limitinteger“maximum resources per page”
- actors_get_instancereads or searches
“GET /v1/actors/{id} (GET /v1/actors/{id})”
2 inputs, 1 required
fields_actorsarray or string“the fields to include for returned resources of type actors”idstringrequired“the id of the requested resource”
- age_rating_declarations_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/ageRatingDeclarations/{id} (PATCH /v1/ageRatingDeclarations/{id}) Body shape: see OpenAPI components.schemas.AgeRatingDeclarationUpdateRequest for the full JSON:API envelope.”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- alternative_distribution_domains_get_collectionreads or searches
“GET /v1/alternativeDistributionDomains (GET /v1/alternativeDistributionDomains)”
2 inputs
fields_alternativeDistributionDomainsarray or string“the fields to include for returned resources of type alternativeDistributionDomains”limitinteger“maximum resources per page”
- alternative_distribution_domains_create_instancecreates or changes datadescribed as changing data
“POST /v1/alternativeDistributionDomains (POST /v1/alternativeDistributionDomains) Body shape: see OpenAPI components.schemas.AlternativeDistributionDomainCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- alternative_distribution_domains_get_instancereads or searches
“GET /v1/alternativeDistributionDomains/{id} (GET /v1/alternativeDistributionDomains/{id})”
2 inputs, 1 required
fields_alternativeDistributionDomainsarray or string“the fields to include for returned resources of type alternativeDistributionDomains”idstringrequired“the id of the requested resource”
- alternative_distribution_domains_delete_instancedeletesdescribed as changing data
“DELETE /v1/alternativeDistributionDomains/{id} (DELETE /v1/alternativeDistributionDomains/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- alternative_distribution_keys_get_collectionreads or searches
“GET /v1/alternativeDistributionKeys (GET /v1/alternativeDistributionKeys)”
3 inputs
exists_appboolean“filter by existence or non-existence of related 'app'”fields_alternativeDistributionKeysarray or string“the fields to include for returned resources of type alternativeDistributionKeys”limitinteger“maximum resources per page”
- alternative_distribution_keys_create_instancecreates or changes datadescribed as changing data
“POST /v1/alternativeDistributionKeys (POST /v1/alternativeDistributionKeys) Body shape: see OpenAPI components.schemas.AlternativeDistributionKeyCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- alternative_distribution_keys_get_instancereads or searches
“GET /v1/alternativeDistributionKeys/{id} (GET /v1/alternativeDistributionKeys/{id})”
2 inputs, 1 required
fields_alternativeDistributionKeysarray or string“the fields to include for returned resources of type alternativeDistributionKeys”idstringrequired“the id of the requested resource”
- alternative_distribution_keys_delete_instancedeletesdescribed as changing data
“DELETE /v1/alternativeDistributionKeys/{id} (DELETE /v1/alternativeDistributionKeys/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- alternative_distribution_package_deltas_get_instancereads or searches
“GET /v1/alternativeDistributionPackageDeltas/{id} (GET /v1/alternativeDistributionPackageDeltas/{id})”
2 inputs, 1 required
fields_alternativeDistributionPackageDeltasarray or string“the fields to include for returned resources of type alternativeDistributionPackageDeltas”idstringrequired“the id of the requested resource”
- alternative_distribution_package_variants_get_instancereads or searches
“GET /v1/alternativeDistributionPackageVariants/{id} (GET /v1/alternativeDistributionPackageVariants/{id})”
2 inputs, 1 required
fields_alternativeDistributionPackageVariantsarray or string“the fields to include for returned resources of type alternativeDistributionPackageVariants”idstringrequired“the id of the requested resource”
- alternative_distribution_package_versions_get_instancereads or searches
“GET /v1/alternativeDistributionPackageVersions/{id} (GET /v1/alternativeDistributionPackageVersions/{id})”
8 inputs, 1 required
fields_alternativeDistributionPackageVersionsarray or string“the fields to include for returned resources of type alternativeDistributionPackageVersions”fields_alternativeDistributionPackageVariantsarray or string“the fields to include for returned resources of type alternativeDistributionPackageVariants”fields_alternativeDistributionPackageDeltasarray or string“the fields to include for returned resources of type alternativeDistributionPackageDeltas”fields_alternativeDistributionPackagesarray or string“the fields to include for returned resources of type alternativeDistributionPackages”includearray or string“comma-separated list of relationships to include”limit_deltasinteger“maximum number of related deltas returned (when they are included)”limit_variantsinteger“maximum number of related variants returned (when they are included)”idstringrequired“the id of the requested resource”
- alternative_distribution_package_versions_deltas_get_to_many_relationshipreads or searches
“GET /v1/alternativeDistributionPackageVersions/{id}/relationships/deltas (GET /v1/alternativeDistributionPackageVersions/{id}/relationships/deltas)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- alternative_distribution_package_versions_deltas_get_to_many_relatedreads or searches
“GET /v1/alternativeDistributionPackageVersions/{id}/deltas (GET /v1/alternativeDistributionPackageVersions/{id}/deltas)”
3 inputs, 1 required
fields_alternativeDistributionPackageDeltasarray or string“the fields to include for returned resources of type alternativeDistributionPackageDeltas”limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- alternative_distribution_package_versions_variants_get_to_many_relationshipreads or searches
“GET /v1/alternativeDistributionPackageVersions/{id}/relationships/variants (GET /v1/alternativeDistributionPackageVersions/{id}/relationships/variants)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- alternative_distribution_package_versions_variants_get_to_many_relatedreads or searches
“GET /v1/alternativeDistributionPackageVersions/{id}/variants (GET /v1/alternativeDistributionPackageVersions/{id}/variants)”
3 inputs, 1 required
fields_alternativeDistributionPackageVariantsarray or string“the fields to include for returned resources of type alternativeDistributionPackageVariants”limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- alternative_distribution_packages_create_instancecreates or changes datadescribed as changing data
“POST /v1/alternativeDistributionPackages (POST /v1/alternativeDistributionPackages) Body shape: see OpenAPI components.schemas.AlternativeDistributionPackageCreateRequest for the full JSON:API envelo…”
1 input, 1 required
bodyobjectrequired“JSON body.”
- alternative_distribution_packages_get_instancereads or searches
“GET /v1/alternativeDistributionPackages/{id} (GET /v1/alternativeDistributionPackages/{id})”
5 inputs, 1 required
fields_alternativeDistributionPackagesarray or string“the fields to include for returned resources of type alternativeDistributionPackages”fields_alternativeDistributionPackageVersionsarray or string“the fields to include for returned resources of type alternativeDistributionPackageVersions”includearray or string“comma-separated list of relationships to include”limit_versionsinteger“maximum number of related versions returned (when they are included)”idstringrequired“the id of the requested resource”
- alternative_distribution_packages_versions_get_to_many_relationshipreads or searches
“GET /v1/alternativeDistributionPackages/{id}/relationships/versions (GET /v1/alternativeDistributionPackages/{id}/relationships/versions)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- alternative_distribution_packages_versions_get_to_many_relatedreads or searches
“GET /v1/alternativeDistributionPackages/{id}/versions (GET /v1/alternativeDistributionPackages/{id}/versions)”
10 inputs, 1 required
filter_statearray or string“filter by attribute 'state'”fields_alternativeDistributionPackageVersionsarray or string“the fields to include for returned resources of type alternativeDistributionPackageVersions”fields_alternativeDistributionPackageVariantsarray or string“the fields to include for returned resources of type alternativeDistributionPackageVariants”fields_alternativeDistributionPackageDeltasarray or string“the fields to include for returned resources of type alternativeDistributionPackageDeltas”fields_alternativeDistributionPackagesarray or string“the fields to include for returned resources of type alternativeDistributionPackages”limitinteger“maximum resources per page”includearray or string“comma-separated list of relationships to include”limit_variantsinteger“maximum number of related variants returned (when they are included)”limit_deltasinteger“maximum number of related deltas returned (when they are included)”idstringrequired“the id of the requested resource”
- analytics_report_instances_get_instancereads or searches
“GET /v1/analyticsReportInstances/{id} (GET /v1/analyticsReportInstances/{id})”
2 inputs, 1 required
fields_analyticsReportInstancesarray or string“the fields to include for returned resources of type analyticsReportInstances”idstringrequired“the id of the requested resource”
- analytics_report_instances_segments_get_to_many_relationshipreads or searches
“GET /v1/analyticsReportInstances/{id}/relationships/segments (GET /v1/analyticsReportInstances/{id}/relationships/segments)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- analytics_report_instances_segments_get_to_many_relatedreads or searches
“GET /v1/analyticsReportInstances/{id}/segments (GET /v1/analyticsReportInstances/{id}/segments)”
3 inputs, 1 required
fields_analyticsReportSegmentsarray or string“the fields to include for returned resources of type analyticsReportSegments”limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- analytics_report_requests_create_instancecreates or changes datadescribed as changing data
“POST /v1/analyticsReportRequests (POST /v1/analyticsReportRequests) Body shape: see OpenAPI components.schemas.AnalyticsReportRequestCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- analytics_report_requests_get_instancereads or searches
“GET /v1/analyticsReportRequests/{id} (GET /v1/analyticsReportRequests/{id})”
5 inputs, 1 required
fields_analyticsReportRequestsarray or string“the fields to include for returned resources of type analyticsReportRequests”fields_analyticsReportsarray or string“the fields to include for returned resources of type analyticsReports”includearray or string“comma-separated list of relationships to include”limit_reportsinteger“maximum number of related reports returned (when they are included)”idstringrequired“the id of the requested resource”
- analytics_report_requests_delete_instancedeletesdescribed as changing data
“DELETE /v1/analyticsReportRequests/{id} (DELETE /v1/analyticsReportRequests/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- analytics_report_requests_reports_get_to_many_relationshipreads or searches
“GET /v1/analyticsReportRequests/{id}/relationships/reports (GET /v1/analyticsReportRequests/{id}/relationships/reports)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- analytics_report_requests_reports_get_to_many_relatedreads or searches
“GET /v1/analyticsReportRequests/{id}/reports (GET /v1/analyticsReportRequests/{id}/reports)”
5 inputs, 1 required
filter_namearray or string“filter by attribute 'name'”filter_categoryarray or string“filter by attribute 'category'”fields_analyticsReportsarray or string“the fields to include for returned resources of type analyticsReports”limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- analytics_report_segments_get_instancereads or searches
“GET /v1/analyticsReportSegments/{id} (GET /v1/analyticsReportSegments/{id})”
2 inputs, 1 required
fields_analyticsReportSegmentsarray or string“the fields to include for returned resources of type analyticsReportSegments”idstringrequired“the id of the requested resource”
- analytics_reports_get_instancereads or searches
“GET /v1/analyticsReports/{id} (GET /v1/analyticsReports/{id})”
2 inputs, 1 required
fields_analyticsReportsarray or string“the fields to include for returned resources of type analyticsReports”idstringrequired“the id of the requested resource”
- analytics_reports_instances_get_to_many_relationshipreads or searches
“GET /v1/analyticsReports/{id}/relationships/instances (GET /v1/analyticsReports/{id}/relationships/instances)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- analytics_reports_instances_get_to_many_relatedreads or searches
“GET /v1/analyticsReports/{id}/instances (GET /v1/analyticsReports/{id}/instances)”
5 inputs, 1 required
filter_granularityarray or string“filter by attribute 'granularity'”filter_processingDatearray or string“filter by attribute 'processingDate'”fields_analyticsReportInstancesarray or string“the fields to include for returned resources of type analyticsReportInstances”limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- android_to_ios_app_mapping_details_create_instancecreates or changes datadescribed as changing data
“POST /v1/androidToIosAppMappingDetails (POST /v1/androidToIosAppMappingDetails) Body shape: see OpenAPI components.schemas.AndroidToIosAppMappingDetailCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- android_to_ios_app_mapping_details_get_instancereads or searches
“GET /v1/androidToIosAppMappingDetails/{id} (GET /v1/androidToIosAppMappingDetails/{id})”
2 inputs, 1 required
fields_androidToIosAppMappingDetailsarray or string“the fields to include for returned resources of type androidToIosAppMappingDetails”idstringrequired“the id of the requested resource”
- android_to_ios_app_mapping_details_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/androidToIosAppMappingDetails/{id} (PATCH /v1/androidToIosAppMappingDetails/{id}) Body shape: see OpenAPI components.schemas.AndroidToIosAppMappingDetailUpdateRequest for the full JSON:API …”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- android_to_ios_app_mapping_details_delete_instancedeletesdescribed as changing data
“DELETE /v1/androidToIosAppMappingDetails/{id} (DELETE /v1/androidToIosAppMappingDetails/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- app_asset_libraries_get_instancereads or searches
“GET /v1/appAssetLibraries/{id} (GET /v1/appAssetLibraries/{id})”
2 inputs, 1 required
fields_appAssetLibrariesarray or string“the fields to include for returned resources of type appAssetLibraries”idstringrequired“the id of the requested resource”
- app_asset_libraries_images_get_to_many_relationshipreads or searches
“GET /v1/appAssetLibraries/{id}/relationships/images (GET /v1/appAssetLibraries/{id}/relationships/images)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- app_asset_libraries_images_get_to_many_relatedreads or searches
“GET /v1/appAssetLibraries/{id}/images (GET /v1/appAssetLibraries/{id}/images)”
12 inputs, 1 required
filter_categoryarray or string“filter by attribute 'category'”filter_statearray or string“filter by attribute 'state'”filter_referenceNamearray or string“filter by attribute 'referenceName'”filter_specIdarray or string“filter by attribute 'specId'”filter_idarray or string“filter by id(s)”sortarray or string“comma-separated list of sort expressions; resources will be sorted as specified”fields_appAssetLibraryImagesarray or string“the fields to include for returned resources of type appAssetLibraryImages”fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”limitinteger“maximum resources per page”includearray or string“comma-separated list of relationships to include”limit_placementsinteger“maximum number of related placements returned (when they are included)”idstringrequired“the id of the requested resource”
- app_asset_libraries_videos_get_to_many_relationshipreads or searches
“GET /v1/appAssetLibraries/{id}/relationships/videos (GET /v1/appAssetLibraries/{id}/relationships/videos)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- app_asset_libraries_videos_get_to_many_relatedreads or searches
“GET /v1/appAssetLibraries/{id}/videos (GET /v1/appAssetLibraries/{id}/videos)”
12 inputs, 1 required
filter_categoryarray or string“filter by attribute 'category'”filter_statearray or string“filter by attribute 'state'”filter_referenceNamearray or string“filter by attribute 'referenceName'”filter_specIdarray or string“filter by attribute 'specId'”filter_idarray or string“filter by id(s)”sortarray or string“comma-separated list of sort expressions; resources will be sorted as specified”fields_appAssetLibraryVideosarray or string“the fields to include for returned resources of type appAssetLibraryVideos”fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”limitinteger“maximum resources per page”includearray or string“comma-separated list of relationships to include”limit_placementsinteger“maximum number of related placements returned (when they are included)”idstringrequired“the id of the requested resource”
- app_asset_library_images_create_instancecreates or changes datadescribed as changing data
“POST /v1/appAssetLibraryImages (POST /v1/appAssetLibraryImages) Body shape: see OpenAPI components.schemas.AppAssetLibraryImageCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_asset_library_images_get_instancereads or searches
“GET /v1/appAssetLibraryImages/{id} (GET /v1/appAssetLibraryImages/{id})”
5 inputs, 1 required
fields_appAssetLibraryImagesarray or string“the fields to include for returned resources of type appAssetLibraryImages”fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”includearray or string“comma-separated list of relationships to include”limit_placementsinteger“maximum number of related placements returned (when they are included)”idstringrequired“the id of the requested resource”
- app_asset_library_images_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/appAssetLibraryImages/{id} (PATCH /v1/appAssetLibraryImages/{id}) Body shape: see OpenAPI components.schemas.AppAssetLibraryImageUpdateRequest for the full JSON:API envelope.”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- app_asset_library_images_delete_instancedeletesdescribed as changing data
“DELETE /v1/appAssetLibraryImages/{id} (DELETE /v1/appAssetLibraryImages/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- app_asset_library_images_placements_get_to_many_relationshipreads or searches
“GET /v1/appAssetLibraryImages/{id}/relationships/placements (GET /v1/appAssetLibraryImages/{id}/relationships/placements)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- app_asset_library_images_placements_get_to_many_relatedreads or searches
“GET /v1/appAssetLibraryImages/{id}/placements (GET /v1/appAssetLibraryImages/{id}/placements)”
20 inputs, 1 required
filter_placementTypearray or string“filter by attribute 'placementType'”filter_placementGrouparray or string“filter by attribute 'placementGroup'”filter_statearray or string“filter by attribute 'state'”filter_videoarray or string“filter by id(s) of related 'video'”filter_appEventLocalizationarray or string“filter by id(s) of related 'appEventLocalization'”filter_appStoreVersionLocalizationarray or string“filter by id(s) of related 'appStoreVersionLocalization'”filter_appCustomProductPageLocalizationarray or string“filter by id(s) of related 'appCustomProductPageLocalization'”filter_appStoreVersionExperimentTreatmentLocalizationarray or string“filter by id(s) of related 'appStoreVersionExperimentTreatmentLocalization'”filter_idarray or string“filter by id(s)”sortarray or string“comma-separated list of sort expressions; resources will be sorted as specified”fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”fields_appAssetLibraryImagesarray or string“the fields to include for returned resources of type appAssetLibraryImages”fields_appAssetLibraryVideosarray or string“the fields to include for returned resources of type appAssetLibraryVideos”fields_appEventLocalizationsarray or string“the fields to include for returned resources of type appEventLocalizations”fields_appStoreVersionLocalizationsarray or string“the fields to include for returned resources of type appStoreVersionLocalizations”fields_appCustomProductPageLocalizationsarray or string“the fields to include for returned resources of type appCustomProductPageLocalizations”fields_appStoreVersionExperimentTreatmentLocalizationsarray or string“the fields to include for returned resources of type appStoreVersionExperimentTreatmentLocalizations”limitinteger“maximum resources per page”includearray or string“comma-separated list of relationships to include”idstringrequired“the id of the requested resource”
- app_asset_library_placement_ordering_requests_create_instancecreates or changes datadescribed as changing data
“POST /v1/appAssetLibraryPlacementOrderingRequests (POST /v1/appAssetLibraryPlacementOrderingRequests) Body shape: see OpenAPI components.schemas.AppAssetLibraryPlacementOrderingRequestCreateRequest f…”
5 inputs, 1 required
fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”includearray or string“comma-separated list of relationships to include”limit_orderedPlacementsinteger“maximum number of related orderedPlacements returned (when they are included)”fields_appAssetLibraryPlacementOrderingRequestsarray or string“the fields to include for returned resources of type appAssetLibraryPlacementOrderingRequests”bodyobjectrequired“JSON body.”
- app_asset_library_placements_create_instancecreates or changes datadescribed as changing data
“POST /v1/appAssetLibraryPlacements (POST /v1/appAssetLibraryPlacements) Body shape: see OpenAPI components.schemas.AppAssetLibraryPlacementCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_asset_library_placements_get_instancereads or searches
“GET /v1/appAssetLibraryPlacements/{id} (GET /v1/appAssetLibraryPlacements/{id})”
9 inputs, 1 required
fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”fields_appAssetLibraryImagesarray or string“the fields to include for returned resources of type appAssetLibraryImages”fields_appAssetLibraryVideosarray or string“the fields to include for returned resources of type appAssetLibraryVideos”fields_appEventLocalizationsarray or string“the fields to include for returned resources of type appEventLocalizations”fields_appStoreVersionLocalizationsarray or string“the fields to include for returned resources of type appStoreVersionLocalizations”fields_appCustomProductPageLocalizationsarray or string“the fields to include for returned resources of type appCustomProductPageLocalizations”fields_appStoreVersionExperimentTreatmentLocalizationsarray or string“the fields to include for returned resources of type appStoreVersionExperimentTreatmentLocalizations”includearray or string“comma-separated list of relationships to include”idstringrequired“the id of the requested resource”
- app_asset_library_placements_delete_instancedeletesdescribed as changing data
“DELETE /v1/appAssetLibraryPlacements/{id} (DELETE /v1/appAssetLibraryPlacements/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- app_asset_library_ref_data_get_collectionreads or searches
“GET /v1/appAssetLibraryRefData (GET /v1/appAssetLibraryRefData)”
5 inputs
filter_placementTypesarray or string“filter by attribute 'placementTypes'”filter_placementProfileGroupsarray or string“filter by attribute 'placementProfileGroups'”filter_featuresarray or string“filter by attribute 'features'”filter_specsarray or string“filter by specs”fields_appAssetLibraryRefDataarray or string“the fields to include for returned resources of type appAssetLibraryRefData”
- app_asset_library_ref_data_get_instancereads or searches
“GET /v1/appAssetLibraryRefData/{id} (GET /v1/appAssetLibraryRefData/{id})”
2 inputs, 1 required
fields_appAssetLibraryRefDataarray or string“the fields to include for returned resources of type appAssetLibraryRefData”idstringrequired“the id of the requested resource”
- app_asset_library_videos_create_instancecreates or changes datadescribed as changing data
“POST /v1/appAssetLibraryVideos (POST /v1/appAssetLibraryVideos) Body shape: see OpenAPI components.schemas.AppAssetLibraryVideoCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_asset_library_videos_get_instancereads or searches
“GET /v1/appAssetLibraryVideos/{id} (GET /v1/appAssetLibraryVideos/{id})”
5 inputs, 1 required
fields_appAssetLibraryVideosarray or string“the fields to include for returned resources of type appAssetLibraryVideos”fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”includearray or string“comma-separated list of relationships to include”limit_placementsinteger“maximum number of related placements returned (when they are included)”idstringrequired“the id of the requested resource”
- app_asset_library_videos_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/appAssetLibraryVideos/{id} (PATCH /v1/appAssetLibraryVideos/{id}) Body shape: see OpenAPI components.schemas.AppAssetLibraryVideoUpdateRequest for the full JSON:API envelope.”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- app_asset_library_videos_delete_instancedeletesdescribed as changing data
“DELETE /v1/appAssetLibraryVideos/{id} (DELETE /v1/appAssetLibraryVideos/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- app_asset_library_videos_placements_get_to_many_relationshipreads or searches
“GET /v1/appAssetLibraryVideos/{id}/relationships/placements (GET /v1/appAssetLibraryVideos/{id}/relationships/placements)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- app_asset_library_videos_placements_get_to_many_relatedreads or searches
“GET /v1/appAssetLibraryVideos/{id}/placements (GET /v1/appAssetLibraryVideos/{id}/placements)”
20 inputs, 1 required
filter_placementTypearray or string“filter by attribute 'placementType'”filter_placementGrouparray or string“filter by attribute 'placementGroup'”filter_statearray or string“filter by attribute 'state'”filter_imagearray or string“filter by id(s) of related 'image'”filter_appEventLocalizationarray or string“filter by id(s) of related 'appEventLocalization'”filter_appStoreVersionLocalizationarray or string“filter by id(s) of related 'appStoreVersionLocalization'”filter_appCustomProductPageLocalizationarray or string“filter by id(s) of related 'appCustomProductPageLocalization'”filter_appStoreVersionExperimentTreatmentLocalizationarray or string“filter by id(s) of related 'appStoreVersionExperimentTreatmentLocalization'”filter_idarray or string“filter by id(s)”sortarray or string“comma-separated list of sort expressions; resources will be sorted as specified”fields_appAssetLibraryPlacementsarray or string“the fields to include for returned resources of type appAssetLibraryPlacements”fields_appAssetLibraryImagesarray or string“the fields to include for returned resources of type appAssetLibraryImages”fields_appAssetLibraryVideosarray or string“the fields to include for returned resources of type appAssetLibraryVideos”fields_appEventLocalizationsarray or string“the fields to include for returned resources of type appEventLocalizations”fields_appStoreVersionLocalizationsarray or string“the fields to include for returned resources of type appStoreVersionLocalizations”fields_appCustomProductPageLocalizationsarray or string“the fields to include for returned resources of type appCustomProductPageLocalizations”fields_appStoreVersionExperimentTreatmentLocalizationsarray or string“the fields to include for returned resources of type appStoreVersionExperimentTreatmentLocalizations”limitinteger“maximum resources per page”includearray or string“comma-separated list of relationships to include”idstringrequired“the id of the requested resource”
- app_availabilities_v2_create_instancecreates or changes datadescribed as changing data
“POST /v2/appAvailabilities (POST /v2/appAvailabilities) Body shape: see OpenAPI components.schemas.AppAvailabilityV2CreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_availabilities_v2_get_instancereads or searches
“GET /v2/appAvailabilities/{id} (GET /v2/appAvailabilities/{id})”
5 inputs, 1 required
fields_appAvailabilitiesarray or string“the fields to include for returned resources of type appAvailabilities”fields_territoryAvailabilitiesarray or string“the fields to include for returned resources of type territoryAvailabilities”includearray or string“comma-separated list of relationships to include”limit_territoryAvailabilitiesinteger“maximum number of related territoryAvailabilities returned (when they are included)”idstringrequired“the id of the requested resource”
- app_availabilities_v2_territory_availabilities_get_to_many_relationshipreads or searches
“GET /v2/appAvailabilities/{id}/relationships/territoryAvailabilities (GET /v2/appAvailabilities/{id}/relationships/territoryAvailabilities)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- app_availabilities_v2_territory_availabilities_get_to_many_relatedreads or searches
“GET /v2/appAvailabilities/{id}/territoryAvailabilities (GET /v2/appAvailabilities/{id}/territoryAvailabilities)”
5 inputs, 1 required
fields_territoryAvailabilitiesarray or string“the fields to include for returned resources of type territoryAvailabilities”fields_territoriesarray or string“the fields to include for returned resources of type territories”limitinteger“maximum resources per page”includearray or string“comma-separated list of relationships to include”idstringrequired“the id of the requested resource”
- app_categories_get_collectionreads or searches
“GET /v1/appCategories (GET /v1/appCategories)”
6 inputs
filter_platformsarray or string“filter by attribute 'platforms'”exists_parentboolean“filter by existence or non-existence of related 'parent'”fields_appCategoriesarray or string“the fields to include for returned resources of type appCategories”limitinteger“maximum resources per page”includearray or string“comma-separated list of relationships to include”limit_subcategoriesinteger“maximum number of related subcategories returned (when they are included)”
- app_categories_get_instancereads or searches
“GET /v1/appCategories/{id} (GET /v1/appCategories/{id})”
4 inputs, 1 required
fields_appCategoriesarray or string“the fields to include for returned resources of type appCategories”includearray or string“comma-separated list of relationships to include”limit_subcategoriesinteger“maximum number of related subcategories returned (when they are included)”idstringrequired“the id of the requested resource”
- app_categories_parent_get_to_one_relationshipreads or searches
“GET /v1/appCategories/{id}/relationships/parent (GET /v1/appCategories/{id}/relationships/parent)”
1 input, 1 required
idstringrequired“the id of the requested resource”
- app_categories_parent_get_to_one_relatedreads or searches
“GET /v1/appCategories/{id}/parent (GET /v1/appCategories/{id}/parent)”
2 inputs, 1 required
fields_appCategoriesarray or string“the fields to include for returned resources of type appCategories”idstringrequired“the id of the requested resource”
- app_categories_subcategories_get_to_many_relationshipreads or searches
“GET /v1/appCategories/{id}/relationships/subcategories (GET /v1/appCategories/{id}/relationships/subcategories)”
2 inputs, 1 required
limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- app_categories_subcategories_get_to_many_relatedreads or searches
“GET /v1/appCategories/{id}/subcategories (GET /v1/appCategories/{id}/subcategories)”
3 inputs, 1 required
fields_appCategoriesarray or string“the fields to include for returned resources of type appCategories”limitinteger“maximum resources per page”idstringrequired“the id of the requested resource”
- app_clip_advanced_experience_images_create_instancecreates or changes datadescribed as changing data
“POST /v1/appClipAdvancedExperienceImages (POST /v1/appClipAdvancedExperienceImages) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceImageCreateRequest for the full JSON:API envelo…”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_clip_advanced_experience_images_get_instancereads or searches
“GET /v1/appClipAdvancedExperienceImages/{id} (GET /v1/appClipAdvancedExperienceImages/{id})”
2 inputs, 1 required
fields_appClipAdvancedExperienceImagesarray or string“the fields to include for returned resources of type appClipAdvancedExperienceImages”idstringrequired“the id of the requested resource”
- app_clip_advanced_experience_images_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/appClipAdvancedExperienceImages/{id} (PATCH /v1/appClipAdvancedExperienceImages/{id}) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceImageUpdateRequest for the full JSO…”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- app_clip_advanced_experiences_create_instancecreates or changes datadescribed as changing data
“POST /v1/appClipAdvancedExperiences (POST /v1/appClipAdvancedExperiences) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_clip_advanced_experiences_get_instancereads or searches
“GET /v1/appClipAdvancedExperiences/{id} (GET /v1/appClipAdvancedExperiences/{id})”
7 inputs, 1 required
fields_appClipAdvancedExperiencesarray or string“the fields to include for returned resources of type appClipAdvancedExperiences”fields_appClipsarray or string“the fields to include for returned resources of type appClips”fields_appClipAdvancedExperienceImagesarray or string“the fields to include for returned resources of type appClipAdvancedExperienceImages”fields_appClipAdvancedExperienceLocalizationsarray or string“the fields to include for returned resources of type appClipAdvancedExperienceLocalizations”includearray or string“comma-separated list of relationships to include”limit_localizationsinteger“maximum number of related localizations returned (when they are included)”idstringrequired“the id of the requested resource”
- app_clip_advanced_experiences_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/appClipAdvancedExperiences/{id} (PATCH /v1/appClipAdvancedExperiences/{id}) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceUpdateRequest for the full JSON:API envelope.”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- app_clip_app_store_review_details_create_instancecreates or changes datadescribed as changing data
“POST /v1/appClipAppStoreReviewDetails (POST /v1/appClipAppStoreReviewDetails) Body shape: see OpenAPI components.schemas.AppClipAppStoreReviewDetailCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_clip_app_store_review_details_get_instancereads or searches
“GET /v1/appClipAppStoreReviewDetails/{id} (GET /v1/appClipAppStoreReviewDetails/{id})”
4 inputs, 1 required
fields_appClipAppStoreReviewDetailsarray or string“the fields to include for returned resources of type appClipAppStoreReviewDetails”fields_appClipDefaultExperiencesarray or string“the fields to include for returned resources of type appClipDefaultExperiences”includearray or string“comma-separated list of relationships to include”idstringrequired“the id of the requested resource”
- app_clip_app_store_review_details_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/appClipAppStoreReviewDetails/{id} (PATCH /v1/appClipAppStoreReviewDetails/{id}) Body shape: see OpenAPI components.schemas.AppClipAppStoreReviewDetailUpdateRequest for the full JSON:API env…”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- app_clip_default_experience_localizations_create_instancecreates or changes datadescribed as changing data
“POST /v1/appClipDefaultExperienceLocalizations (POST /v1/appClipDefaultExperienceLocalizations) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceLocalizationCreateRequest for the fu…”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_clip_default_experience_localizations_get_instancereads or searches
“GET /v1/appClipDefaultExperienceLocalizations/{id} (GET /v1/appClipDefaultExperienceLocalizations/{id})”
5 inputs, 1 required
fields_appClipDefaultExperienceLocalizationsarray or string“the fields to include for returned resources of type appClipDefaultExperienceLocalizations”fields_appClipDefaultExperiencesarray or string“the fields to include for returned resources of type appClipDefaultExperiences”fields_appClipHeaderImagesarray or string“the fields to include for returned resources of type appClipHeaderImages”includearray or string“comma-separated list of relationships to include”idstringrequired“the id of the requested resource”
- app_clip_default_experience_localizations_update_instancecreates or changes datadescribed as changing data
“PATCH /v1/appClipDefaultExperienceLocalizations/{id} (PATCH /v1/appClipDefaultExperienceLocalizations/{id}) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceLocalizationUpdateReques…”
2 inputs, 2 required
idstringrequired“the id of the requested resource”bodyobjectrequired“JSON body.”
- app_clip_default_experience_localizations_delete_instancedeletesdescribed as changing data
“DELETE /v1/appClipDefaultExperienceLocalizations/{id} (DELETE /v1/appClipDefaultExperienceLocalizations/{id})”
1 input, 1 required
idstringrequired“the id of the requested resource”
- app_clip_default_experience_localizations_app_clip_header_image_get_to_one_rela…reads or searches
“GET /v1/appClipDefaultExperienceLocalizations/{id}/relationships/appClipHeaderImage (GET /v1/appClipDefaultExperienceLocalizations/{id}/relationships/appClipHeaderImage)”
1 input, 1 required
idstringrequired“the id of the requested resource”
- app_clip_default_experience_localizations_app_clip_header_image_get_to_one_rela…reads or searches
“GET /v1/appClipDefaultExperienceLocalizations/{id}/appClipHeaderImage (GET /v1/appClipDefaultExperienceLocalizations/{id}/appClipHeaderImage)”
4 inputs, 1 required
fields_appClipHeaderImagesarray or string“the fields to include for returned resources of type appClipHeaderImages”fields_appClipDefaultExperienceLocalizationsarray or string“the fields to include for returned resources of type appClipDefaultExperienceLocalizations”includearray or string“comma-separated list of relationships to include”idstringrequired“the id of the requested resource”
- app_clip_default_experiences_create_instancecreates or changes datadescribed as changing data
“POST /v1/appClipDefaultExperiences (POST /v1/appClipDefaultExperiences) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceCreateRequest for the full JSON:API envelope.”
1 input, 1 required
bodyobjectrequired“JSON body.”
- app_clip_default_experiences_get_instancereads or searches
“GET /v1/appClipDefaultExperiences/{id} (GET /v1/appClipDefaultExperiences/{id})”
8 inputs, 1 required
fields_appClipDefaultExperiencesarray or string“the fields to include for returned resources of type appClipDefaultExperiences”fields_appClipsarray or string“the fields to include for returned resources of type appClips”fields_appStoreVersionsarray or string“the fields to include for returned resources of type appStoreVersions”fields_appClipDefaultExperienceLocalizationsarray or string“the fields to include for returned resources of type appClipDefaultExperienceLocalizations”fields_appClipAppStoreReviewDetailsarray or string“the fields to include for returned resources of type appClipAppStoreReviewDetails”includearray or string“comma-separated list of relationships to include”limit_appClipDefaultExperienceLocalizationsinteger“maximum number of related appClipDefaultExperienceLocalizations returned (when they are included)”idstringrequired“the id of the requested resource”
Each quoted sentence is the first sentence of the publisher’s own description. The kind of tool and the “changes data” mark are our AI model’s reading of that description, not something we tested: two differently worded runs had to agree, otherwise no label is shown, and nobody has checked them by hand. A tool without the “changes data” mark is described as only reading, searching or calculating, or the two runs did not agree. No tool was called. Read the publisher’s full description before relying on it. Inputs are the parameters in the tool's own input schema: name, declared type, whether it is required, and the first sentence of its description. The first 100 of 1,316 tools are listed. Read 2026-10-23.
How well are its tools described?
Features #4 and #5
How clearly this server's own tool descriptions say what a tool does, and how consistent its tool list is. The first part is an AI model's yes/no reading of each description; the second part is counted. We do not turn it into a grade.
Descriptions
AI reading of each description
- Says what the tool does
- 100% of 1,316 tools
- Says what it returns
- 52% of 1,028 tools
- States limits, defaults or errors
- 43% of 1,247 tools
- Says when to use it
- 0% of 1,312 tools
- Items covered per tool
- 1.9 of 4 on average
Counted from the listing
- Parameters with a description
- 99% of 4,983
- Tools with a description
- 100% of 1,316
- Typical description length
- 128 characters
The tool set
Counted from the listing
- Tools
- 1,316
- Size of the list
- about 370,558 tokens for an agent to load (characters ÷ 4)
- Naming
- 1316 of 1,316 names use snake_case
AI reading: easy to mix up
No pair found.
The AI items cover 1,316 of 1,316 tools: for a tool where two differently worded runs disagreed, that item is left out. They were not checked by hand, and no tool was called. “Easy to mix up” means two tools whose names or descriptions overlap without saying how they differ; the AI found none, comparing tools within groups of 40. We do not rate whether the tool set is complete or whether side effects are spelled out, because our AI reading of those was not reliable enough.
How do I add it to my client?
Config from the registry entry
From the npm package apple-app-store-connect-mcp
Our sandbox started this package on 2026-10-23 (a read-only session: no tool was called).
Add to CursorAn install link in the format Cursor documents, holding the Cursor config below. The command runs the publisher’s code on your machine.
Claude Desktop · claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"app-store-connect-mcp": {
"command": "npx",
"args": [
"-y",
"apple-app-store-connect-mcp@0.5.0"
]
}
}
}Cursor · .cursor/mcp.json in a project, or ~/.cursor/mcp.json
{
"mcpServers": {
"app-store-connect-mcp": {
"command": "npx",
"args": [
"-y",
"apple-app-store-connect-mcp@0.5.0"
]
}
}
}VS Code · .vscode/mcp.json
{
"servers": {
"app-store-connect-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"apple-app-store-connect-mcp@0.5.0"
]
}
}
}VS Code (command line) · Bash or zsh terminal (macOS, Linux)
code --add-mcp '{"name":"app-store-connect-mcp","type":"stdio","command":"npx","args":["-y","apple-app-store-connect-mcp@0.5.0"]}'Claude Code
claude mcp add --transport stdio app-store-connect-mcp -- npx -y apple-app-store-connect-mcp@0.5.0
Try it in the MCP Inspector · runs on your machine, opens in your browser · Node 22.19+
npx @modelcontextprotocol/inspector@2.11.0 -- npx -y apple-app-store-connect-mcp@0.5.0
- This runs the publisher's code on your machine (npx). Read its README first.
- The MCP Inspector lists the server's tools, resources and prompts; a tool you call there runs for real.
Built from the server's registry entry with each client's documented format (checked 2026-10-14; the Cursor link and the VS Code command 2026-10-19; the MCP Inspector command 2026-10-21). Values in < > are yours to fill in; this page never contains a key. Where the server needs a setting the entry does not declare, it can still fail to start.
Can it be installed, and is it up to date?
Version pin · advisories
Listed version
- Registry lists
- 0.5.0
- Latest stable
- 0.5.0
- Status
- current
- Withdrawn
- no
Source: registry.npmjs.org · 2026-10-23. About the version the registry lists; a manual install may resolve to a different one.
Dependency advisories
Counted in the full dependency tree as resolved on 2026-10-23 (npm audit). Bars share one scale. The package itself has no known vulnerability (OSV.dev).
Integrity, provenance, license
- Integrity
- sha512-raC3WGxljveRitRJt…
- Signature
- signed and attested
- License
- MIT
Source: the package registry · 2026-10-23.
Usage
- Downloads
- 1,610 in the last month
Source: api.npmjs.org · 2026-10-23.
Does the registry listing match what we found?
Feature #6The registry verifies a package once, when it is published, and does not re-check it. A difference below is about the listing, not a judgement of the publisher.
| Registry says | We found | Result | Source · date |
|---|---|---|---|
| Published package can be started | Started and answered | matches | our test · 2026-10-23 |
| Version 0.5.0 on npm | Exists and can be installed | matches | npm · 2026-10-23 |
| Repository github.com/devinwang/app-store-connect-mcp | Opens publicly | matches | api.github.com · 2026-10-23 |
Who made it?
Feature #7 · lineage
Facts about the publisher. We do not turn them into a trust score.
- Namespace
- io.github.devinwang · 3 servers
- GitHub owner
- a personal account (devinwang)
- Build record
- signed and attested
- Repository
- github.com/devinwang/app-store-connect-mcp
- Stars
- 3
- Repository age
- 181–365 days
- Last push
- 0–30 days ago
- Archived
- no
- Security policy
- docs/SECURITY.md
Source: the registry entry and api.github.com · 2026-10-23; security policy read from GitHub · 2026-10-23.
Publish this server? Run these checks against it yourself before release, from your own machine: a server the command starts, or your own server at its URL after a one-time proof that you control it: npx protocolprobe-selftest.
Choosing
Record checks
Public records · not a safety rating9 of 9 record checks met
- #1,531 of 15,112 packages by monthly downloads, tied with 1 other
- Not ranked by stars: 3 stars (ranked from 10)
- #271 of 1,074 packages meeting all 9 record checks, by downloads
- MetRegistry entry is active and says how to run itActive, with a package or a remote address.
- MetSource repository link opensThe linked GitHub repository is public.
- MetRepository is not archivedNot archived.
- MetCode pushed to the repository in the 90 days before our checkLast push 0-30 days before our check.
- MetRepository publishes a security policy (SECURITY.md)SECURITY.md found.
- MetPackage names its licence with a standard (SPDX) identifierMIT
- MetThe version the registry lists can be installed and is not withdrawnThe listed version exists and is current.
- Metnpm package carries build provenance (attestation)Signed, with a build attestation naming the source and workflow.
- MetNo known critical or high advisory in the package or its dependenciesNone known in the package or its dependency tree.
Read from public records only: the registry entry, npm/PyPI, GitHub and advisory databases, checked 2026-10-23. No tool was called. Only “met” and “not met” are counted, so the total differs between servers; a check that does not apply or that we could not run is listed, never counted against it. It is not a safety rating. How each check works · Leaderboards
Common questions about io.github.devinwang/app-store-connect-mcp
Answered from the data aboveIs io.github.devinwang/app-store-connect-mcp safe to install?
We do not rate servers as safe or unsafe. 9 of its 9 applicable record checks are met (facts from public records, each listed on this page). What the records show: Its npm package carries a build-provenance attestation that names its source repository and build workflow. Its source repository opens publicly. Its repository had a push in the last 90 days. The listed version is the latest stable release. The package itself has no known vulnerability (OSV.dev). Its full dependency tree has no known advisory. 483 of its tools describe changing data (our AI model's reading of the descriptions). These are facts with their sources on this page, not a safety guarantee, and we did not run its tools.
Has io.github.devinwang/app-store-connect-mcp been security tested?
Partly. 2 of the 12 checks that apply to it were exercised. We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security verdict is published before verification.
What can io.github.devinwang/app-store-connect-mcp do?
It lists 1,316 tools. In our AI model's reading of their descriptions (two runs had to agree, nobody checked it by hand), they include tools that read or search, create or change data, delete and send messages. We did not call any tool, so this describes the text, not the behaviour.
Can io.github.devinwang/app-store-connect-mcp change or delete data?
483 of its tools say in their description that they create, edit, delete, send or run something (our AI model's reading). We did not call any tool, so we cannot say what actually happens.
Does io.github.devinwang/app-store-connect-mcp publish a security policy?
Yes: its repository has a public security policy (github.com/devinwang/app-store-connect-mcp/blob/HEAD/docs/SECURITY.md). That is the publisher's statement, not permission for us to test the server, and we call none of its tools.
Is the listed version current?
Yes. The registry lists 0.5.0, the latest stable release on npm.
Where is the source code of io.github.devinwang/app-store-connect-mcp?
In github.com/devinwang/app-store-connect-mcp, which opens publicly.
Found this page useful?
Anonymous · no sign-inA quick, anonymous reaction — no account, no email. One per kind from your browser. The tally updates when the page is next refreshed, and it is only a rough count, never a safety rating or a measured number of people.
Similar servers
Same topic · AI-read
- io.github.callstack/agent-deviceagent-devicealso has tools that creates or changes data, deletes, reads or searches, sends messagescompare with this one
- io.github.A9T9/uivision-mcpUi.Vision MCPalso has tools that creates or changes data, deletes, reads or searches, sends messagescompare with this one
- io.github.tomyud1/godot-mcpalso has tools that creates or changes data, deletes, reads or searches, sends messagescompare with this one
- io.github.IMNMV/clauderClaudeR - RStudio MCP Serveralso has tools that creates or changes data, deletes, reads or searches, sends messagescompare with this one
- io.github.mertkayacs/reevesagentsreevesagentsalso has tools that creates or changes data, deletes, reads or searches, sends messagescompare with this one
- io.github.mikusnuz/app-publishalso has tools that creates or changes data, deletes, reads or searches, sends messagescompare with this one
Active servers whose topic is also “developer-tools” and that have at least one tool of the same kind; most kinds in common first, then most GitHub stars. The topic and the tool kinds are an AI model's reading of the publishers' descriptions, not checked by hand. Similar is not a recommendation.
Compare with another server
Side by side: registry entry, our read-only session, the tools and the 18 classification fields. Same values as each page; no score.
Security testing
What did we test, and what did we leave out?
18 checks · features #1, #2
Not probed (read-only run)
We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security score is given; a check we did not run is never counted as passed.
- Inventory: exercised
- Hidden instructions: exercised
- Real execution: not run · our policy
- Secret leak: not run · nothing to check it against
- Internal addresses: not run · our policy
- Unconfirmed changes: not run · our policy
- Bad input: not run · our policy
- Model requests: not run · nothing to check it against
- Sensitive questions: not run · nothing to check it against
- Folder boundary: not run · our policy
- Log leaks: not run · nothing to check it against
- Hidden content: not run · nothing to check it against
- Fake assistant turns: not applicable
- Token passthrough: not applicable
- Token audience: not applicable
- Sign-in redirect: not applicable
- Consent handling: not applicable
- Sign-in metadata: not applicable
2 exercised10 not run (reason given)6 not applicable
Each check ends in exactly one state: exercised, not run (with the reason), or not applicable (with the reason). 2 of the 12 checks that apply to it were exercised. We do not publish security-check outcomes for named servers.
- 1Inventory
tool-listReads the declared tools, resources and prompts.exercised - 2Hidden instructions
description-poisoningLooks for hidden instructions in tool descriptions.exercised
- 3Real execution
real-executionCalls a tool and checks what really happens.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 4Secret leak
canary-leakPlants a fake secret and checks whether it leaks.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against - 5Internal addresses
ssrfChecks whether a tool can be steered to internal addresses.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 6Unconfirmed changes
write-without-confirmationChecks whether tools that change data act without asking.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 7Bad input
error-handlingSends bad input and watches how the server answers.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 8Model requests
samplingChecks whether the server asks the client's model to act for it.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against - 9Sensitive questions
elicitation-sensitive-dataChecks whether the server asks users for sensitive data.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against - 10Folder boundary
root-boundaryChecks whether the server reaches outside the folders it was given.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 11Log leaks
logging-side-channelChecks whether log messages carry data they should not.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against - 12Hidden content
audience-hidingChecks resources that hide content from the user.This check needs content the server returns, and nothing was read or called.not run · nothing to check it against
- 13Fake assistant turns
fake-assistant-turnChecks prompts that pose as the assistant's own words.The server exposes no prompts.not applicable - 14Token passthrough
token-passthroughChecks whether the server forwards a user's token to other services.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 15Token audience
token-audience-validationChecks whether tokens meant for another service are accepted.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 16Sign-in redirect
open-redirectChecks the sign-in redirect for abuse.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 17Consent handling
confused-deputyChecks consent handling when one service acts for another.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 18Sign-in metadata
oauth-url-schemeChecks the published sign-in metadata for unsafe URLs.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
Source: our own test in an isolated sandbox, 2026-10-23, mcp-runtime-engine@0.1.0. Which checks count and why follows our published scoring model.
What happened during the test?
Feature #8
The steps in order, as the test record holds them.
- 0 msStarted the published package in an isolated sandbox (read-only mode)
- 3,929 msConnected after 0 redirects.
- Read the inventory: 1,316 tools, 0 resources, 0 prompts.
- 14,697 msFinished: 2 checks exercised.
Reference
How is it classified?
18 fields
One value per field, each with its source. Fields written by AI models are marked. A field with no value says why.
“Not stated” means the source did not state it; “does not apply” means it does not apply to this kind of server; “our limit” means our own lookup failed. A linked value opens the directory filtered to the same value.
Cite or correct this page
Sources and corrections
Suggested citation
ProtocolProbe. “io.github.devinwang/app-store-connect-mcp: MCP server record.” Data checked 2026-10-23. https://protocolprobe.com/mcp/servers/io.github.devinwang/app-store-connect-mcp
Figures are valid for the date shown. Our facts on this page are CC BY 4.0: reuse them with a link and the check date. Quoted text (the publisher’s descriptions, website quotes, tool names) is not ours to license.
As JSON: this record in the API · API documentation.
Badge for your README
[](https://protocolprobe.com/mcp/servers/io.github.devinwang/app-store-connect-mcp)
It shows this server's record-check count: facts from public records, no tool called. It is not a security rating or a pass. It links here and updates after each data reload.
Something wrong, or is this yours?
If a fact here is wrong, tell us and we will re-check it. If you operate this server, you can run our checks on it yourself with the free self-test command; we call no server’s tools ourselves for anything shown here.
Write to hello@protocolprobe.com · corrections log · methodology