← Back to search

io.github.akoskomuves/appstoreconnect-mcp

akoskomuves Scanned 26d ago

App Store Connect for MCP clients: PPP pricing, subscriptions, TestFlight, reviews, reports & more

D
40 / 100

Versions

1.3.1latest
Jul 30, 2026
1.3.0
Jul 30, 2026
1.2.0
Jul 10, 2026
1.1.0
Jul 10, 2026
1.0.2
Jul 8, 2026
+ show 27 moreshow less
1.0.1
Jun 17, 2026
1.0.0
Jun 12, 2026
0.21.0
Jun 12, 2026
0.20.0
Jun 12, 2026
0.19.0
Jun 12, 2026
0.18.1
Jun 12, 2026
0.18.0
Jun 12, 2026
0.17.0
Jun 12, 2026
0.16.0
Jun 11, 2026
0.15.0
Jun 10, 2026
0.14.0
Jun 9, 2026
0.13.0
Jun 6, 2026
0.12.0
Jun 4, 2026
0.11.0
Jun 2, 2026
0.10.1
Jun 1, 2026
0.10.0
Jun 1, 2026
0.9.0
Jun 1, 2026
0.8.1
May 31, 2026
0.8.0
May 26, 2026
0.7.0
May 21, 2026
0.6.0
May 21, 2026
0.5.0
May 16, 2026
0.4.0
May 15, 2026
0.3.0
May 11, 2026
0.2.0
May 10, 2026
0.1.2
May 10, 2026
0.1.1
May 10, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 356

asc_list_promoted_purchases
annotations: none low

List PromotedPurchase records under an app. Each row carries the visibleForAllUsers flag, enabled flag, current state (PREPARE_FOR_SUBMISSION / IN_REVIEW / APPROVED / REJECTED), the linked IAP / subscription ID, and the promoted-purchase ID. Use to inspect which promotions exist before patching, reordering, or deleting.

asc_get_promoted_purchase
annotations: none low

Fetch a single PromotedPurchase by ID with its linked IAP / subscription expanded. Returns visibleForAllUsers + enabled + state + the relationship info for the promoted item.

asc_post_promoted_purchase
annotations: none low

Create a PromotedPurchase on an app, linking it to ONE IAP (inAppPurchaseV2Id) OR ONE subscription (subscriptionId) — pass exactly one. Required: appId + visibleForAllUsers. Optional: enabled. Wire-key gotchas: Swift `isVisibleForAllUsers` / `isEnabled` → wire `visibleForAllUsers` / `enabled` (same is-prefix-strip family as v0.13 AppCustomProductPage.isVisible). New promoted purchases land in PREPARE_FOR_SUBMISSION.

asc_patch_promoted_purchase
annotations: none low

Update visibleForAllUsers and/or enabled on an existing PromotedPurchase. Wire-key gotchas: Swift `isVisibleForAllUsers` / `isEnabled` → wire `visibleForAllUsers` / `enabled`. Toggle enabled=false to retire a promotion without deleting the linkage. Tool refuses empty PATCH.

asc_delete_promoted_purchase
annotations: none low

DELETE a PromotedPurchase. Removes the IAP / subscription from the promoted slots on the storefront. The underlying IAP / subscription is NOT deleted — only the promotion linkage.

asc_list_ci_build_runs
annotations: none low

List build runs of a workflow (workflowId) or across a whole product (productId) — pass exactly one. Newest runs carry executionProgress until they finish, then completionStatus. The ISSUES column is errors/warnings/testFailures/analyzerWarnings.

asc_patch_promoted_purchases_order
annotations: none low

PATCH /v1/apps/{id}/relationships/promotedPurchases with the ordered list of promoted-purchase IDs. The order in the array IS the storefront display order — slot 1 is the first ID, slot 2 the second, etc. Send the FULL ordered list; Apple replaces the entire ordering. Use asc_list_promoted_purchases to enumerate current IDs first.

asc_get_beta_group_recruitment_criterion
annotations: none low

GET /v1/betaGroups/{id}/betaRecruitmentCriteria — the group's single recruitment criterion (a beta group has at most one; the plural path segment is Apple's naming, the response is one resource). Returns deviceFamilyOsVersionFilters + lastModifiedDate. When the group has NO criterion yet, Apple answers 409 ENTITY_ERROR (observed live) — this tool translates that to a clear 'no criterion yet' message; create one with asc_post_beta_recruitment_criterion.

asc_post_beta_recruitment_criterion
annotations: none low

POST /v1/betaRecruitmentCriteria — gate public-link auto-recruitment on a beta group to devices matching the given device-family + OS-version windows. The group should be EXTERNAL with the public link enabled (see asc_patch_beta_group) for the criterion to have any effect. One criterion per group — if one already exists, PATCH it instead. Valid OS versions per family: asc_list_beta_recruitment_criterion_options. After creating, sanity-check with asc_get_beta_recruitment_compatible_build_check that matching devices can actually install a build.

asc_patch_beta_recruitment_criterion
annotations: none low

PATCH /v1/betaRecruitmentCriteria/{id} — REPLACES the whole deviceFamilyOsVersionFilters array (no per-entry add/remove on the wire). Read the current set first with asc_get_beta_group_recruitment_criterion, then send the complete desired set.

asc_delete_beta_recruitment_criterion
annotations: none low

DELETE /v1/betaRecruitmentCriteria/{id} — remove the criterion entirely; the public link goes back to accepting ANY device. The beta group and its public link are untouched.

asc_list_beta_recruitment_criterion_options
annotations: none low

GET /v1/betaRecruitmentCriterionOptions — the device families and OS versions Apple currently accepts in deviceFamilyOsVersionFilters. Consult before creating/patching a criterion so min/max values are valid.

asc_get_beta_recruitment_compatible_build_check
annotations: none low

GET /v1/betaGroups/{id}/betaRecruitmentCriterionCompatibleBuildCheck — hasCompatibleBuild tells you whether the group currently distributes at least one build that devices matching the recruitment criteria could install. false means public-link joiners who pass the criteria would find NO installable build — fix the criteria or assign a compatible build before promoting the link. 404s when the group has no criterion at all (observed live) — the check only exists once a criterion does.

asc_list_sandbox_testers
annotations: none low

List the StoreKit sandbox test accounts of the team — name, Apple Account (acAccountName), territory, accelerated subscription renewal rate, interrupt-purchases flag. Testers are created in the ASC UI; the API manages their settings. Lives on /v2 (no v1 surface).

asc_patch_sandbox_tester
annotations: none low

Update a sandbox tester's settings: territory (3-letter ISO — changes the storefront the tester purchases against), interruptPurchases (forces the App Store 'ask to buy'-style interruption sheet on every purchase), subscriptionRenewalRate (accelerated renewals — e.g. a month renews every 5 minutes — for testing renewal/billing-retry/grace flows). Pass at least one. Sandbox-only; no production effect.

asc_post_sandbox_testers_clear_purchase_history
annotations: none low

Wipe the SANDBOX purchase records of the listed testers so IAP/subscription flows can be re-tested from scratch (intro-offer eligibility resets too). Sandbox-only — production purchases are never touched. Relationships-only POST to /v2/sandboxTestersClearPurchaseHistoryRequest.

asc_list_app_categories
annotations: none low

List Apple's App Store category catalog with subcategories included. Read-only. Each category carries the platforms it applies to (IOS/MAC_OS/TV_OS/VISION_OS); subcategories are returned in `included[]` via the parent → subcategories relationship. Use to resolve human-readable category names to category IDs before calling asc_patch_app_info to set primary/secondary categories.

asc_list_app_tags
annotations: none low

List the AppTag membership for an app — Apple's structured-ASO tag surface. Each row shows the tag name and isVisibleInAppStore flag.

asc_patch_app_tag
annotations: none low

Toggle whether an AppTag is shown in the App Store search/product page UI. Wire key `visibleInAppStore` (stripped from Swift `isVisibleInAppStore`). Setting false hides the tag without removing it from the app's tag list — flip true to re-show.

asc_list_search_keywords
annotations: none low

List Apple's aggregated AppKeyword records for an app — every keyword Apple has indexed across the app's localizations. Optional filter[platform] + filter[locale] to narrow. Read-only at this surface; actual keyword writes still happen via the per-version `keywords` field on AppStoreVersionLocalization (v0.10's asc_patch_app_store_version_localization).

asc_list_ci_products
annotations: none low

List Xcode Cloud products — one per app/framework onboarded to Xcode Cloud. The product id is the root of the CI hierarchy (workflows hang off it).

asc_list_ci_workflows
annotations: none low

List a product's workflows with their isEnabled / isLockedForEditing / clean flags. Use asc_get_ci_workflow for the full start-condition + actions configuration.

asc_get_ci_workflow
annotations: none low

Fetch a workflow with its complete configuration: start conditions (branch/tag/PR/scheduled/manual), actions[] (build/test/archive/analyze steps with platform + destination), container file path, Xcode + macOS version relationships. Raw JSON — the config is deeply nested.

asc_get_ci_build_run
annotations: none low

Fetch one build run with source/destination commit details, issue counts, progress/completion status and start/cancel reasons. Raw JSON (the commit structs are nested).

asc_list_ci_build_actions
annotations: none low

List the build actions (build / test / archive / analyze steps) of a run, with per-action status and issue counts. Action ids feed asc_list_ci_issues / asc_list_ci_test_results / asc_list_ci_artifacts.

asc_list_ci_issues
annotations: none low

List the compiler/analyzer/test issues an action produced (type, category, file:line, message). The digest truncates messages at 120 chars — raw:true for full text.

asc_list_ci_test_results
annotations: none low

List per-test results of a TEST action (class, test name, status, failure message). Per-device destination details are in raw:true.

asc_list_ci_artifacts
annotations: none low

List the artifacts an action produced (archive, logs, result bundles, symbols). Fetch a single artifact with asc_get_ci_artifact to get its pre-signed downloadUrl.

asc_get_ci_artifact
annotations: none low

Fetch one artifact including its downloadUrl. The URL is pre-signed and TIME-LIMITED — download promptly, and fetch it WITHOUT the ASC bearer token (same pattern as analytics report segments).

asc_list_ci_build_run_builds
annotations: none low

List the TestFlight builds created by an Xcode Cloud run — the handoff point from CI to the v0.9 TestFlight surface (beta groups, testers, submit).

asc_list_ci_environment_versions
annotations: none low

The Xcode and macOS versions Xcode Cloud currently offers — what a workflow's xcodeVersion / macOsVersion relationships can point at. Raw JSON (testDestinations nested under each Xcode version).

asc_list_scm_providers
annotations: none low

List the SCM connections of the team (GitHub / GitHub Enterprise / GitLab / Bitbucket), with provider type + endpoint URL. Provider ids feed asc_list_scm_repositories.

asc_list_scm_repositories
annotations: none low

List the repositories Xcode Cloud can see — all of them, or those of one provider (providerId). Repo ids feed the git-reference and pull-request listings.

asc_list_scm_git_references
annotations: none low

List the branches + tags of a repository as Apple tracks them. The reference id (NOT the bare branch name) is what asc_post_ci_build_run takes as sourceBranchOrTag.

asc_list_scm_pull_requests
annotations: none low

List the pull requests of a repository as Apple tracks them — number, title, source→destination branches, open/closed.

asc_post_ci_build_run
annotations: none low

Start a build run of a workflow. Defaults to the workflow's configured branch; pass gitReferenceId (from asc_list_scm_git_references — the reference id, not a bare branch name) to build a specific branch/tag, and clean:true to skip the derived-data cache. Uses compute hours from the team's Xcode Cloud allowance.

asc_patch_ci_workflow
annotations: none low

PATCH a workflow: isEnabled (pause/resume it — the main use), clean, name, description. Deliberately does NOT expose the start-condition / actions[] structures — edit those in Xcode where they are validated. Pass at least one attribute. Wire note: the attribute really is `isEnabled` — Xcode Cloud keeps is-prefixes on the wire.

asc_list_beta_feedback_screenshot_submissions
annotations: none low

List screenshot feedback testers sent from TestFlight via GET /v1/apps/{id}/betaFeedbackScreenshotSubmissions. Each row shows created date, device, OS, comment preview, screenshot count, and build/tester linkage. Filter by build to triage feedback per release ("summarize feedback on build 132"). Read-only resource — testers create these from the device.

asc_get_beta_feedback_screenshot_submission
annotations: none low

Fetch one screenshot feedback submission with full device context (connection type, battery, disk, uptime, screen size) and the screenshots array — each entry carries url + width + height + expirationDate. The URLs are time-limited Apple-signed download links; if one has expired, re-run this tool for fresh URLs. include=build,tester for triage context.

asc_delete_beta_feedback_screenshot_submission
annotations: none low

DELETE /v1/betaFeedbackScreenshotSubmissions/{id}. Permanently removes the feedback record and its screenshot images from App Store Connect — same as dismissing it in the TestFlight feedback UI. Irreversible; the tester is not notified.

asc_list_beta_feedback_crash_submissions
annotations: none low

List crash feedback testers agreed to share from TestFlight via GET /v1/apps/{id}/betaFeedbackCrashSubmissions. Same filters as the screenshot list (build, tester, device, OS, platform). Each record has a crashLog relationship — pull the log text with asc_get_beta_feedback_crash_log. Read-only resource.

asc_get_beta_feedback_crash_submission
annotations: none low

Fetch one crash feedback submission with full device context. include=build,tester for triage context. This returns the submission METADATA only — for the crash log text itself use asc_get_beta_feedback_crash_log.

asc_get_beta_feedback_crash_log
annotations: none low

GET /v1/betaFeedbackCrashSubmissions/{id}/crashLog — returns the betaCrashLogs resource whose logText attribute is the full symbolicated-or-raw crash log. Logs can be large; output is capped at maxChars (default 200k) with a truncation note. Use after asc_list_beta_feedback_crash_submissions to drill into a specific crash. NOTE: Apple stores logs for a limited time — older submissions 404 here even though their metadata still lists (observed live on ~4-month-old submissions); the submission record itself remains readable.

asc_delete_beta_feedback_crash_submission
annotations: none low

DELETE /v1/betaFeedbackCrashSubmissions/{id}. Permanently removes the crash feedback record (including its crash log) from App Store Connect. Irreversible; the tester is not notified.

asc_list_app_event_video_clips
annotations: none low

List AppEventVideoClip records under an AppEventLocalization. Each row carries fileName + fileSize + previewFrameTimeCode + asset slot (EVENT_CARD / EVENT_DETAILS_PAGE) + the two delivery states (assetDeliveryState for the source file, videoDeliveryState for Apple-side transcode).

asc_get_app_event_video_clip
annotations: none low

Fetch a single AppEventVideoClip by ID. Returns the upload metadata + previewFrameTimeCode + (post-ingest) videoUrl + previewImage. Wire-key gotcha: Apple emits `videoUrl` (camelCase) where Swift names it `videoURL`.

asc_post_app_event_video_clip
annotations: none low

RAW step 1 of the three-step upload flow (same shape as v0.13 AppPreview). Reserves an AppEventVideoClip under an event localization with fileName + fileSize + appEventAssetType (+ optional previewFrameTimeCode for the poster frame). Returns the resource with uploadOperations[] populated. Most callers should use the composite asc_upload_app_event_video_clip instead.

asc_patch_app_event_video_clip
annotations: none low

RAW step 3 of the three-step upload flow + the only way to tweak previewFrameTimeCode on an existing clip. PATCH with uploaded=true to commit a reservation, or with previewFrameTimeCode alone to change the poster frame without re-uploading. Wire-key gotcha: Swift `isUploaded` → wire `uploaded`. Refuses empty PATCH.

asc_delete_app_event_video_clip
annotations: none low

DELETE an AppEventVideoClip. Removes the video asset; if both screenshot + video slot are emptied, Apple may reject the event for review with an asset-missing error.

asc_upload_app_event_video_clip
annotations: none low

Composite tool. Reads localFilePath from disk (.mov H.264/HEVC recommended), reserves an AppEventVideoClip under the given event localization for the given asset slot (EVENT_CARD / EVENT_DETAILS_PAGE), PUTs every uploadOperation chunk to Apple storage in sequence, then commits with uploaded=true. Optionally sets previewFrameTimeCode (poster frame) at reserve. Returns the committed resource + per-chunk summary. Tilde paths (~/...) are expanded.

asc_list_app_event_screenshots
annotations: none low

List AppEventScreenshot records under an AppEventLocalization. Each row carries fileName + fileSize + the asset slot (EVENT_CARD / EVENT_DETAILS_PAGE) + assetDeliveryState (UPLOAD_COMPLETE / PROCESSING / COMPLETE / FAILED). Use to inspect upload progress or to enumerate IDs.

asc_get_app_event_screenshot
annotations: none low

Fetch a single AppEventScreenshot by ID. Returns fileName / fileSize / appEventAssetType / assetDeliveryState / the imageAsset URLs once processed / the uploadOperations[] before commit.

asc_post_app_event_screenshot
annotations: none low

RAW step 1 of the three-step upload flow (same shape as v0.13 AppScreenshot). Reserves an AppEventScreenshot under an event localization with fileName + fileSize + appEventAssetType (EVENT_CARD / EVENT_DETAILS_PAGE). Returns the resource with uploadOperations[] populated. Use asc_upload_asset_chunk to PUT each, then asc_patch_app_event_screenshot to commit. Most callers should use the composite asc_upload_app_event_screenshot instead.

asc_patch_app_event_screenshot
annotations: none low

RAW step 3 of the three-step upload flow. PATCH with uploaded=true to commit the reservation. Wire-key gotcha: Swift `isUploaded` → wire `uploaded` (same strip as v0.13 AppScreenshot). The composite asc_upload_app_event_screenshot handles this automatically.

asc_delete_app_event_screenshot
annotations: none low

DELETE an AppEventScreenshot. Removes the asset under its slot; if the slot goes empty Apple may reject the event for review with an asset-missing error.

asc_upload_app_event_screenshot
annotations: none low

Composite tool. Reads localFilePath from disk, reserves an AppEventScreenshot under the given event localization for the given asset slot (EVENT_CARD / EVENT_DETAILS_PAGE), PUTs every uploadOperation chunk to Apple storage in sequence, then commits with uploaded=true. Returns the committed resource + per-chunk summary. Tilde paths (~/...) are expanded. Note: this resource has NO sourceFileChecksum on the commit step — Apple does not require an MD5 here (unlike v0.13 AppScreenshot).

asc_get_app_availability_v2
annotations: none low

Fetch the current AppAvailabilityV2 for an app. Returns the master `availableInNewTerritories` flag (whether Apple auto-adds the app when new territories launch) + the linkage to the territoryAvailabilities the app is currently sold in. Use asc_list_territory_availabilities to enumerate the territories.

asc_list_territory_availabilities
annotations: none low

List TerritoryAvailability records for an app. The digest TERR column shows the decoded 3-letter ISO territory code (e.g. USA / BRA / JPN), but the actual TERR_ID column is an Apple-opaque base64 composite — `{"s":<appId>,"t":<code>}`. Each row carries whether the app is currently `available`, releaseDate (soft-launch date if scheduled), preOrderEnabled, preOrderPublishDate. Pass the TERR_ID (not the 3-letter code) to asc_post_app_availability_v2 / asc_end_app_availability_pre_order. NOTE: Apple\'s AppAvailability resource ID equals the app ID — both surfaces share the numeric identifier.

asc_post_app_availability_v2
annotations: none low

Create a new AppAvailabilityV2 for an app — Apple atomically swaps over to it. There is NO PATCH for this resource; you replace the whole availability by POSTing a new record. Required: appId + availableInNewTerritories + the FULL list of TerritoryAvailability IDs the app should be sold in (Apple-opaque base64 composites from asc_list_territory_availabilities; missing ones get removed). Wire-key gotcha: Swift `isAvailableInNewTerritories` → wire `availableInNewTerritories`. The IDs are NOT 3-letter codes — they are per-(app, territory) opaque blobs.

asc_get_subscription_localization
annotations: none low

Fetch a single SubscriptionLocalization by ID. Returns name + description + locale + state.

asc_end_app_availability_pre_order
annotations: none low

POST an EndAppAvailabilityPreOrder resource carrying the list of TerritoryAvailability IDs in which to end pre-order. Apple stops accepting pre-orders in those territories — the app either goes live (if past releaseDate) or back to "not-yet-available". Relationships-only body (no attributes). Pass the opaque base64 IDs from asc_list_territory_availabilities (NOT bare 3-letter codes).

asc_patch_territory_availability
annotations: none low

PATCH /v1/territoryAvailabilities/{id} — per-territory pre-order + release control: available (sell here or not), releaseDate (YYYY-MM-DD; with preOrderEnabled=true this is the announced release date customers pre-order against), preOrderEnabled (start taking pre-orders in this territory; end them with asc_end_app_availability_pre_order). The ID is the APPLE-OPAQUE composite from asc_list_territory_availabilities — bare 3-letter codes are rejected. Pass at least one attribute. ⚠️ available=false pulls the app from sale in that territory — customer-facing; confirm intent first.

asc_list_beta_groups
annotations: none low

List beta groups. Pass appId to scope to a single app (the common case). Each row shows name, kind (INT/EXT), tester-count via the betaTesters relationship if requested, public-link state, and ID. Use to find a group before assigning a build or inviting testers.

asc_get_beta_group
annotations: none low

Fetch a single beta group with relationships expanded (app + builds + betaTesters). Use to see the full membership before adding/removing testers or builds. Apple's tester list under a group can be large — paginate via asc_list_beta_testers with the group filter if you need the full list cleanly.

asc_post_beta_group
annotations: none low

Create a beta group on an app. Required: name + appId. Optional: isInternalGroup (default false → external), hasAccessToAllBuilds (default false), public-link settings (external only), feedbackEnabled, and pre-seeded testers/builds.

asc_patch_beta_group
annotations: none low

Mutate a beta group's attributes. Apple PATCH on this resource accepts name, public-link state (publicLinkEnabled/publicLinkLimitEnabled/publicLinkLimit), feedbackEnabled, and the Apple Silicon Mac / Apple Vision build-availability flags.

asc_delete_beta_group
annotations: none low

DELETE a beta group. Apple supports DELETE on this resource (unlike offer codes). All tester + build linkages are removed atomically. Testers themselves are NOT deleted — they remain as BetaTester records, just unassigned from this group. Builds are NOT affected.

asc_add_beta_group_testers
annotations: none low

Add existing BetaTester records to a beta group via POST /v1/betaGroups/{id}/relationships/betaTesters. Pass tester IDs (NOT emails — use asc_post_beta_tester to look up or create from an email). Idempotent on the wire (re-adding a member is a no-op). Apple does not push a fresh invite email on re-add.

asc_remove_beta_group_testers
annotations: none low

Remove testers from a beta group via DELETE /v1/betaGroups/{id}/relationships/betaTesters. Pass only the IDs you want removed — Apple uses the body, not a "clear all" semantic. The BetaTester records themselves are NOT deleted (use asc_delete_beta_tester for that). Removed testers immediately lose access to the group\'s builds in TestFlight.

asc_add_beta_group_builds
annotations: none low

Assign builds to a beta group via POST /v1/betaGroups/{id}/relationships/builds. Builds must be in VALID processingState; Apple rejects PROCESSING/FAILED/INVALID. For external groups, the first build to be distributed externally must clear beta review (handled by the beta-review sub-domain). Use asc_patch_build_beta_detail to control autoNotifyEnabled per build.

asc_remove_beta_group_builds
annotations: none low

Unassign builds from a beta group via DELETE /v1/betaGroups/{id}/relationships/builds. The build itself is not deleted; only the group→build linkage is removed. Testers in the group lose visibility of these builds in TestFlight.

asc_list_app_custom_product_pages
annotations: none low

List AppCustomProductPage records under an app. Each row carries the page name, the public URL (once a version is APPROVED), the visible flag (wire `visible`, Swift `isVisible`), and the page ID. Use to inspect which CPP variants exist before patching, adding versions, or deleting.

asc_get_app_custom_product_page
annotations: none low

Fetch a single AppCustomProductPage with its versions expanded. Returns the page metadata + every AppCustomProductPageVersion under it (with state + deepLink). Use to navigate from a page to its current version.

asc_post_app_custom_product_page
annotations: none low

Create an AppCustomProductPage for an app with a reference name (UI-only, not customer-facing). Required: appId + name. Apple automatically creates an initial AppCustomProductPageVersion in PREPARE_FOR_SUBMISSION — fetch it via asc_get_app_custom_product_page and attach localizations / asset sets to that version.

asc_patch_app_custom_product_page
annotations: none low

Update name and/or visibility on an existing AppCustomProductPage. Wire-key gotcha: Swift `isVisible` → wire `visible` (same strip pattern as AppTag.visibleInAppStore). Toggling visible=false retracts the public URL without deleting the page. Tool refuses empty PATCH.

asc_delete_app_custom_product_page
annotations: none low

DELETE an AppCustomProductPage. Removes the page + every version + every localization + every asset set under it. The public CPP URL stops resolving immediately. Apple may refuse if a version is currently IN_REVIEW.

asc_list_app_custom_product_page_versions
annotations: none low

List AppCustomProductPageVersion records under a CPP. Each row carries the version string (typically auto-generated), state (PREPARE_FOR_SUBMISSION / READY_FOR_REVIEW / WAITING_FOR_REVIEW / IN_REVIEW / ACCEPTED / APPROVED / REPLACED_WITH_NEW_VERSION / REJECTED), deepLink, and version ID.

asc_get_app_custom_product_page_version
annotations: none low

Fetch a single AppCustomProductPageVersion with its localizations expanded. Returns the version metadata (state, deepLink) + every AppCustomProductPageLocalization under it.

asc_post_app_custom_product_page_version
annotations: none low

Create a new AppCustomProductPageVersion under a CPP. Required: appCustomProductPageId. Optional: deepLink (URL appended to the CPP click-through). No-attrs-block gotcha: when deepLink is omitted, the body sends NO attributes key at all (Apple rejects bare attrs:{} on this endpoint, same as v0.9 AppInfo PATCH). New versions land in PREPARE_FOR_SUBMISSION.

asc_delete_app_custom_product_page_version
annotations: none low

DELETE an AppCustomProductPageVersion. Removes every localization + asset set under it. Apple gates this — versions in WAITING_FOR_REVIEW / IN_REVIEW typically cannot be deleted directly.

asc_list_app_custom_product_page_localizations
annotations: none low

List AppCustomProductPageLocalization records under an AppCustomProductPageVersion. Each row carries locale + promotionalText length + a short preview + the localization ID. Per (version, locale).

asc_get_app_custom_product_page_localization
annotations: none low

Fetch a single AppCustomProductPageLocalization by ID. Returns locale + promotionalText + the relationship IDs for any attached screenshot sets, preview sets, and search keywords.

asc_post_app_custom_product_page_localization
annotations: none low

Create an AppCustomProductPageLocalization under a CPP version for ONE locale. Required: appCustomProductPageVersionId + locale. Optional: promotionalText (170 chars). The (version, locale) pair must be unique. Pre-check refuses for frozen states (WAITING_FOR_REVIEW, IN_REVIEW).

asc_patch_app_custom_product_page_localization
annotations: none low

Update promotionalText on an existing CPP localization. promotionalText is the ONLY mutable field (locale is immutable). Tool refuses empty PATCH; pass an empty string to clear if Apple allows it.

asc_delete_app_custom_product_page_localization
annotations: none low

DELETE an AppCustomProductPageLocalization. Customers in this locale fall back to the parent AppStoreVersionLocalization. Apple may refuse if the parent version is in a frozen state.

asc_list_app_store_version_localizations
annotations: none low

List App Store version localizations under one version. Each row carries locale + whatsNew length/preview + description length + keywords + promotionalText. Use to see which locales already have copy before adding/patching more. THIS IS THE LLM-WIN ENTRY POINT: list, pick a source locale, translate into target locales, patch each.

asc_get_app_store_version_localization
annotations: none low

Fetch a single App Store version localization by ID. Returns the full whatsNew + description + keywords + promotionalText + marketingUrl + supportUrl text. Use as the source-of-truth read before PATCH (so the LLM can diff before writing).

asc_post_app_store_version_localization
annotations: none low

Create an AppStoreVersionLocalization for ONE version + ONE locale. Required: appStoreVersionId + locale. Optional: whatsNew (release notes, 4000), description (4000), keywords (100 TOTAL chars), promotionalText (170), marketingUrl, supportUrl. Apple requires supportUrl per locale for review; submissions without it are rejected. The (version, locale) pair must be unique — Apple rejects a duplicate. Locale is immutable post-create.

asc_patch_app_store_version_localization
annotations: none low

Update attrs on an existing AppStoreVersionLocalization.

asc_delete_app_store_version_localization
annotations: none low

DELETE an AppStoreVersionLocalization. The locale is removed for this version; users in that locale fall back to the default locale's copy on the product page. Doesn't affect other versions or other locales. Apple may reject if the version is in a state that locks localizations (e.g. in review).

asc_list_subscription_introductory_offers
annotations: none low

List introductory offers (free trial / pay-as-you-go / pay-up-front) configured for a subscription, across territories.

asc_get_subscription_introductory_offer
annotations: none low

Fetch a single introductory offer by ID.

asc_post_subscription_introductory_offer
annotations: none low

Create an introductory offer on a subscription. Server-side checks: pricePointId required unless offerMode=FREE_TRIAL; numberOfPeriods required when offerMode=PAY_AS_YOU_GO, and sent for PAY_UP_FRONT too (Apple requires it — defaults to 1, the single up-front period);

asc_patch_subscription_introductory_offer
annotations: none low

Update an introductory offer's window or price point. Apple's PATCH is narrow: only startDate, endDate, and pricePointId can change.

asc_delete_subscription_introductory_offer
annotations: none low

Delete a pending or active introductory offer by ID. Apple refuses to delete an offer that is currently redeemable by users — to stop an active offer, PATCH endDate to today instead.

asc_post_build_beta_notification
annotations: none low

POST /v1/buildBetaNotifications — send the "new build available" TestFlight notification to every tester who has access to the build. Fire-and-forget: Apple returns an acknowledgment resource with no attributes, and there is no way to list or revoke a sent notification. Use for builds where autoNotifyEnabled is off (see asc_patch_build_beta_detail), or to re-ping testers. The build must be in VALID processingState and already distributed to at least one group/tester.

asc_list_subscription_localizations
annotations: none low

List SubscriptionLocalizations under a subscription. Each row carries locale + name + description + state (PREPARE_FOR_SUBMISSION / WAITING_FOR_REVIEW / APPROVED / REJECTED). Use to see which locales already have copy before adding more.

asc_post_subscription_localization
annotations: none low

Create a SubscriptionLocalization for ONE subscription + ONE locale. Required: subscriptionId + name (30 chars max) + locale. Optional: description (45 chars max). The (subscription, locale) pair must be unique. Locale is immutable post-create.

asc_patch_subscription_localization
annotations: none low

Update name and/or description on an existing SubscriptionLocalization. Both optional (encodeIfPresent). Locale is immutable; state is server-managed and rejected from PATCH bodies. Tool refuses empty PATCH.

asc_delete_subscription_localization
annotations: none low

DELETE a SubscriptionLocalization. The locale-specific copy is removed; subscribers in that locale fall back to the default locale. Apple may reject if the subscription is in a state that locks localizations.

asc_list_app_screenshot_sets
annotations: none low

List AppScreenshotSet records under a parent localization (an AppStoreVersionLocalization, an AppCustomProductPageLocalization, or an AppStoreVersionExperimentTreatmentLocalization). Each row carries the screenshotDisplayType (APP_IPHONE_67, APP_IPAD_PRO_129, …) and the set ID. Use to find the set for a given (locale, device-class) pair before listing or uploading screenshots.

asc_get_app_screenshot_set
annotations: none low

Fetch a single AppScreenshotSet by ID with its screenshots expanded. The included AppScreenshot resources carry fileName, fileSize, assetDeliveryState, and sourceFileChecksum for each captured screenshot.

asc_post_app_screenshot_set
annotations: none low

Create an AppScreenshotSet for ONE (parent localization, screenshotDisplayType) pair. Required: parentType + parentLocalizationId + screenshotDisplayType. The parent must be one of appStoreVersionLocalizations / appCustomProductPageLocalizations / appStoreVersionExperimentTreatmentLocalizations. Apple enforces uniqueness — a duplicate (parent, displayType) is rejected.

asc_delete_app_screenshot_set
annotations: none low

DELETE an AppScreenshotSet. All AppScreenshot resources under the set are removed as well. Use when retiring a device class for a locale or rebuilding a set from scratch.

asc_list_app_screenshots
annotations: none low

List AppScreenshot records under an AppScreenshotSet. Each row carries fileName + fileSize + assetDeliveryState (UPLOAD_COMPLETE / PROCESSING / COMPLETE / FAILED) + a short marker showing whether sourceFileChecksum has been committed. Use to inspect upload progress or to enumerate IDs for deletion.

asc_get_app_screenshot
annotations: none low

Fetch a single AppScreenshot by ID. Returns the upload metadata (fileName, fileSize, sourceFileChecksum), assetDeliveryState, the imageAsset URLs once processed, and — if the reservation has not been committed yet — the uploadOperations[] needed to PUT chunks to Apple storage.

asc_post_app_screenshot
annotations: none low

RAW step 1 of the three-step upload flow. Reserves an AppScreenshot under a set with fileName + fileSize, and returns the created resource with uploadOperations[] populated. Each uploadOperation has method=PUT + url + length + offset + requestHeaders for one chunk of the file. Use asc_upload_asset_chunk to PUT each, then asc_patch_app_screenshot to commit. Most callers should use the composite asc_upload_screenshot instead — this tool exists as an escape hatch for manual control.

asc_patch_app_screenshot
annotations: none low

RAW step 3 of the three-step upload flow. PATCH the AppScreenshot with sourceFileChecksum (lowercase hex MD5 of the full file) + uploaded=true to commit the reservation. Wire-key gotcha: Swift `isUploaded` → wire `uploaded`. Pass at least one of the two — empty PATCH is refused. The composite asc_upload_screenshot handles this automatically.

asc_delete_app_screenshot
annotations: none low

DELETE an AppScreenshot. Removes the asset + its slot in the set; if the set goes empty the parent localization will need a new upload before the App Store version can be submitted.

asc_upload_screenshot
annotations: none low

Composite tool. Reads localFilePath from disk, reserves an AppScreenshot under the given set with fileName + fileSize derived from the file, PUTs every uploadOperation chunk to Apple storage in sequence, then commits with sourceFileChecksum (md5 hex) + uploaded=true. Returns the final committed resource + a per-chunk summary. Tilde paths (~/...) are expanded. For manual control over each step, use the raw asc_post_app_screenshot + asc_upload_asset_chunk + asc_patch_app_screenshot tools instead.

asc_list_accessibility_declarations
annotations: none low

GET /v1/apps/{id}/accessibilityDeclarations — the per-device-family accessibility feature declarations ("Accessibility Nutrition Labels"). Filter by deviceFamily and/or state (DRAFT / PUBLISHED / REPLACED). The digest shows one row per declaration with the supported-feature flags.

asc_post_accessibility_declaration
annotations: none low

POST /v1/accessibilityDeclarations — create a DRAFT declaration for one device family (required) with any subset of the nine supports* flags (omitted ≠ false: omitted flags are simply not declared). Drafts are invisible until published via asc_patch_accessibility_declaration publish=true. One DRAFT per device family at a time.

asc_patch_accessibility_declaration
annotations: none low

⚠️ publish=true is CUSTOMER-FACING: PATCH /v1/accessibilityDeclarations/{id} with publish=true puts the accessibility label live on the App Store product page (state → PUBLISHED; a previously published declaration for the family becomes REPLACED). Without publish, mutates the supports* flags on a DRAFT. Wire-key gotchas pinned by tests: `publish` (Swift isPublish) and the nine `supports*` flags (Swift isSupports*). Get explicit human approval before publishing.

asc_delete_accessibility_declaration
annotations: none low

DELETE /v1/accessibilityDeclarations/{id} — remove a DRAFT declaration. Published declarations are superseded by publishing a new draft (REPLACED), not deleted.

asc_list_review_submissions
annotations: none low

List review submissions filtered by app. Filter[app]={appId} is required — Apple's collection isn't directly listable without it. Each row shows platform, state (READY_FOR_REVIEW / WAITING_FOR_REVIEW / IN_REVIEW / UNRESOLVED_ISSUES / CANCELING / COMPLETING / COMPLETE), and submittedDate. Use to find an in-flight submission before patching (submit/cancel) or adding items.

asc_get_review_submission
annotations: none low

Fetch a single review submission with its items + app relationship expanded. Use to see the current state and which items (App Store versions, etc.) are attached. The items relationship surfaces ReviewSubmissionItem state (READY_FOR_REVIEW / ACCEPTED / APPROVED / REJECTED / REMOVED), useful for diagnosing partial-approval scenarios.

asc_post_review_submission
annotations: none low

Create a DRAFT review submission on an app. Required: appId. Optional: platform (Apple recommends passing it; defaults to all platforms the app supports).

asc_patch_review_submission
annotations: none low

Trigger the submit or cancel action on a review submission. The action enum (submit | cancel) is the friendly wrapper around Apple's mutually-exclusive `submitted: true` / `canceled: true` wire fields.

asc_post_review_submission_item
annotations: none low

Add an App Store version as an item under a draft review submission. The parent submission must be in READY_FOR_REVIEW state (drafts only — once submitted, the item set is frozen). One item per call.

asc_delete_review_submission_item
annotations: none low

DELETE a ReviewSubmissionItem from a draft submission. Only valid while the parent submission is READY_FOR_REVIEW — after submission, items cannot be removed (use asc_patch_review_submission action: "cancel" to cancel the whole submission).

asc_post_iap_submission
annotations: none low

POST an inAppPurchaseSubmission — sends an IAP's pending metadata changes (price, localizations, review screenshot) to App Review on their own, without a version release. The IAP must have complete metadata including its review screenshot (asc_upload_iap_review_screenshot). Irreversible once submitted — Apple reviews the pending changes as-is.

asc_post_subscription_submission
annotations: none low

POST a subscriptionSubmission — sends a subscription's pending metadata changes to App Review without a version release. The subscription needs complete metadata including its review screenshot (asc_upload_subscription_review_screenshot). Irreversible once submitted.

asc_post_subscription_group_submission
annotations: none low

POST a subscriptionGroupSubmission — sends a subscription group's pending changes (group localizations + member subscriptions' metadata) to App Review without a version release. Irreversible once submitted.

asc_list_alternative_distribution_domains
annotations: none low

GET /v1/alternativeDistributionDomains — team-level registered website domains for EU web distribution. Entitlement-gated (403 = account not enrolled).

asc_post_alternative_distribution_domain
annotations: none low

POST /v1/alternativeDistributionDomains — register a website domain (e.g. "example.com") for EU web distribution. Both attributes required: domain + referenceName. Apple verifies domain ownership out-of-band (apple-developer-domain-association file). No PATCH exists — delete + re-create to change.

asc_delete_alternative_distribution_domain
annotations: none low

⚠️ DELETE /v1/alternativeDistributionDomains/{id} — apps distributed from this domain stop being installable from it. Confirm intent first.

asc_list_alternative_distribution_keys
annotations: none low

GET /v1/alternativeDistributionKeys — the PUBLIC signing keys registered with Apple (the private halves never leave your infrastructure). Use asc_get_app_alternative_distribution_key for the to-one app linkage.

asc_get_app_alternative_distribution_key
annotations: none low

GET /v1/apps/{id}/alternativeDistributionKey — the app's registered public key (to-one).

asc_post_alternative_distribution_key
annotations: none low

POST /v1/alternativeDistributionKeys — register the PUBLIC key (PEM string) used to verify your signed alternative-distribution artifacts. Optionally scope to one app via appId. The private key stays with you — never paste it anywhere; this tool takes the PUBLIC half only.

asc_delete_alternative_distribution_key
annotations: none low

⚠️ DELETE /v1/alternativeDistributionKeys/{id} — artifacts signed against this key stop validating. Confirm intent first.

asc_post_alternative_distribution_package
annotations: none low

POST /v1/alternativeDistributionPackages — start packaging an App Store Version for alternative distribution. Relationships-only body (appStoreVersion). Apple builds the signed package asynchronously; poll asc_list_alternative_distribution_package_versions until a version reaches COMPLETED.

asc_get_version_alternative_distribution_package
annotations: none low

GET /v1/appStoreVersions/{id}/alternativeDistributionPackage — the to-one package record for a version (or an error when none was created).

asc_list_alternative_distribution_package_versions
annotations: none low

GET /v1/alternativeDistributionPackages/{id}/versions — the dated builds of a package. State COMPLETED = downloadable via the pre-signed url (time-limited per urlExpirationDate — download promptly, re-list for fresh URLs, and NEVER send the ASC bearer to the download host). Variants/deltas per version via the dedicated list tools.

asc_list_alternative_distribution_package_variants
annotations: none low

GET /v1/alternativeDistributionPackageVersions/{id}/variants — per-device-thinning variants with pre-signed download URLs + key blobs. Raw JSON (URLs verbatim).

asc_list_alternative_distribution_package_deltas
annotations: none low

GET /v1/alternativeDistributionPackageVersions/{id}/deltas — update deltas (smaller downloads from prior versions) with pre-signed URLs. Raw JSON (URLs verbatim).

asc_get_marketplace_search_detail
annotations: none low

GET /v1/apps/{id}/marketplaceSearchDetail — the catalogUrl for a MARKETPLACE app (alternative app store). Observed live: calling this on a NON-marketplace app returns an Apple-side 500 UNEXPECTED_ERROR rather than a clean 404 — that 500 means "not a marketplace app", not an outage.

asc_post_marketplace_search_detail
annotations: none low

POST /v1/marketplaceSearchDetails — set a MARKETPLACE app's catalogUrl (the catalog Apple's MarketplaceKit queries). Wire key catalogUrl (Swift catalogURL — pinned by tests). One per app; PATCH to change.

asc_patch_marketplace_search_detail
annotations: none low

PATCH /v1/marketplaceSearchDetails/{id} — update the catalogUrl.

asc_delete_marketplace_search_detail
annotations: none low

DELETE /v1/marketplaceSearchDetails/{id}.

asc_list_marketplace_webhooks
annotations: none low

GET /v1/marketplaceWebhooks — team-level webhooks Apple uses to notify a MARKETPLACE app about available app updates. Secret is write-only and never shown.

asc_post_marketplace_webhook
annotations: none low

POST /v1/marketplaceWebhooks — both attributes required: endpointUrl (wire key — Swift endpointURL, pinned by tests) + secret (HMAC signing key, WRITE-ONLY — store it on the receiving side first; rotatable via PATCH).

asc_patch_marketplace_webhook
annotations: none low

PATCH /v1/marketplaceWebhooks/{id} — update endpointUrl and/or rotate the secret (update the receiver first). Pass at least one.

asc_delete_marketplace_webhook
annotations: none low

DELETE /v1/marketplaceWebhooks/{id} — stop marketplace update notifications.

asc_list_subscription_win_back_offers
annotations: none low

List win-back offers configured for a subscription. Win-back offers target LAPSED subscribers (intro offers target new subscribers; promo offers target existing/lapsed subscribers via a redeemed code). Apple surfaces win-back offers automatically to eligible churned customers based on the offer's customerEligibility* rules.

asc_get_subscription_win_back_offer
annotations: none low

Fetch a single win-back offer by its Apple resource ID, including its subscription and per-territory prices.

asc_list_subscription_win_back_offer_prices
annotations: none low

List the per-territory price rows attached to a win-back offer. Each row is a (territory, subscriptionPricePoint) pair — the price-point amount is resolved via the included subscriptionPricePoints resources. Prices are immutable after creation.

asc_post_subscription_win_back_offer
annotations: none low

Create a win-back offer targeting lapsed subscribers, with eligibility rules + schedule + all per-territory prices in one atomic POST.

asc_patch_subscription_win_back_offer
annotations: none low

Update the mutable attributes of an existing win-back offer: eligibility (customerEligibility* fields), schedule (startDate/endDate), priority, and promotionIntent.

asc_delete_subscription_win_back_offer
annotations: none low

Delete a win-back offer by its Apple resource ID. Returns 204 on success. This is the only way to change an immutable attribute (offerId, duration, offerMode, periodCount) or the prices — delete and re-create.

asc_list_customer_reviews
annotations: none low

List published App Store reviews via GET /v1/apps/{id}/customerReviews (or scope to one version via appStoreVersionId — pass exactly one of the two). Filter by star rating (strings "1".."5"), territory, and whether a developer response already exists (hasPublishedResponse=false → the unanswered queue). Sort by createdDate or rating. Each row shows rating, title, reviewer, territory, response state, and IDs. No sentiment filter exists on Apple\'s side — use rating as the proxy ("1-star reviews mentioning the export bug" → filter ratings:["1"], then read bodies).

asc_get_customer_review
annotations: none low

GET /v1/customerReviews/{id} with the developer response included — the full review body (the list digest previews it) plus response state if one exists.

asc_get_customer_review_response
annotations: none low

GET /v1/customerReviews/{id}/response — the review's single developer response (responseBody, state PUBLISHED / PENDING_PUBLISH, lastModifiedDate). A review with no response returns 200 with data:null (observed live, NOT an error) — the tool reports that plainly.

asc_post_customer_review_response
annotations: none low

⚠️ PUBLIC-FACING WRITE: POST /v1/customerReviewResponses publishes your reply ON THE APP STORE under the review (state PENDING_PUBLISH → PUBLISHED, usually within a day; the reviewer is notified by Apple). One response per review — posting against an already-answered review REPLACES the previous response. Draft the text, show it to the human, and only call this after explicit approval.

asc_delete_customer_review_response
annotations: none low

DELETE /v1/customerReviewResponses/{id} — remove your public reply from the App Store. The review itself is untouched (customer reviews cannot be deleted by developers). Get the response ID from asc_get_customer_review_response or the list digest.

asc_list_customer_review_summarizations
annotations: none low

GET /v1/apps/{id}/customerReviewSummarizations — Apple's AI-aggregated review summary per (platform, territory, locale): the same summary text shown on the App Store product page. filter[platform] is REQUIRED by Apple; territory optional. Summarizations exist only where Apple has rolled the feature out and the app has enough reviews — an empty list is common.

asc_list_subscription_offer_codes
annotations: none low

List offer-code campaigns configured for a subscription. Each campaign carries name, customer-eligibility cohorts (NEW/EXISTING/EXPIRED), offer mode, duration, and an active flag. Per-territory prices are linked via the prices relationship; one-time-use code batches and custom codes hang off the campaign via separate endpoints.

asc_get_subscription_offer_code
annotations: none low

Fetch a single offer-code campaign by ID, including its per-territory prices, one-time-use code batches, and custom codes (if any).

asc_post_subscription_offer_code
annotations: none low

Create an offer-code campaign atomically: name + customer eligibilities + mode + duration + all per-territory prices in one POST. Apple caps active campaigns at 10 per subscription; this tool pre-flights the count and refuses if at the limit.

asc_patch_subscription_offer_code
annotations: none low

Activate or deactivate an offer-code campaign. Apple PATCH on this resource only permits flipping `active` — name, eligibilities, mode, duration, numberOfPeriods, and prices are all immutable. Deactivating a campaign stops new redemptions across every batch and custom code under it; existing subscribers who already redeemed keep their offer.

asc_list_subscription_offer_code_one_time_use_codes
annotations: none low

List one-time-use code batches under an offer-code campaign. Each batch carries numberOfCodes, expirationDate, active, and createdDate — the actual redeemable strings are retrieved with asc_export_subscription_offer_code_one_time_use_values against a specific batch.

asc_post_subscription_offer_code_one_time_use_codes
annotations: none low

Create a batch of unique single-redemption codes against an existing offer-code campaign. Apple generates the code strings server-side — retrieve them with asc_export_subscription_offer_code_one_time_use_values.

asc_patch_subscription_offer_code_one_time_use_codes
annotations: none low

Activate or deactivate a one-time-use code batch. Apple PATCH on this resource only permits flipping `active` — numberOfCodes and expirationDate are immutable. Deactivating a batch stops further redemption of any unredeemed code in the batch; redemptions already completed are untouched. Use this to kill a leaked batch without nuking the parent campaign.

asc_export_subscription_offer_code_one_time_use_values
annotations: none low

Fetch the redeemable code strings inside a one-time-use batch. Apple serves the response as text/csv directly — this tool passes it through verbatim. These are the strings to hand to customers; treat them as secrets.

asc_list_subscription_offer_code_custom_codes
annotations: none low

List custom multi-use codes under an offer-code campaign. Each custom code is a single developer-chosen string redeemable by many customers (up to numberOfCodes redemptions total). Unlike one-time-use batches, the redeemable string IS the resource attribute — no separate /values export step. Useful for public marketing codes (e.g. "LAUNCH2026" usable by the first 500 customers).

asc_post_subscription_offer_code_custom_code
annotations: none low

Create a custom multi-use code against an existing offer-code campaign. The developer picks the redeemable string (customCode), the redemption cap (numberOfCodes — MINIMUM 500, ceiling 25,000), and optionally an expiration date.

asc_patch_subscription_offer_code_custom_code
annotations: none low

Activate or deactivate a custom multi-use code. PATCH only flips `active` — customCode, numberOfCodes, and expirationDate are immutable. Deactivating revokes further redemptions of the string; completed redemptions are untouched. Use this to kill a leaked public code without nuking the parent campaign.

asc_list_version_experiments
annotations: none low

GET /v1/apps/{id}/appStoreVersionExperimentsV2 (note: a /v1 path listing the V2, app-attached experiments — the modern surface). Each row shows name, state (9-state lifecycle), platform, traffic %, review-required flag, and start/end dates. Filter client-side by state from the digest.

asc_get_version_experiment
annotations: none low

GET /v2/appStoreVersionExperiments/{id} with treatments + latestControlVersion included — the full experiment record for inspecting state before submitting, starting, or stopping.

asc_post_version_experiment
annotations: none low

POST /v2/appStoreVersionExperiments — create an A/B test on the product page. ALL THREE attributes required: name, platform, trafficProportion (1–99% of page traffic, split across treatments). Created in PREPARE_FOR_SUBMISSION; it shows nothing publicly until submitted (V2 review submission flow, v0.11 tools) AND explicitly started (asc_patch_version_experiment started=true after APPROVED). Build flow: create → add treatments → add treatment localizations → attach variant screenshots via the v0.13 asset tools → submit → start.

asc_patch_version_experiment
annotations: none low

⚠️ started=true is CUSTOMER-FACING: PATCH /v2/appStoreVersionExperiments/{id} with started=true begins serving treatment pages to real App Store traffic (requires state APPROVED). Also mutates name and trafficProportion while still in PREPARE_FOR_SUBMISSION. Wire-key gotcha pinned by tests: the start flag is `started` (Swift isStarted). There is no started=false — stopping is its own semantics via Apple (STOPPED is terminal); confirm intent before starting.

asc_delete_version_experiment
annotations: none low

DELETE /v2/appStoreVersionExperiments/{id} — removes the experiment and its treatments/localizations. Works on un-started experiments; running experiments should be stopped through App Store Connect first.

asc_list_experiment_treatments
annotations: none low

GET /v2/appStoreVersionExperiments/{id}/appStoreVersionExperimentTreatments — the variants under test. PROMOTED column shows when a winning treatment was promoted to the real product page.

asc_post_experiment_treatment
annotations: none low

POST /v1/appStoreVersionExperimentTreatments — add a variant to an experiment (PREPARE_FOR_SUBMISSION only). name required; appIconName optional (tests an alternate icon — the icon must ship in the app binary as an alternate icon). Relationship emitted is appStoreVersionExperimentV2 (the modern surface). After creating: asc_post_treatment_localization per locale, then v0.13 asset tools for variant screenshots.

asc_patch_experiment_treatment
annotations: none low

PATCH /v1/appStoreVersionExperimentTreatments/{id} — mutate name and/or appIconName (pre-submission). Pass at least one.

asc_delete_experiment_treatment
annotations: none low

DELETE /v1/appStoreVersionExperimentTreatments/{id} — remove a variant (and its localizations/assets) from a pre-submission experiment.

asc_list_treatment_localizations
annotations: none low

GET /v1/appStoreVersionExperimentTreatments/{id}/appStoreVersionExperimentTreatmentLocalizations — the per-locale containers for variant assets. Hang screenshot/preview sets off each with the v0.13 asset tools (parentType appStoreVersionExperimentTreatmentLocalizations).

asc_post_treatment_localization
annotations: none low

POST /v1/appStoreVersionExperimentTreatmentLocalizations — add a locale to a treatment (locale required, e.g. "en-US"). Then create variant screenshot/preview sets against it with asc_post_app_screenshot_set / asc_post_app_preview_set (parentType appStoreVersionExperimentTreatmentLocalizations) and upload with the v0.13 composite tools.

asc_delete_treatment_localization
annotations: none low

DELETE /v1/appStoreVersionExperimentTreatmentLocalizations/{id} — remove a locale (and its variant assets) from a treatment.

asc_get_app_store_version_phased_release
annotations: none low

Fetch the AppStoreVersionPhasedRelease attached to an AppStoreVersion. Returns the current phasedReleaseState (INACTIVE / ACTIVE / PAUSED / COMPLETE), startDate, totalPauseDuration (seconds the rollout has been paused), and currentDayNumber (how many days into Apple's 7-day rollout the release is on). Returns `{ data: null }` if no phased release is attached (NOT a 404).

asc_post_app_store_version_phased_release
annotations: none low

Create a new AppStoreVersionPhasedRelease attached to an AppStoreVersion. Required: appStoreVersionId. Optional: phasedReleaseState — pass `ACTIVE` to start the rollout immediately, omit to land in INACTIVE. NO-ATTRS-BLOCK GOTCHA: when state is omitted, the body builder omits the entire `attributes` key (Apple rejects bare attrs:{}). Apple's rollout schedule: 1% day 1, 2% day 2, 5% day 3, 10% day 4, 20% day 5, 50% day 6, 100% day 7.

asc_patch_app_store_version_phased_release
annotations: none low

PATCH the phasedReleaseState on an existing AppStoreVersionPhasedRelease. Apple's valid transitions: INACTIVE → ACTIVE (start the rollout), ACTIVE ↔ PAUSED (developer pause / resume), ACTIVE → COMPLETE (force immediate 100% rollout). Apple rejects invalid transitions with a clear error — pass through. This is the only mutable attr.

asc_delete_app_store_version_phased_release
annotations: none low

DELETE an AppStoreVersionPhasedRelease — cancels the staged rollout and reverts the version to standard immediate release (all users on the next App Store refresh). Apple may refuse if the rollout has already reached COMPLETE.

asc_list_beta_app_review_submissions
annotations: none low

List beta-app-review submissions across the team, with the optional buildId filter to narrow to a single build's submissions (typically 0 or 1 per build — re-submissions are rare). Each row shows betaReviewState (WAITING_FOR_REVIEW / IN_REVIEW / APPROVED / REJECTED) and submittedDate.

asc_get_beta_app_review_submission
annotations: none low

Fetch a single BetaAppReviewSubmission with the build relationship expanded. Use to check current betaReviewState — APPROVED unlocks external distribution, REJECTED requires re-submission after fixes.

asc_post_beta_app_review_submission
annotations: none low

Submit a build for Apple beta review. Required: buildId. The body has NO attributes — only the build relationship. Once submitted, betaReviewState walks WAITING_FOR_REVIEW → IN_REVIEW → APPROVED (or REJECTED), typically over 24-48h.

asc_list_beta_app_review_details
annotations: none low

List BetaAppReviewDetail records. Filter by appId to scope to one app (typically returns one record per app). The detail record persists across builds — same contact info + demo account + notes are reused for every submission unless you patch it.

asc_get_beta_app_review_detail
annotations: none low

Fetch the per-app BetaAppReviewDetail. Returns contact info + demo account + notes + demoAccountRequired flag. Apple stores demo passwords in cleartext on this record — treat it as a secret; rotate after each review cycle.

asc_patch_beta_app_review_detail
annotations: none low

Update the contact info, demo account, and notes on a BetaAppReviewDetail. All eight attrs are individually optional (encodeIfPresent). Set demoAccountRequired=true ONLY when the app gates content behind login — Apple's reviewer will use the demo credentials. Set demoAccountRequired=false to skip demo credential rendering on the review tool (omit demoAccountName/Password if so).

asc_list_pre_release_versions
annotations: none low

List pre-release versions (one per version string Apple has seen, across all platforms). Pass appId to scope to one app. Useful for grouping builds by version train (e.g. find every build of "2.5.0"). The /v1/preReleaseVersions resource is read-only — Apple creates and ages these records automatically based on uploaded builds.

asc_get_pre_release_version
annotations: none low

Fetch a single PreReleaseVersion with its builds relationship expanded. Returns version + platform + the to-many builds linkage. Read-only.

asc_list_territories
annotations: none low

List App Store territories with their currency codes.

asc_get_age_rating_declaration
annotations: none low

Read an app's age-rating questionnaire — the answers App Review scores the rating from. Pass appId (resolved via the app's appInfo) or an explicit declarationId. Returns a grouped table of the non-default answers plus every override; pass raw:true for all 29 attributes. Age rating is per-APP metadata (it hangs off appInfo), not per-version — there is no separate rating per release.

asc_patch_age_rating_declaration
annotations: none low

Answer the age-rating questionnaire. Every field is optional and Apple MERGES — omitted keys keep their current value, so a partial update is safe, but you cannot clear a field by omitting it (send the explicit NONE / false). Content questions take a frequency: NONE / INFREQUENT_OR_MILD / FREQUENT_OR_INTENSE (some newer categories use INFREQUENT / FREQUENT). Raising any answer raises the computed rating. Overrides can only push the rating UP, never down. Writes to /v1/ageRatingDeclarations/{id}; the id equals the appInfo id and is resolved for you from appId. ⚠️ This drives the public age rating and can gate App Review — review the current answers with asc_get_age_rating_declaration first.

asc_get_app_store_review_detail
annotations: none low

Fetch the appStoreReviewDetail of an App Store version — App Review contact info, demo account, notes, plus the detail id needed for PATCH and for attaching review attachments. To-one per version; Apple returns data:null when none exists yet (create with asc_post_app_store_review_detail).

asc_post_app_store_review_detail
annotations: none low

Create the appStoreReviewDetail for an App Store version (to-one — Apple 409s if one already exists; PATCH instead). All attributes optional: contact person, demo account (set demoAccountRequired=true when the reviewer needs it), notes. Demo-account credentials go to App Review only, not the public store.

asc_patch_app_store_review_detail
annotations: none low

PATCH an appStoreReviewDetail by id (get it from asc_get_app_store_review_detail). Apple merges — omitted attributes keep their current value; send an empty string to clear a text field. Pass at least one attribute.

asc_post_app_store_version_release_request
annotations: none low

⚠️ CUSTOMER-FACING: POST an appStoreVersionReleaseRequest to release a version that App Review has approved (state PENDING_DEVELOPER_RELEASE) to the public App Store immediately — the automated form of the manual "Release this version" click. Only valid for versions whose release option was "manually release"; there is no undo — once live, rollback means shipping a new version. Confirm the version id and intent before calling.

asc_get_subscription_grace_period
annotations: none low

Fetch an app's subscriptionGracePeriod — whether billing grace period is opted in (production + sandbox separately), its duration (THREE_DAYS / SIXTEEN_DAYS / TWENTY_EIGHT_DAYS) and renewalType (ALL_RENEWALS / PAID_TO_PAID_ONLY). Grace period keeps subscribers entitled while Apple retries a failed renewal payment. Returns the record id needed for PATCH.

asc_patch_subscription_grace_period
annotations: none low

PATCH an app's subscriptionGracePeriod (id from asc_get_subscription_grace_period): optIn / sandboxOptIn toggles, duration (THREE_DAYS / SIXTEEN_DAYS / TWENTY_EIGHT_DAYS), renewalType (ALL_RENEWALS / PAID_TO_PAID_ONLY). Affects real billing behaviour for existing subscribers — during grace the user keeps access while Apple retries payment and the developer keeps being paid. Pass at least one attribute.

asc_list_app_encryption_declarations
annotations: none low

List AppEncryptionDeclaration records under an app. Each row carries the appDescription, current state (CREATED / IN_REVIEW / APPROVED / REJECTED / INVALID / EXPIRED), codeValue (ECCN export classification once Apple has reviewed), the exempt flag, and the three encryption flags (proprietary / thirdParty / availableOnFrenchStore). Used to find a declaration to link a build to.

asc_get_app_encryption_declaration
annotations: none low

Fetch a single AppEncryptionDeclaration by ID with its document relationship expanded. Returns the full attribute surface including the 4 deprecated read-only fields (usesEncryption, uploadedDate, documentURL, documentName, documentType) for legacy declarations.

asc_post_app_encryption_declaration
annotations: none low

Create an AppEncryptionDeclaration for an app. Required: appId + appDescription + containsProprietaryCryptography + containsThirdPartyCryptography + availableOnFrenchStore. Apple reviews the declaration server-side; state walks CREATED → IN_REVIEW → APPROVED / REJECTED. There is NO PATCH for declarations — create a new one to refresh the answers. Wire-key gotcha: Swift `isAvailableOnFrenchStore` → wire `availableOnFrenchStore`. NOTE: the deprecated `usesEncryption` attribute is not accepted on writes — Apple's modern path uses `exempt` (server-set) instead.

asc_get_build_app_encryption_declaration
annotations: none low

Fetch the AppEncryptionDeclaration currently linked to a build. Each build has at most ONE declaration. Returns 404 if no declaration is linked.

asc_patch_build_app_encryption_declaration
annotations: none low

Set the AppEncryptionDeclaration for a build. PATCH /v1/builds/{id}/relationships/appEncryptionDeclaration. Pass `appEncryptionDeclarationId` to link, pass null to clear the linkage. Each build can have at most ONE declaration. Apple's inverse linkage (declaration → builds[]) is DEPRECATED and not wrapped here — manage the linkage from the build side.

asc_get_app_encryption_declaration_document
annotations: none low

Fetch a single AppEncryptionDeclarationDocument by ID. Returns fileName / fileSize / sourceFileChecksum / assetDeliveryState / the downloadUrl once Apple has processed the upload (wire-key gotcha: Swift `downloadURL` → wire `downloadUrl`).

asc_post_app_encryption_declaration_document
annotations: none low

RAW step 1 of the three-step upload flow (same shape as v0.13 AppScreenshot). Reserves an AppEncryptionDeclarationDocument under a declaration with fileName + fileSize. Returns the resource with uploadOperations[] populated. Use asc_upload_asset_chunk to PUT each, then asc_patch_app_encryption_declaration_document to commit. Most callers should use the composite asc_upload_app_encryption_declaration_document instead.

asc_patch_app_encryption_declaration_document
annotations: none low

RAW step 3 of the three-step upload flow. PATCH with sourceFileChecksum (lowercase hex MD5 of the full file) + uploaded=true to commit. Wire-key gotcha: Swift `isUploaded` → wire `uploaded` (same strip as v0.13 / v0.14). Pass at least one of the two — empty PATCH refused. The composite asc_upload_app_encryption_declaration_document handles this automatically.

asc_upload_app_encryption_declaration_document
annotations: none low

Composite tool. Reads localFilePath from disk (typically a PDF questionnaire), reserves an AppEncryptionDeclarationDocument under the given declaration with fileName + fileSize derived from the file, PUTs every uploadOperation chunk to Apple storage in sequence, then commits with sourceFileChecksum (md5 hex) + uploaded=true. Returns the final committed resource + per-chunk summary. Tilde paths (~/...) are expanded. Same protocol as v0.13 asc_upload_screenshot.

asc_list_nominations
annotations: none low

List the team's App Store featuring nominations, filterable by app, state (DRAFT / SUBMITTED / ARCHIVED) and type. Newest-modified first.

asc_get_nomination
annotations: none low

Fetch one nomination with its full description, notes, publish window, device families, locales, supplemental links, and related apps/events/territories.

asc_post_nomination
annotations: none low

Create a featuring nomination pitching a release to Apple's editorial team. Defaults to a DRAFT (submitted:false) so it can be reviewed with asc_get_nomination before anything reaches Apple — flip it live later with asc_patch_nomination submitted:true, or pass submitted:true here to send immediately. ⚠️ Submission is one-way: there is no un-submit, only archive. publishStartDate is the start of the release's relevance window (e.g. the launch date).

asc_patch_nomination
annotations: none low

⚠️ PATCH a nomination. Apple REQUIRES submitted or archived on EVERY patch (400 PARAMETER_ERROR.REQUIRED otherwise — caught live 2026-08-13): pass submitted:false when editing a draft (keeps it a draft), submitted:true to SEND it to Apple's editorial team (one-way, no un-submit), or archived:true to shelve it. Other attributes edit in place; relationship arrays (appIds / inAppEventIds / territoryIds) REPLACE the existing set when passed.

asc_delete_nomination
annotations: none low

Delete a nomination (drafts). For a submitted one, archive instead (asc_patch_nomination archived:true).

asc_post_subscription_price
annotations: none low

Schedule a price change for a single (subscription, territory) on a future date.

asc_delete_subscription_price
annotations: none low

Delete a pending scheduled subscription price by ID. Use this to roll back a change that has not yet activated.

asc_list_app_prices
annotations: none low

List the current price schedule for a paid app across territories. Returns both manual (per-territory) overrides and automatic prices derived from the base territory. Auto-paginates; pass raw:true for the full JSON:API payload.

asc_list_app_price_points
annotations: none low

List the valid price points a paid app can be set to in a given territory. Apple rotates these IDs; cache only within a single run.

asc_post_app_price_schedule
annotations: none low

Replace the price schedule for a paid app.

asc_list_iap_localizations
annotations: none low

List InAppPurchaseLocalizations under an IAP. Each row carries locale + name + description + state. v2 IAPs only — legacy v1 IAPs aren't supported on this surface. Use asc_list_iaps to find an IAP ID first.

asc_get_iap_localization
annotations: none low

Fetch a single InAppPurchaseLocalization by ID. Returns name + description + locale + state.

asc_post_iap_localization
annotations: none low

Create an InAppPurchaseLocalization for ONE v2 IAP + ONE locale. Required: iapId (v2 IAP only — legacy v1 not supported) + name (30 chars) + locale. Optional: description (45 chars). (IAP, locale) must be unique. Locale immutable post-create.

asc_patch_iap_localization
annotations: none low

Update name and/or description on an existing InAppPurchaseLocalization. Both optional (encodeIfPresent). Locale immutable; state server-managed. Tool refuses empty PATCH.

asc_delete_iap_localization
annotations: none low

DELETE an InAppPurchaseLocalization. The locale-specific copy is removed; customers in that locale fall back to the default. Apple may reject if the IAP is in a state that locks localizations.

asc_list_subscription_promotional_offers
annotations: none low

List promotional offers (PAY_AS_YOU_GO / PAY_UP_FRONT / FREE_TRIAL) configured for a subscription. Promo offers target existing or lapsed subscribers (intro offers target new subscribers). Apple caps active promo offers at 10 per subscription.

asc_get_subscription_promotional_offer
annotations: none low

Fetch a single promotional offer by ID, including its per-territory prices.

asc_list_subscription_promotional_offer_prices
annotations: none low

List the per-territory price rows attached to a promotional offer. Each row is a (territory, subscriptionPricePoint) pair — the price-point amount is resolved via the included subscriptionPricePoints resources.

asc_post_subscription_promotional_offer
annotations: none low

Create a promotional offer with name + offerCode + mode + duration plus all per-territory prices in one atomic POST. Apple caps active promo offers at 10 per subscription; this tool pre-flights the count and refuses if at the limit.

asc_patch_subscription_promotional_offer_prices
annotations: none low

Update the per-territory prices on an existing promotional offer. Apple PATCH on this resource only permits price changes — name, offerCode, mode, duration, and numberOfPeriods are immutable post-create.

asc_delete_subscription_promotional_offer
annotations: none low

Delete a promotional offer by ID. Returns 204 on success. Apple does not document whether the offerCode is immediately reusable after delete — recommend appending a suffix when rotating campaigns rather than reusing the same code.

asc_list_webhooks
annotations: none low

GET /v1/apps/{id}/webhooks — every webhook configured on the app: name, enabled state, endpoint URL, subscribed event types, and ID. The secret is write-only and never appears. Webhooks are per-app; list each app separately.

asc_get_webhook
annotations: none low

GET /v1/webhooks/{id} — one webhook with its app relationship. The secret is write-only and never returned. For delivery history use asc_list_webhook_deliveries.

asc_post_webhook
annotations: none low

POST /v1/webhooks — register an HTTPS endpoint to receive App Store Connect event notifications for ONE app. ALL FIVE attributes are required: name, url (HTTPS), secret (HMAC-SHA256 signing key — store it on the receiving side first; it is write-only and never readable back), eventTypes (at least one of the 12), enabled. After creating, verify the endpoint with asc_post_webhook_ping. Useful pairing: BETA_FEEDBACK_*_CREATED events + the v0.16 asc_list_beta_feedback_* read tools.

asc_patch_webhook
annotations: none low

PATCH /v1/webhooks/{id} — mutate name, url, secret (rotation), eventTypes (whole-array replace), or enabled (pause/resume deliveries). All attributes optional; pass at least one. Rotating the secret: update the receiving side FIRST, then PATCH — deliveries signed with the new secret start immediately.

asc_delete_webhook
annotations: none low

DELETE /v1/webhooks/{id} — permanently remove the webhook and stop all deliveries. Delivery history is gone with it. To pause instead of delete, PATCH enabled=false.

asc_list_webhook_deliveries
annotations: none low

GET /v1/webhooks/{id}/deliveries — per-attempt delivery records: state (SUCCEEDED / FAILED / PENDING), event type, sent date, response HTTP status, error message, and whether the attempt was a redelivery. Filter by state and createdDate window to find failures ('list FAILED deliveries since yesterday'), then retry them with asc_post_webhook_redelivery. Apple REQUIRES the createdAfterOrAt filter (observed live) — when omitted, this tool defaults it to the widest window Apple accepts (~10 days back). Apple retains delivery history for 10 days at most.

asc_post_webhook_redelivery
annotations: none low

POST /v1/webhookDeliveries — re-send a previous delivery (typically a FAILED one from asc_list_webhook_deliveries). The body carries only a `template` relationship pointing at the existing delivery; Apple creates a NEW delivery attempt with redelivery=true. The original record is untouched.

asc_post_webhook_ping
annotations: none low

POST /v1/webhookPings — have Apple send a test event to the webhook endpoint NOW (arrives with ping=true in the payload). The response resource is id-only; check the result via asc_list_webhook_deliveries (the ping shows up as a delivery). Use right after create/patch to verify the endpoint + signature handling.

asc_list_iaps
annotations: none low

List in-app purchases for an app (v2 surface — consumables, non-consumables, non-renewing subscriptions).

asc_get_iap
annotations: none low

Fetch a single in-app purchase (v2) by its ASC ID.

asc_list_iap_prices
annotations: none low

List the current price schedule for an in-app purchase across territories. Like apps (and unlike subs), the schedule is one object with manual + automatic price children.

asc_list_iap_price_points
annotations: none low

List the valid Apple price tiers for an in-app purchase in a given territory. Apple rotates these IDs; cache only within a single run.

asc_post_iap_price_schedule
annotations: none low

Replace the price schedule for an in-app purchase (v2 IAPs only — consumables, non-consumables, non-renewing subs).

asc_list_apps
annotations: none low

List apps on the App Store Connect account. Returns a compact table by default; pass raw:true to get the full JSON:API response.

asc_get_app
annotations: none low

Fetch a single app by its App Store Connect ID.

asc_list_app_preview_sets
annotations: none low

List AppPreviewSet records under a parent localization (an AppStoreVersionLocalization, an AppCustomProductPageLocalization, or an AppStoreVersionExperimentTreatmentLocalization). Each row carries the previewType (IPHONE_67, IPAD_PRO_129, …) and the set ID. Note: PreviewType values are distinct from ScreenshotDisplayType — no `APP_` prefix.

asc_get_app_preview_set
annotations: none low

Fetch a single AppPreviewSet by ID with its previews expanded. The included AppPreview resources carry fileName, fileSize, previewFrameTimeCode, mimeType, and the video delivery state.

asc_post_app_preview_set
annotations: none low

Create an AppPreviewSet for ONE (parent localization, previewType) pair. Required: parentType + parentLocalizationId + previewType. Apple enforces uniqueness — a duplicate (parent, previewType) is rejected.

asc_delete_app_preview_set
annotations: none low

DELETE an AppPreviewSet. All AppPreview resources under the set are removed as well.

asc_list_app_previews
annotations: none low

List AppPreview records under an AppPreviewSet. Each row carries fileName + fileSize + previewFrameTimeCode + the two delivery states (assetDeliveryState for the source file, videoDeliveryState for Apple-side transcode).

asc_get_app_preview
annotations: none low

Fetch a single AppPreview by ID. Returns the upload metadata + previewFrameTimeCode + (post-ingest) videoUrl and previewImage. Wire-key gotcha: Apple emits `videoUrl` (camelCase) where Swift names it `videoURL`.

asc_post_app_preview
annotations: none low

RAW step 1 of the three-step upload flow for previews. Reserves an AppPreview under a set with fileName + fileSize (+ optional previewFrameTimeCode + mimeType), and returns the resource with uploadOperations[] populated. Most callers should use the composite asc_upload_app_preview instead — this exists for manual control.

asc_patch_app_preview
annotations: none low

RAW step 3 of the three-step upload flow + the only way to tweak previewFrameTimeCode on an existing preview. PATCH with sourceFileChecksum + uploaded=true to commit a reservation, or with previewFrameTimeCode alone to change the poster frame without re-uploading the video. Wire-key gotcha: Swift `isUploaded` → wire `uploaded`. Tool refuses empty PATCHes.

asc_delete_app_preview
annotations: none low

DELETE an AppPreview. Removes the video asset + its slot in the set; if all previews are removed the parent localization may need a new upload before submission.

asc_upload_app_preview
annotations: none low

Composite tool. Reads localFilePath from disk (Apple's recommended: .mov H.264/HEVC, ≤500 MB, 15–30s), reserves an AppPreview under the given set, PUTs every uploadOperation chunk to Apple storage in sequence, then commits with sourceFileChecksum + uploaded=true. Optionally sets previewFrameTimeCode (poster frame) at reserve. Returns the committed resource + per-chunk summary. Tilde paths (~/...) are expanded.

asc_list_builds
annotations: none low

List TestFlight builds. Pass appId to scope to a single app (the common case — Apple paginates global build lists across the whole team). Optional processingState filter narrows to a single state (VALID is usually what you want — that's the testable subset). The digest shows version + processingState + uploadedDate + expiration in a compact table.

asc_get_build
annotations: none low

Fetch a single build with relationships expanded (app + preReleaseVersion + buildBetaDetail + betaBuildLocalizations + betaGroups + betaAppReviewSubmission). Useful before deciding to retire, assign to a group, or submit for beta review.

asc_patch_build
annotations: none low

Mutate a build's `expired` flag (retire a build early — Apple normally expires 90 days after upload, but security holes or broken releases warrant immediate retirement) or `usesNonExemptEncryption` (compliance flag required before some submissions).

asc_get_build_beta_detail
annotations: none low

Fetch the BuildBetaDetail for a build — carries `autoNotifyEnabled` (whether Apple auto-pushes the build to assigned testers on availability) + `internalBuildState` + `externalBuildState` (Apple-managed beta-review reflections). The state fields are read-only; PATCH this resource via asc_patch_build_beta_detail to toggle autoNotifyEnabled.

asc_patch_build_beta_detail
annotations: none low

Toggle `autoNotifyEnabled` on a BuildBetaDetail — when true, Apple pushes a TestFlight notification to every assigned tester the moment the build clears review + processing.

asc_list_app_events
annotations: none low

List AppEvent records for an app. Each row carries the referenceName, current eventState (DRAFT / READY_FOR_REVIEW / WAITING_FOR_REVIEW / IN_REVIEW / REJECTED / ACCEPTED / APPROVED / PUBLISHED / PAST / ARCHIVED), badge, purpose, priority, primaryLocale, and the count of territory schedules. Use to find the event ID before fetching its localizations or assets.

asc_get_app_event
annotations: none low

Fetch a single AppEvent by ID with its localizations expanded. Returns the full attribute surface including territorySchedules (writable per-territory schedule entries) and archivedTerritorySchedules (read-only history).

asc_post_app_event
annotations: none low

Create an AppEvent on an app. Required: appId + referenceName (internal-only, NOT customer-facing — set per-locale name via asc_post_app_event_localization). Optional: badge, deepLink, purchaseRequirement, primaryLocale, priority, purpose, territorySchedules. New events land in DRAFT. Add localizations + screenshots + video clips before submitting for review.

asc_patch_app_event
annotations: none low

Update an AppEvent's attributes. Pre-check refuses for clearly frozen states (WAITING_FOR_REVIEW, IN_REVIEW). All attrs encodeIfPresent — only what you pass is sent. Tool refuses empty PATCH.

asc_delete_app_event
annotations: none low

DELETE an AppEvent. Removes the event + every localization + every asset. Apple may refuse if the event is PUBLISHED or IN_REVIEW.

asc_list_app_event_localizations
annotations: none low

List AppEventLocalization records under an AppEvent. Each row carries locale + name + shortDescription length + longDescription length + the localization ID. Per (event, locale). Use to inspect existing per-locale copy before adding new locales or patching existing ones.

asc_get_app_event_localization
annotations: none low

Fetch a single AppEventLocalization by ID. Returns the locale + name + shortDescription + longDescription + the relationship IDs for any attached event screenshots and video clips.

asc_post_app_event_localization
annotations: none low

Create an AppEventLocalization for ONE (event, locale) pair. Required: appEventId + locale. Optional copy attrs: name (30 chars), shortDescription (50 chars), longDescription (120 chars). The (event, locale) pair must be unique — Apple rejects duplicates. Pre-check refuses for frozen parent-event states (WAITING_FOR_REVIEW, IN_REVIEW).

asc_patch_app_event_localization
annotations: none low

Update name / shortDescription / longDescription on an existing AppEventLocalization. Locale is immutable (excluded from UpdateRequest). All three attrs are encodeIfPresent. Tool refuses empty PATCH.

asc_delete_app_event_localization
annotations: none low

DELETE an AppEventLocalization. Removes the per-locale copy + every event screenshot + video clip under it. Customers in this locale fall back to the event's primaryLocale.

asc_list_beta_build_localizations
annotations: none low

List BetaBuildLocalizations under a build. Each row is one locale\'s "What to Test" entry for that build (max 4000 chars). Use to see what locales already have copy before adding/patching more.

asc_get_beta_build_localization
annotations: none low

Fetch a single BetaBuildLocalization by ID. Returns the locale + the full whatsNew text. Use before PATCH to read current copy.

asc_post_beta_build_localization
annotations: none low

Create a BetaBuildLocalization for ONE build + ONE locale. whatsNew is optional at create time (you can leave it blank and patch later). The (build, locale) pair must be unique — Apple rejects a duplicate. Locale is immutable post-create; to change locale, delete this resource and re-create.

asc_patch_beta_build_localization
annotations: none low

Update the whatsNew body on an existing BetaBuildLocalization. Apple PATCH on this resource accepts ONLY whatsNew — locale is immutable. Pass the new copy verbatim (no diff/merge); the value replaces what's there.

asc_delete_beta_build_localization
annotations: none low

DELETE a BetaBuildLocalization. The locale is removed for this build; testers in that locale fall back to whatever default locale TestFlight chooses. Doesn't affect the build itself.

asc_list_beta_app_localizations
annotations: none low

List BetaAppLocalizations under an app. Each row carries description + feedbackEmail + marketingUrl + privacyPolicyUrl + tvOsPrivacyPolicy + locale. These are the standing beta-app fields shown in TestFlight above each build\'s "What to Test".

asc_get_beta_app_localization
annotations: none low

Fetch a single BetaAppLocalization by ID.

asc_post_beta_app_localization
annotations: none low

Create a BetaAppLocalization for ONE app + ONE locale. Required: appId + locale. Optional: description, feedbackEmail, marketingUrl (camelCase wire key — NOT marketingURL), privacyPolicyUrl, tvOsPrivacyPolicy. The (app, locale) pair must be unique — Apple rejects a duplicate. Locale is immutable post-create.

asc_patch_beta_app_localization
annotations: none low

Update one or more attrs on an existing BetaAppLocalization. All five attrs are individually optional (encodeIfPresent — only what you pass is sent). Locale is immutable. Tool refuses an empty PATCH (no attrs passed) at the tool layer.

asc_delete_beta_app_localization
annotations: none low

DELETE a BetaAppLocalization. The locale-specific copy is removed; testers in that locale fall back to whatever default TestFlight uses. Per-build "What to Test" localizations are NOT affected.

asc_get_subscription_availability
annotations: none low

Fetch a subscription's SubscriptionAvailability — availableInNewTerritories plus the record id to pass to asc_list_subscription_available_territories. Reads through the parent (/v1/subscriptions/{id}/subscriptionAvailability).

asc_list_subscription_available_territories
annotations: none low

List the Territory rows behind a SubscriptionAvailability (bare 3-letter ISO ids). Pass the availability id from asc_get_subscription_availability.

asc_post_subscription_availability
annotations: none low

Create a new SubscriptionAvailability — Apple atomically swaps over to it. There is NO PATCH; POST the FULL territory list (bare 3-letter ISO codes) every time; missing territories get removed. availableInNewTerritories controls whether Apple auto-adds the subscription when new storefronts launch. ⚠️ Removing a territory pulls the subscription from sale there — customer-facing.

asc_get_iap_availability
annotations: none low

Fetch an IAP's InAppPurchaseAvailability — availableInNewTerritories plus the record id to pass to asc_list_iap_available_territories. Reads through the V2 parent (/v2/inAppPurchases/{id}/inAppPurchaseAvailability).

asc_list_iap_available_territories
annotations: none low

List the Territory rows behind an InAppPurchaseAvailability (bare 3-letter ISO ids). Pass the availability id from asc_get_iap_availability.

asc_post_iap_availability
annotations: none low

Create a new InAppPurchaseAvailability — Apple atomically swaps over to it. There is NO PATCH; POST the FULL territory list (bare 3-letter ISO codes) every time; missing territories get removed. ⚠️ Removing a territory pulls the IAP from sale there — customer-facing.

asc_list_subscription_plan_availabilities
annotations: none low

List a subscription's SubscriptionPlanAvailability records — per-plan-type (MONTHLY / UPFRONT) territory availability. Returns each record's id, planType and availableInNewTerritories; drill territories with asc_list_subscription_plan_available_territories.

asc_list_subscription_plan_available_territories
annotations: none low

List the Territory rows behind a SubscriptionPlanAvailability (bare 3-letter ISO ids). Pass the record id from asc_list_subscription_plan_availabilities.

asc_post_subscription_plan_availability
annotations: none low

Create a SubscriptionPlanAvailability — per-plan-type (planType MONTHLY | UPFRONT) territory availability on a subscription. Pass the full territory list as bare 3-letter ISO codes. Unlike subscription/IAP availability this resource supports PATCH afterwards (asc_patch_subscription_plan_availability).

asc_patch_subscription_plan_availability
annotations: none low

PATCH a SubscriptionPlanAvailability: availableInNewTerritories and/or the availableTerritories list (FULL replacement of the territory set when passed — bare 3-letter ISO codes). planType is immutable. Pass at least one of the two. ⚠️ Removing territories is customer-facing.

asc_sign_promotional_offer_legacy
annotations: none low

Sign a promotional-offer redemption payload using the legacy ECDSA-concatenated format. Use this when your iOS app uses StoreKit 1 (SKPaymentDiscount) or StoreKit 2's Product.PurchaseOption.promotionalOffer(offerID:keyID:nonce:signature:timestamp:). For new code on iOS 15+, prefer asc_sign_promotional_offer (JWS v2).

asc_sign_promotional_offer
annotations: none low

Sign a promotional-offer redemption payload using the JWS v2 format (recommended for new code; introduced WWDC 2025, back-deployed to iOS 15). Use this when your iOS app uses StoreKit 2's newer Product.PurchaseOption.promotionalOffer / subscriptionPromotionalOffer APIs.

asc_sign_introductory_offer_eligibility
annotations: none low

Sign a JWS that overrides StoreKit\'s default introductory-offer eligibility check. Use this when you want to grant a returning customer a fresh introductory offer (which StoreKit normally only allows once per subscription group per Apple ID), or deny an offer the customer would otherwise be eligible for. Same signing key as promo offers; aud="introductory-offer-eligibility".

asc_list_subscription_groups
annotations: none low

List subscription groups for an app.

asc_list_subscriptions
annotations: none low

List auto-renewable subscriptions in a subscription group.

asc_list_subscription_prices
annotations: none low

List the current price schedule for a subscription across territories. Auto-paginates to capture all 175 territories. Returns a compact table by default; pass raw:true for the full JSON:API payload.

asc_list_subscription_price_points
annotations: none low

List the valid price points a subscription can be set to in a given territory. Apple rotates these IDs; cache only within a single run.

asc_upload_asset_chunk
annotations: none low

RAW step 2 of the three-step screenshot / preview upload flow. Apple's reserve response returns uploadOperations[] — one per chunk, each with method (always PUT), url (Apple's pre-signed storage URL), length, offset, and requestHeaders. This tool executes ONE operation: reads localFilePath at [offset, offset+length), PUTs the bytes to url with all requestHeaders, and returns the HTTP status. Apple's storage URLs are pre-signed — no ASC bearer auth is applied. Tilde paths (~/...) are expanded.

asc_list_app_infos
annotations: none low

List AppInfo records for an app. Apps typically have one AppInfo per distribution track — most apps have just one (the App Store track); macOS notarization can introduce a second. Each row shows the state, appStoreState (mirrored from the linked AppStoreVersion), and appStoreAgeRating. Use to find the AppInfo ID before patching categories or fetching localizations.

asc_get_app_info
annotations: none low

Fetch a single AppInfo with its category relationships + localizations expanded. The relationships block carries the IDs for primary/secondary categories + subcategories — use asc_list_app_categories to resolve those IDs to human-readable names.

asc_patch_app_info
annotations: none low

Set primary/secondary category + subcategory relationships on an AppInfo. AppInfoUpdateRequest is RELATIONSHIPS-ONLY (no mutable attributes). Each slot accepts a category ID (set/swap) or null (clear). All six slots are independently optional.

asc_list_app_info_localizations
annotations: none low

List AppInfoLocalization records under an AppInfo. Each row carries locale + name + subtitle + privacy URLs/text. Use to inspect existing per-locale copy before adding new locales or patching existing ones.

asc_get_app_info_localization
annotations: none low

Fetch a single AppInfoLocalization by ID. Returns the full name + subtitle + privacy URLs/text for the locale.

asc_post_app_info_localization
annotations: none low

Create an AppInfoLocalization for ONE AppInfo + ONE locale. Required: appInfoId + locale + name (30 chars). Optional: subtitle (30 chars), privacyPolicyUrl, privacyChoicesUrl (CCPA/CPRA flows), privacyPolicyText (inline text for territories that require it).

asc_patch_app_info_localization
annotations: none low

Update name / subtitle / privacy fields on an existing AppInfoLocalization. All five attrs are encodeIfPresent (only what you pass is sent). Locale is immutable.

asc_delete_app_info_localization
annotations: none low

DELETE an AppInfoLocalization. The locale-specific app-level copy is removed (subtitle, privacy URLs, etc.). Customers in that locale fall back to the default locale's AppInfoLocalization. Apple may reject if the parent AppInfo is in a frozen state.

asc_list_diagnostic_signatures
annotations: none low

GET /v1/builds/{id}/diagnosticSignatures — Apple's aggregated problem hotspots for one build (DISK_WRITES / HANGS / LAUNCHES), weighted by impact (weight sums to ~1 per type). Drill a signature's anonymized call stacks with asc_get_diagnostic_logs. Populates only with enough opted-in usage — empty on small apps is normal.

asc_get_diagnostic_logs
annotations: none low

GET /v1/diagnosticSignatures/{id}/logs — the anonymized call-stack documents behind one signature. NOT JSON:API: content type application/vnd.apple.diagnostic-logs+json with callStackTree nodes. Returned as raw JSON (capped at maxChars).

asc_patch_bundle_id_capability
annotations: none low

Update a capability's settings (capability id from asc_get_bundle_id's included capabilities). capabilityType must be re-stated on the PATCH. Profiles on the bundle ID must be regenerated afterwards.

asc_get_app_perf_power_metrics
annotations: none low

GET /v1/apps/{id}/perfPowerMetrics — Xcode-metrics percentile curves (LAUNCH, MEMORY, BATTERY, HANG, DISK, ANIMATION, TERMINATION, STORAGE) per device class, rolling across recent versions. NOT JSON:API: content type application/vnd.apple.xcode-metrics+json, returned as raw JSON (capped at maxChars). Narrow with metricType/deviceType (e.g. deviceType "iPhone15,2") — the full document is large.

asc_get_build_perf_power_metrics
annotations: none low

GET /v1/builds/{id}/perfPowerMetrics — same Xcode-metrics document as the app-level tool but scoped to ONE build (compare a new build against the app-level rolling baseline). Same filters and raw-JSON output.

asc_list_${cfg.toolBase}s
annotations: none low

List the ${cfg.singular}s attached to a ${cfg.parentLabel}. Each row carries fileName, fileSize, upload state, and whether the reservation has been committed (sourceFileChecksum present).

asc_get_${cfg.toolBase}
annotations: none low

Fetch a single ${cfg.singular} by ID. Returns the upload metadata (fileName, fileSize, sourceFileChecksum, state), the processed asset URLs once available, and — if the reservation is not yet committed — the uploadOperations[] needed to PUT chunks to Apple storage.

asc_upload_${cfg.toolBase}
annotations: none low

Composite tool: reads localFilePath, reserves a ${cfg.singular} under the ${cfg.parentLabel} (fileName + fileSize derived from the file), PUTs every upload chunk to Apple storage, then commits with the md5 checksum + uploaded=true. Returns the committed resource + a per-chunk summary. Tilde paths (~/...) are expanded.

asc_post_${cfg.toolBase}
annotations: none low

RAW step 1 of the three-step upload. Reserves a ${cfg.singular} under the ${cfg.parentLabel} with fileName + fileSize and returns the resource with uploadOperations[]. PUT each with asc_upload_asset_chunk, then commit with asc_patch_${cfg.toolBase}. Most callers should use the composite asc_upload_${cfg.toolBase} instead.

asc_patch_${cfg.toolBase}
annotations: none low

RAW step 3 of the three-step upload. PATCH the ${cfg.singular} with sourceFileChecksum (lowercase hex MD5 of the full file) + uploaded=true to commit. Wire-key gotcha: Swift \

asc_delete_${cfg.toolBase}
annotations: none low

DELETE a ${cfg.singular} by ID → 204. ${isToOne ?

asc_post_analytics_report_request
annotations: none low

POST /v1/analyticsReportRequests — turn on analytics report generation for an app. accessType ONGOING (Apple keeps producing daily/weekly/monthly instances; may auto-pause after inactivity — stoppedDueToInactivity=true — delete + recreate to resume) or ONE_TIME_SNAPSHOT (single historical backfill). One request per (app, accessType); duplicates are rejected. Instances appear up to ~48h later — an empty chain right after creation is normal.

asc_list_analytics_report_requests
annotations: none low

GET /v1/apps/{id}/analyticsReportRequests — the existing requests (at most one ONGOING + one ONE_TIME_SNAPSHOT). stoppedDueToInactivity=true on an ONGOING request means Apple auto-paused it; delete + recreate to resume.

asc_delete_analytics_report_request
annotations: none low

DELETE /v1/analyticsReportRequests/{id} — stop report generation for this request and drop access to its report chain. Recreating later starts fresh (ONGOING resumes from creation; ONE_TIME_SNAPSHOT re-backfills).

asc_list_analytics_reports
annotations: none low

GET /v1/analyticsReportRequests/{id}/reports — the report catalog: one row per report name (e.g. "App Store Installation and Deletion Standard") within a category. Filter by category (COMMERCE for downloads/proceeds, APP_USAGE for sessions/crashes, APP_STORE_ENGAGEMENT for impressions/page views) or exact name. Take a report ID into asc_list_analytics_report_instances.

asc_list_analytics_report_instances
annotations: none low

GET /v1/analyticsReports/{id}/instances — the dated materializations of one report, one row per (granularity, processingDate). Filter granularity DAILY/WEEKLY/MONTHLY and/or processingDate (YYYY-MM-DD). Take an instance ID into asc_list_analytics_report_segments. Empty within ~48h of creating the request is normal.

asc_list_analytics_report_segments
annotations: none low

GET /v1/analyticsReportInstances/{id}/segments — the downloadable chunks of one instance: checksum, sizeInBytes, and a PRE-SIGNED TIME-LIMITED url. Download promptly with asc_download_analytics_report_segment (pass the URL through verbatim); if a URL expires, re-list segments for fresh ones.

asc_download_analytics_report_segment
annotations: none low

Fetch a segment URL from asc_list_analytics_report_segments (pre-signed — fetched WITHOUT the ASC auth header; the signature lives in the URL) and gunzip the CSV. Returns header + row preview; saveTo writes the full decoded CSV to disk. Expired URL → re-list segments for a fresh one.

asc_get_sales_report
annotations: none low

GET /v1/salesReports — gzipped TSV download, NOT a JSON:API list. Pick reportType (SALES = units by day/week/month; SUBSCRIPTION = active sub counts; SUBSCRIPTION_EVENT = renew/cancel events; SUBSCRIBER = per-subscriber detail; INSTALLS, PRE_ORDER, …), reportSubType, frequency, and reportDate matching the frequency granularity (DAILY/WEEKLY → YYYY-MM-DD, MONTHLY → YYYY-MM, YEARLY → YYYY). Omit reportDate for the latest available — SALES-family only; subscription-family types have NO latest-default on Apple\'s side (observed live), so the tool defaults their DAILY date to yesterday. Subscription-family types also require filter[version] — the tool auto-retries with the version Apple names. Returns a header + row preview; use saveTo for the full file. Apple 404s with "there were no sales" when no data exists for that date — absence, not a malformed request.

asc_post_bundle_id_capability
annotations: none low

Enable a capability (PUSH_NOTIFICATIONS, ICLOUD, APPLE_PAY, HEALTHKIT, …) on a bundle ID. `settings` is a raw passthrough array of CapabilitySetting objects — shapes vary per capability; most capabilities need none. Existing provisioning profiles on the bundle ID become invalid and must be regenerated after capability changes.

asc_get_finance_report
annotations: none low

GET /v1/financeReports — gzipped TSV download of Apple\'s monthly financial report (what Apple actually pays out, post-commission, in payout currency). ALL params required by Apple: regionCode (a currency/region like "US", "EU", "JP" — or "ZZ" for the consolidated all-regions FINANCIAL report), reportDate (YYYY-MM, Apple\'s FISCAL months — Apple\'s fiscal calendar is offset from calendar months), reportType FINANCIAL or FINANCE_DETAIL (FINANCE_DETAIL only supports regionCode Z1). Returns header + row preview; saveTo for the full file.

asc_list_app_store_versions
annotations: none low

List App Store versions for ONE app. appId is required — Apple\'s /v1/appStoreVersions collection is write-only on the GET side (returns FORBIDDEN_ERROR: "does not allow GET_COLLECTION"), so the only way to enumerate versions is via the per-app relationship path /v1/apps/{id}/appStoreVersions. Returns rows with platform, versionString, current state, and IDs in Apple\'s default order (no `sort` parameter is accepted on this path — Apple rejects it). Use raw:true and post-sort client-side if a specific order is needed.

asc_get_app_store_version
annotations: none low

Fetch a single App Store version with relationships expanded (app + appStoreVersionLocalizations + build). Use to see which locales already have copy and which still need localizing — the appStoreVersionLocalizations to-many relationship is the typical entry point for the v0.10 'translate release notes into N locales' workflow.

asc_post_app_store_version
annotations: none low

Create a new App Store version on an app. Required: appId + platform + versionString. The versionString must compare HIGHER than every prior version for this (app, platform) — Apple rejects duplicates or decreasing values. Optional: copyright, reviewType (APP_STORE default / NOTARIZATION for macOS notarization-only), releaseType (MANUAL / AFTER_APPROVAL / SCHEDULED), earliestReleaseDate (required if releaseType=SCHEDULED).

asc_patch_app_store_version
annotations: none low

Mutate version-level attributes: versionString, copyright, reviewType, releaseType, earliestReleaseDate, downloadable. Plus the build relationship (attach/swap/clear). All attrs are encodeIfPresent (only what you pass is sent). Wire-key gotcha: Swift `isDownloadable` → wire `downloadable`.

asc_delete_app_store_version
annotations: none low

DELETE an App Store version. Allowed only when the version is in an editable state (PREPARE_FOR_SUBMISSION, *_REJECTED, INVALID_BINARY, DEVELOPER_REMOVED_FROM_SALE). The tool pre-checks the state with one GET and refuses client-side for frozen states (under review) or live states (READY_FOR_SALE — would orphan customers; release-pending — Apple rejects).

asc_list_beta_testers
annotations: none low

List beta testers. Pass betaGroupId to scope to one group, or omit it to list team-wide. Per-app scoping is NOT supported by Apple — /v1/apps/{id}/betaTesters returns 403 FORBIDDEN_ERROR ("does not allow GET_RELATED. Allowed operation is: DELETE"). To get every tester on an app, list the app\'s groups with asc_list_beta_groups, then iterate this tool with each betaGroupId and dedupe by tester ID. Each row shows email + firstName + lastName + invite state.

asc_get_beta_tester
annotations: none low

Fetch a single beta tester with relationships expanded (apps + betaGroups + builds). Use to inspect which groups and apps a tester has been onboarded to before changing membership.

asc_post_beta_tester
annotations: none low

Create a BetaTester record from an email. Apple uses the email as the uniqueness key per team; a duplicate email surfaces as an API error verbatim.

asc_delete_beta_tester
annotations: none low

DELETE a beta tester record from the team. All group memberships and build accesses for this tester are removed atomically. The tester loses access to every app + build they had. To remove a tester from only ONE group while keeping them on others, use asc_remove_beta_group_testers instead — DELETE on /v1/betaTesters/{id} is team-wide nuclear.

asc_post_beta_tester_invitation
annotations: none low

Send (or resend) the TestFlight invite email for a tester on a specific app. Required: appId.

ppp_load_index
annotations: none low

Returns the bundled Apple Music Individual plan price snapshot used by the ppp_* tools. Refresh by editing data/apple-music-prices.json upstream.

ppp_compute_proposal
annotations: none low

Compute a proposed per-territory price schedule using the bundled Apple Music index as the PPP signal. Read-only — does not write to App Store Connect.

ppp_apply_proposal
annotations: none low

Compute a PPP rebalance proposal, then schedule the price changes against App Store Connect.

asc_list_bundle_ids
annotations: none low

List the bundle IDs registered on the developer portal. The BUNDLE_ID_RECORD column is the opaque resource id the other provisioning tools take — not the reverse-DNS identifier. Optional identifier filter matches exactly. Requires an Admin-role API key.

asc_get_bundle_id
annotations: none low

Fetch one bundle-ID record including its enabled capabilities and the provisioning profiles built on it (capability ids feed the capability PATCH/DELETE tools).

asc_post_bundle_id
annotations: none low

Register a new bundle ID on the developer portal. The reverse-DNS identifier is IMMUTABLE after creation (only the display name can change later), so double-check it — a typo means registering another one and abandoning this record.

asc_patch_bundle_id
annotations: none low

Update a bundle-ID record's display name — the only mutable attribute (the reverse-DNS identifier is fixed at creation).

asc_delete_bundle_id
annotations: none low

Delete a bundle-ID record. Apple refuses while any app is attached to it — this only works for unused registrations. Profiles built on it become invalid.

asc_delete_bundle_id_capability
annotations: none low

Disable a capability (DELETE the capability record). Apps relying on the entitlement lose it on their next profile regeneration — verify nothing ships with it first.

asc_list_certificates
annotations: none low

List the signing certificates of the team with type, serial and expiry. Filter by certificateType to find e.g. all DISTRIBUTION certs. Requires an Admin-role API key.

asc_get_certificate
annotations: none low

Fetch one certificate including `certificateContent` — the base64 DER to install in a keychain / CI secret.

asc_post_certificate
annotations: none low

Create a certificate from a PEM certificate-signing request. csrContent is the full PEM text (including the BEGIN/END CERTIFICATE REQUEST lines) — generate one with `openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out csr.pem`. The private key NEVER goes to Apple; the response carries the signed certificateContent (base64 DER). Team certificate-count limits apply (typically 2 distribution certs).

asc_delete_certificate
annotations: none low

⚠️ DELETE = REVOKE. Shipped App Store builds keep working, but any CI pipeline or colleague signing with this certificate breaks immediately, and every provisioning profile referencing it becomes invalid. Verify nothing depends on it (asc_list_profiles) before revoking.

asc_list_profiles
annotations: none low

List the provisioning profiles of the team with type, state (ACTIVE / INVALID) and expiry. Filter by profileType. INVALID profiles (after a cert revoke or capability change) need delete + re-create — profiles have no PATCH.

asc_get_profile
annotations: none low

Fetch one profile including `profileContent` — base64 of the actual .mobileprovision file (decode and drop into ~/Library/MobileDevice/Provisioning Profiles or a CI secret). Includes the bundle ID, certificates, and devices it was built from.

asc_post_profile
annotations: none low

Generate a provisioning profile: name + profileType + the bundle-ID record + certificate ids (+ device ids for DEVELOPMENT/ADHOC types — App Store types take none). The response carries profileContent (base64 .mobileprovision) immediately. Profiles are immutable — to change one later, delete and re-create.

asc_delete_profile
annotations: none low

Delete a provisioning profile. Installed copies keep working until expiry; CI that fetches it fresh breaks. The standard rotate move is delete + asc_post_profile with the same name.

asc_list_devices
annotations: none low

List the registered test devices of the team (name, class, model, status, UDID). Disabled devices still count against the 100-per-class membership-year limit until Apple’s annual reset.

asc_post_device
annotations: none low

Register a test device by UDID. ⚠️ Registration is effectively permanent: devices can never be deleted (only DISABLED) and count against the 100-per-class membership-year limit until Apple’s yearly reset — check the UDID carefully.

asc_patch_device
annotations: none low

Update a registered device: name and/or status (ENABLED / DISABLED). DISABLED removes it from new profiles but does NOT free its slot in the membership-year device count. Pass at least one attribute.

Permissions 3

network medium
Server uses network capabilities via: fetch()
filesystem low
Server uses filesystem capabilities via: glob, open(), os
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 741

low
Tool 'asc_list_promoted_purchases' has no annotations annotation_checker · 100%
low
Tool 'asc_get_promoted_purchase' has no annotations annotation_checker · 100%
low
Tool 'asc_post_promoted_purchase' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_promoted_purchase' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_promoted_purchase' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_promoted_purchases_order' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_group_recruitment_criterion' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_issues' has no annotations annotation_checker · 100%
low
Tool 'asc_post_beta_recruitment_criterion' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_beta_recruitment_criterion' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_beta_recruitment_criterion' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_recruitment_criterion_options' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_recruitment_compatible_build_check' has no annotations annotation_checker · 100%
low
Tool 'asc_list_sandbox_testers' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_sandbox_tester' has no annotations annotation_checker · 100%
low
Tool 'asc_post_sandbox_testers_clear_purchase_history' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_categories' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_tags' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_tag' has no annotations annotation_checker · 100%
low
Tool 'asc_list_search_keywords' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_products' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_workflows' has no annotations annotation_checker · 100%
low
Tool 'asc_get_ci_workflow' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_build_runs' has no annotations annotation_checker · 100%
low
Tool 'asc_get_ci_build_run' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_build_actions' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_test_results' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_artifacts' has no annotations annotation_checker · 100%
low
Tool 'asc_get_ci_artifact' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_build_run_builds' has no annotations annotation_checker · 100%
low
Tool 'asc_list_ci_environment_versions' has no annotations annotation_checker · 100%
low
Tool 'asc_list_scm_providers' has no annotations annotation_checker · 100%
low
Tool 'asc_list_scm_repositories' has no annotations annotation_checker · 100%
low
Tool 'asc_list_scm_git_references' has no annotations annotation_checker · 100%
low
Tool 'asc_list_scm_pull_requests' has no annotations annotation_checker · 100%
low
Tool 'asc_post_ci_build_run' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_ci_workflow' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_feedback_screenshot_submissions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_feedback_screenshot_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_beta_feedback_screenshot_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_feedback_crash_submissions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_feedback_crash_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_feedback_crash_log' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_beta_feedback_crash_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_event_video_clips' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_event_video_clip' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_event_video_clip' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_event_video_clip' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_event_video_clip' has no annotations annotation_checker · 100%
low
Tool 'asc_upload_app_event_video_clip' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_event_screenshots' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_event_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_event_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_event_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_event_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_upload_app_event_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_availability_v2' has no annotations annotation_checker · 100%
low
Tool 'asc_list_territory_availabilities' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_availability_v2' has no annotations annotation_checker · 100%
low
Tool 'asc_end_app_availability_pre_order' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_territory_availability' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_groups' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_group' has no annotations annotation_checker · 100%
low
Tool 'asc_post_beta_group' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_beta_group' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_beta_group' has no annotations annotation_checker · 100%
low
Tool 'asc_add_beta_group_testers' has no annotations annotation_checker · 100%
low
Tool 'asc_remove_beta_group_testers' has no annotations annotation_checker · 100%
low
Tool 'asc_add_beta_group_builds' has no annotations annotation_checker · 100%
low
Tool 'asc_remove_beta_group_builds' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_custom_product_pages' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_custom_product_page' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_custom_product_page' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_custom_product_page' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_custom_product_page' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_custom_product_page_versions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_custom_product_page_version' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_custom_product_page_version' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_custom_product_page_version' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_custom_product_page_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_custom_product_page_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_custom_product_page_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_custom_product_page_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_custom_product_page_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_store_version_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_store_version_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_store_version_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_store_version_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_store_version_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_introductory_offers' has no annotations annotation_checker · 100%
low
Tool 'asc_get_subscription_introductory_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_introductory_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_introductory_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_subscription_introductory_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_post_build_beta_notification' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_subscription_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_subscription_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_screenshot_sets' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_screenshot_set' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_screenshot_set' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_screenshot_set' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_screenshots' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_upload_screenshot' has no annotations annotation_checker · 100%
low
Tool 'asc_list_accessibility_declarations' has no annotations annotation_checker · 100%
low
Tool 'asc_post_accessibility_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_accessibility_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_accessibility_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_list_review_submissions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_review_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_post_review_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_review_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_post_review_submission_item' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_review_submission_item' has no annotations annotation_checker · 100%
low
Tool 'asc_post_iap_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_group_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_list_alternative_distribution_domains' has no annotations annotation_checker · 100%
low
Tool 'asc_post_alternative_distribution_domain' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_alternative_distribution_domain' has no annotations annotation_checker · 100%
low
Tool 'asc_list_alternative_distribution_keys' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_alternative_distribution_key' has no annotations annotation_checker · 100%
low
Tool 'asc_post_alternative_distribution_key' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_alternative_distribution_key' has no annotations annotation_checker · 100%
low
Tool 'asc_post_alternative_distribution_package' has no annotations annotation_checker · 100%
low
Tool 'asc_get_version_alternative_distribution_package' has no annotations annotation_checker · 100%
low
Tool 'asc_list_alternative_distribution_package_versions' has no annotations annotation_checker · 100%
low
Tool 'asc_list_alternative_distribution_package_variants' has no annotations annotation_checker · 100%
low
Tool 'asc_list_alternative_distribution_package_deltas' has no annotations annotation_checker · 100%
low
Tool 'asc_get_marketplace_search_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_post_marketplace_search_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_marketplace_search_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_marketplace_search_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_list_marketplace_webhooks' has no annotations annotation_checker · 100%
low
Tool 'asc_post_marketplace_webhook' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_marketplace_webhook' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_marketplace_webhook' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_win_back_offers' has no annotations annotation_checker · 100%
low
Tool 'asc_get_subscription_win_back_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_win_back_offer_prices' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_win_back_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_win_back_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_subscription_win_back_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_list_customer_reviews' has no annotations annotation_checker · 100%
low
Tool 'asc_get_customer_review' has no annotations annotation_checker · 100%
low
Tool 'asc_get_customer_review_response' has no annotations annotation_checker · 100%
low
Tool 'asc_post_customer_review_response' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_customer_review_response' has no annotations annotation_checker · 100%
low
Tool 'asc_list_customer_review_summarizations' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_offer_codes' has no annotations annotation_checker · 100%
low
Tool 'asc_get_subscription_offer_code' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_offer_code' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_offer_code' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_offer_code_one_time_use_codes' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_offer_code_one_time_use_codes' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_offer_code_one_time_use_codes' has no annotations annotation_checker · 100%
low
Tool 'asc_export_subscription_offer_code_one_time_use_values' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_offer_code_custom_codes' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_offer_code_custom_code' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_offer_code_custom_code' has no annotations annotation_checker · 100%
low
Tool 'asc_list_version_experiments' has no annotations annotation_checker · 100%
low
Tool 'asc_get_version_experiment' has no annotations annotation_checker · 100%
low
Tool 'asc_post_version_experiment' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_version_experiment' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_version_experiment' has no annotations annotation_checker · 100%
low
Tool 'asc_list_experiment_treatments' has no annotations annotation_checker · 100%
low
Tool 'asc_post_experiment_treatment' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_experiment_treatment' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_experiment_treatment' has no annotations annotation_checker · 100%
low
Tool 'asc_list_treatment_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_post_treatment_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_treatment_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_store_version_phased_release' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_store_version_phased_release' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_store_version_phased_release' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_store_version_phased_release' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_app_review_submissions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_app_review_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_post_beta_app_review_submission' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_app_review_details' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_app_review_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_beta_app_review_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_list_pre_release_versions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_pre_release_version' has no annotations annotation_checker · 100%
low
Tool 'asc_list_territories' has no annotations annotation_checker · 100%
low
Tool 'asc_get_age_rating_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_age_rating_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_store_review_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_store_review_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_store_review_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_store_version_release_request' has no annotations annotation_checker · 100%
low
Tool 'asc_get_subscription_grace_period' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_grace_period' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_encryption_declarations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_encryption_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_encryption_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_get_build_app_encryption_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_build_app_encryption_declaration' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_encryption_declaration_document' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_encryption_declaration_document' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_encryption_declaration_document' has no annotations annotation_checker · 100%
low
Tool 'asc_upload_app_encryption_declaration_document' has no annotations annotation_checker · 100%
low
Tool 'asc_list_nominations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_nomination' has no annotations annotation_checker · 100%
low
Tool 'asc_post_nomination' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_nomination' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_nomination' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_price' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_subscription_price' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_prices' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_price_points' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_price_schedule' has no annotations annotation_checker · 100%
low
Tool 'asc_list_iap_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_iap_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_iap_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_iap_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_iap_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_promotional_offers' has no annotations annotation_checker · 100%
low
Tool 'asc_get_subscription_promotional_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_promotional_offer_prices' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_promotional_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_promotional_offer_prices' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_subscription_promotional_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_list_webhooks' has no annotations annotation_checker · 100%
low
Tool 'asc_get_webhook' has no annotations annotation_checker · 100%
low
Tool 'asc_post_webhook' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_webhook' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_webhook' has no annotations annotation_checker · 100%
low
Tool 'asc_list_webhook_deliveries' has no annotations annotation_checker · 100%
low
Tool 'asc_post_webhook_redelivery' has no annotations annotation_checker · 100%
low
Tool 'asc_post_webhook_ping' has no annotations annotation_checker · 100%
low
Tool 'asc_list_iaps' has no annotations annotation_checker · 100%
low
Tool 'asc_get_iap' has no annotations annotation_checker · 100%
low
Tool 'asc_list_iap_prices' has no annotations annotation_checker · 100%
low
Tool 'asc_list_iap_price_points' has no annotations annotation_checker · 100%
low
Tool 'asc_post_iap_price_schedule' has no annotations annotation_checker · 100%
low
Tool 'asc_list_apps' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_preview_sets' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_preview_set' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_preview_set' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_preview_set' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_previews' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_preview' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_preview' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_preview' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_preview' has no annotations annotation_checker · 100%
low
Tool 'asc_upload_app_preview' has no annotations annotation_checker · 100%
low
Tool 'asc_list_builds' has no annotations annotation_checker · 100%
low
Tool 'asc_get_build' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_build' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscriptions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_build_beta_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_build_beta_detail' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_events' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_event' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_event' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_event' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_event' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_event_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_event_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_event_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_event_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_event_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_build_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_build_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_beta_build_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_beta_build_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_beta_build_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_app_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_app_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_beta_app_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_beta_app_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_beta_app_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_get_subscription_availability' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_available_territories' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_availability' has no annotations annotation_checker · 100%
low
Tool 'asc_get_iap_availability' has no annotations annotation_checker · 100%
low
Tool 'asc_list_iap_available_territories' has no annotations annotation_checker · 100%
low
Tool 'asc_post_iap_availability' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_plan_availabilities' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_plan_available_territories' has no annotations annotation_checker · 100%
low
Tool 'asc_post_subscription_plan_availability' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_subscription_plan_availability' has no annotations annotation_checker · 100%
low
Tool 'asc_sign_promotional_offer_legacy' has no annotations annotation_checker · 100%
low
Tool 'asc_sign_promotional_offer' has no annotations annotation_checker · 100%
low
Tool 'asc_sign_introductory_offer_eligibility' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_groups' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_prices' has no annotations annotation_checker · 100%
low
Tool 'asc_list_subscription_price_points' has no annotations annotation_checker · 100%
low
Tool 'asc_upload_asset_chunk' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_infos' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_info' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_info' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_info_localizations' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_info_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_info_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_info_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_info_localization' has no annotations annotation_checker · 100%
low
Tool 'asc_list_diagnostic_signatures' has no annotations annotation_checker · 100%
low
Tool 'asc_get_diagnostic_logs' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_perf_power_metrics' has no annotations annotation_checker · 100%
low
Tool 'asc_get_build_perf_power_metrics' has no annotations annotation_checker · 100%
low
Tool 'asc_list_${cfg.toolBase}s' has no annotations annotation_checker · 100%
low
Tool 'asc_get_${cfg.toolBase}' has no annotations annotation_checker · 100%
low
Tool 'asc_upload_${cfg.toolBase}' has no annotations annotation_checker · 100%
low
Tool 'asc_post_${cfg.toolBase}' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_${cfg.toolBase}' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_${cfg.toolBase}' has no annotations annotation_checker · 100%
low
Tool 'asc_post_analytics_report_request' has no annotations annotation_checker · 100%
low
Tool 'asc_list_analytics_report_requests' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_analytics_report_request' has no annotations annotation_checker · 100%
low
Tool 'asc_list_analytics_reports' has no annotations annotation_checker · 100%
low
Tool 'asc_list_analytics_report_instances' has no annotations annotation_checker · 100%
low
Tool 'asc_list_analytics_report_segments' has no annotations annotation_checker · 100%
low
Tool 'asc_download_analytics_report_segment' has no annotations annotation_checker · 100%
low
Tool 'asc_get_sales_report' has no annotations annotation_checker · 100%
low
Tool 'asc_get_finance_report' has no annotations annotation_checker · 100%
low
Tool 'asc_list_app_store_versions' has no annotations annotation_checker · 100%
low
Tool 'asc_get_app_store_version' has no annotations annotation_checker · 100%
low
Tool 'asc_post_app_store_version' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_app_store_version' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_app_store_version' has no annotations annotation_checker · 100%
low
Tool 'asc_list_beta_testers' has no annotations annotation_checker · 100%
low
Tool 'asc_get_beta_tester' has no annotations annotation_checker · 100%
low
Tool 'asc_post_beta_tester' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_beta_tester' has no annotations annotation_checker · 100%
low
Tool 'asc_post_beta_tester_invitation' has no annotations annotation_checker · 100%
low
Tool 'ppp_load_index' has no annotations annotation_checker · 100%
low
Tool 'ppp_compute_proposal' has no annotations annotation_checker · 100%
low
Tool 'ppp_apply_proposal' has no annotations annotation_checker · 100%
low
Tool 'asc_list_bundle_ids' has no annotations annotation_checker · 100%
low
Tool 'asc_get_bundle_id' has no annotations annotation_checker · 100%
low
Tool 'asc_post_bundle_id' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_bundle_id' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_bundle_id' has no annotations annotation_checker · 100%
low
Tool 'asc_post_bundle_id_capability' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_bundle_id_capability' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_bundle_id_capability' has no annotations annotation_checker · 100%
low
Tool 'asc_list_certificates' has no annotations annotation_checker · 100%
low
Tool 'asc_get_certificate' has no annotations annotation_checker · 100%
low
Tool 'asc_post_certificate' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_certificate' has no annotations annotation_checker · 100%
low
Tool 'asc_list_profiles' has no annotations annotation_checker · 100%
low
Tool 'asc_get_profile' has no annotations annotation_checker · 100%
low
Tool 'asc_post_profile' has no annotations annotation_checker · 100%
low
Tool 'asc_delete_profile' has no annotations annotation_checker · 100%
low
Tool 'asc_list_devices' has no annotations annotation_checker · 100%
low
Tool 'asc_post_device' has no annotations annotation_checker · 100%
low
Tool 'asc_patch_device' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Buffer.from base64 in akoskomuves-appstoreconnect-mcp-e9b45b8/src/digest.ts:1376 entropy_analyzer · 75%
medium
Buffer.from base64 in akoskomuves-appstoreconnect-mcp-e9b45b8/tests/app-availability-body.test.ts:156 entropy_analyzer · 75%
medium
Buffer.from base64 in akoskomuves-appstoreconnect-mcp-e9b45b8/tests/offer-signing.test.ts:76 entropy_analyzer · 75%
info
package.json metadata manifest_parser · 100%
info
Tool: asc_list_promoted_purchases manifest_parser · 85%
info
Tool: asc_get_promoted_purchase manifest_parser · 85%
info
Tool: asc_post_promoted_purchase manifest_parser · 85%
info
Tool: asc_patch_promoted_purchase manifest_parser · 85%
info
Tool: asc_post_app_price_schedule manifest_parser · 85%
info
Tool: asc_delete_promoted_purchase manifest_parser · 85%
info
Tool: asc_patch_promoted_purchases_order manifest_parser · 85%
info
Tool: asc_get_beta_group_recruitment_criterion manifest_parser · 85%
info
Tool: asc_post_beta_recruitment_criterion manifest_parser · 85%
info
Tool: asc_patch_beta_recruitment_criterion manifest_parser · 85%
info
Tool: asc_delete_beta_recruitment_criterion manifest_parser · 85%
info
Tool: asc_list_beta_recruitment_criterion_options manifest_parser · 85%
info
Tool: asc_get_beta_recruitment_compatible_build_check manifest_parser · 85%
info
Tool: asc_list_sandbox_testers manifest_parser · 85%
info
Tool: asc_patch_sandbox_tester manifest_parser · 85%
info
Tool: asc_post_sandbox_testers_clear_purchase_history manifest_parser · 85%
info
Tool: asc_list_app_categories manifest_parser · 85%
info
Tool: asc_list_app_tags manifest_parser · 85%
info
Tool: asc_patch_app_tag manifest_parser · 85%
info
Tool: asc_list_search_keywords manifest_parser · 85%
info
Tool: asc_list_ci_products manifest_parser · 85%
info
Tool: asc_list_ci_workflows manifest_parser · 85%
info
Tool: asc_get_ci_workflow manifest_parser · 85%
info
Tool: asc_list_ci_build_runs manifest_parser · 85%
info
Tool: asc_get_ci_build_run manifest_parser · 85%
info
Tool: asc_list_ci_build_actions manifest_parser · 85%
info
Tool: asc_list_ci_issues manifest_parser · 85%
info
Tool: asc_list_ci_test_results manifest_parser · 85%
info
Tool: asc_list_ci_artifacts manifest_parser · 85%
info
Tool: asc_get_ci_artifact manifest_parser · 85%
info
Tool: asc_list_ci_build_run_builds manifest_parser · 85%
info
Tool: asc_list_ci_environment_versions manifest_parser · 85%
info
Tool: asc_list_scm_providers manifest_parser · 85%
info
Tool: asc_list_scm_repositories manifest_parser · 85%
info
Tool: asc_list_scm_git_references manifest_parser · 85%
info
Tool: asc_list_scm_pull_requests manifest_parser · 85%
info
Tool: asc_post_ci_build_run manifest_parser · 85%
info
Tool: asc_patch_ci_workflow manifest_parser · 85%
info
Tool: asc_list_beta_feedback_screenshot_submissions manifest_parser · 85%
info
Tool: asc_get_beta_feedback_screenshot_submission manifest_parser · 85%
info
Tool: asc_delete_beta_feedback_screenshot_submission manifest_parser · 85%
info
Tool: asc_list_beta_feedback_crash_submissions manifest_parser · 85%
info
Tool: asc_patch_subscription_win_back_offer manifest_parser · 85%
info
Tool: asc_get_beta_feedback_crash_submission manifest_parser · 85%
info
Tool: asc_get_beta_feedback_crash_log manifest_parser · 85%
info
Tool: asc_delete_beta_feedback_crash_submission manifest_parser · 85%
info
Tool: asc_list_app_event_video_clips manifest_parser · 85%
info
Tool: asc_get_app_event_video_clip manifest_parser · 85%
info
Tool: asc_post_app_event_video_clip manifest_parser · 85%
info
Tool: asc_patch_app_event_video_clip manifest_parser · 85%
info
Tool: asc_delete_app_event_video_clip manifest_parser · 85%
info
Tool: asc_upload_app_event_video_clip manifest_parser · 85%
info
Tool: asc_list_app_event_screenshots manifest_parser · 85%
info
Tool: asc_get_app_event_screenshot manifest_parser · 85%
info
Tool: asc_get_beta_build_localization manifest_parser · 85%
info
Tool: asc_post_app_event_screenshot manifest_parser · 85%
info
Tool: asc_patch_app_event_screenshot manifest_parser · 85%
info
Tool: asc_delete_app_event_screenshot manifest_parser · 85%
info
Tool: asc_upload_app_event_screenshot manifest_parser · 85%
info
Tool: asc_get_app_availability_v2 manifest_parser · 85%
info
Tool: asc_list_territory_availabilities manifest_parser · 85%
info
Tool: asc_post_app_availability_v2 manifest_parser · 85%
info
Tool: asc_end_app_availability_pre_order manifest_parser · 85%
info
Tool: asc_patch_territory_availability manifest_parser · 85%
info
Tool: asc_list_beta_groups manifest_parser · 85%
info
Tool: asc_get_beta_group manifest_parser · 85%
info
Tool: asc_post_beta_group manifest_parser · 85%
info
Tool: asc_patch_beta_group manifest_parser · 85%
info
Tool: asc_delete_beta_group manifest_parser · 85%
info
Tool: asc_add_beta_group_testers manifest_parser · 85%
info
Tool: asc_remove_beta_group_testers manifest_parser · 85%
info
Tool: asc_add_beta_group_builds manifest_parser · 85%
info
Tool: asc_remove_beta_group_builds manifest_parser · 85%
info
Tool: asc_list_app_custom_product_pages manifest_parser · 85%
info
Tool: asc_get_app_custom_product_page manifest_parser · 85%
info
Tool: asc_post_app_custom_product_page manifest_parser · 85%
info
Tool: asc_patch_app_custom_product_page manifest_parser · 85%
info
Tool: asc_delete_app_custom_product_page manifest_parser · 85%
info
Tool: asc_list_app_custom_product_page_versions manifest_parser · 85%
info
Tool: asc_get_app_custom_product_page_version manifest_parser · 85%
info
Tool: asc_post_app_custom_product_page_version manifest_parser · 85%
info
Tool: asc_delete_app_custom_product_page_version manifest_parser · 85%
info
Tool: asc_list_app_custom_product_page_localizations manifest_parser · 85%
info
Tool: asc_get_app_custom_product_page_localization manifest_parser · 85%
info
Tool: asc_post_app_custom_product_page_localization manifest_parser · 85%
info
Tool: asc_patch_app_custom_product_page_localization manifest_parser · 85%
info
Tool: asc_delete_app_custom_product_page_localization manifest_parser · 85%
info
Tool: asc_list_app_store_version_localizations manifest_parser · 85%
info
Tool: asc_get_app_store_version_localization manifest_parser · 85%
info
Tool: asc_post_app_store_version_localization manifest_parser · 85%
info
Tool: asc_patch_app_store_version_localization manifest_parser · 85%
info
Tool: asc_delete_app_store_version_localization manifest_parser · 85%
info
Tool: asc_list_subscription_introductory_offers manifest_parser · 85%
info
Tool: asc_get_subscription_introductory_offer manifest_parser · 85%
info
Tool: asc_post_subscription_introductory_offer manifest_parser · 85%
info
Tool: asc_patch_subscription_introductory_offer manifest_parser · 85%
info
Tool: asc_delete_subscription_introductory_offer manifest_parser · 85%
info
Tool: asc_post_build_beta_notification manifest_parser · 85%
info
Tool: asc_list_subscription_localizations manifest_parser · 85%
info
Tool: asc_get_subscription_localization manifest_parser · 85%
info
Tool: asc_post_subscription_localization manifest_parser · 85%
info
Tool: asc_list_${cfg.toolBase}s manifest_parser · 85%
info
Tool: asc_patch_subscription_localization manifest_parser · 85%
info
Tool: asc_delete_subscription_localization manifest_parser · 85%
info
Tool: asc_list_app_screenshot_sets manifest_parser · 85%
info
Tool: asc_get_app_screenshot_set manifest_parser · 85%
info
Tool: asc_post_app_screenshot_set manifest_parser · 85%
info
Tool: asc_delete_app_screenshot_set manifest_parser · 85%
info
Tool: asc_list_app_screenshots manifest_parser · 85%
info
Tool: asc_get_app_screenshot manifest_parser · 85%
info
Tool: asc_post_app_screenshot manifest_parser · 85%
info
Tool: asc_patch_app_screenshot manifest_parser · 85%
info
Tool: asc_delete_app_screenshot manifest_parser · 85%
info
Tool: asc_post_iap_submission manifest_parser · 85%
info
Tool: asc_upload_screenshot manifest_parser · 85%
info
Tool: asc_list_accessibility_declarations manifest_parser · 85%
info
Tool: asc_post_accessibility_declaration manifest_parser · 85%
info
Tool: asc_patch_accessibility_declaration manifest_parser · 85%
info
Tool: asc_delete_accessibility_declaration manifest_parser · 85%
info
Tool: asc_list_review_submissions manifest_parser · 85%
info
Tool: asc_get_review_submission manifest_parser · 85%
info
Tool: asc_post_review_submission manifest_parser · 85%
info
Tool: asc_patch_review_submission manifest_parser · 85%
info
Tool: asc_post_review_submission_item manifest_parser · 85%
info
Tool: asc_delete_review_submission_item manifest_parser · 85%
info
Tool: asc_get_certificate manifest_parser · 85%
info
Tool: asc_post_subscription_submission manifest_parser · 85%
info
Tool: asc_post_subscription_group_submission manifest_parser · 85%
info
Tool: asc_list_alternative_distribution_domains manifest_parser · 85%
info
Tool: asc_post_alternative_distribution_domain manifest_parser · 85%
info
Tool: asc_delete_alternative_distribution_domain manifest_parser · 85%
info
Tool: asc_list_alternative_distribution_keys manifest_parser · 85%
info
Tool: asc_get_app_alternative_distribution_key manifest_parser · 85%
info
Tool: asc_post_alternative_distribution_key manifest_parser · 85%
info
Tool: asc_delete_alternative_distribution_key manifest_parser · 85%
info
Tool: asc_post_alternative_distribution_package manifest_parser · 85%
info
Tool: asc_get_version_alternative_distribution_package manifest_parser · 85%
info
Tool: asc_list_alternative_distribution_package_versions manifest_parser · 85%
info
Tool: asc_list_alternative_distribution_package_variants manifest_parser · 85%
info
Tool: asc_list_alternative_distribution_package_deltas manifest_parser · 85%
info
Tool: asc_get_marketplace_search_detail manifest_parser · 85%
info
Tool: asc_post_marketplace_search_detail manifest_parser · 85%
info
Tool: asc_patch_marketplace_search_detail manifest_parser · 85%
info
Tool: asc_delete_marketplace_search_detail manifest_parser · 85%
info
Tool: asc_list_marketplace_webhooks manifest_parser · 85%
info
Tool: asc_post_marketplace_webhook manifest_parser · 85%
info
Tool: asc_patch_marketplace_webhook manifest_parser · 85%
info
Tool: asc_delete_marketplace_webhook manifest_parser · 85%
info
Tool: asc_list_subscription_win_back_offers manifest_parser · 85%
info
Tool: asc_get_subscription_win_back_offer manifest_parser · 85%
info
Tool: asc_list_subscription_win_back_offer_prices manifest_parser · 85%
info
Tool: asc_post_subscription_win_back_offer manifest_parser · 85%
info
Tool: asc_delete_subscription_win_back_offer manifest_parser · 85%
info
Tool: asc_list_customer_reviews manifest_parser · 85%
info
Tool: asc_get_customer_review manifest_parser · 85%
info
Tool: asc_get_customer_review_response manifest_parser · 85%
info
Tool: asc_post_customer_review_response manifest_parser · 85%
info
Tool: asc_delete_customer_review_response manifest_parser · 85%
info
Tool: asc_list_customer_review_summarizations manifest_parser · 85%
info
Tool: asc_list_subscription_offer_codes manifest_parser · 85%
info
Tool: asc_get_subscription_offer_code manifest_parser · 85%
info
Tool: asc_post_subscription_offer_code manifest_parser · 85%
info
Tool: asc_patch_subscription_offer_code manifest_parser · 85%
info
Tool: asc_list_subscription_offer_code_one_time_use_codes manifest_parser · 85%
info
Tool: asc_post_subscription_offer_code_one_time_use_codes manifest_parser · 85%
info
Tool: asc_patch_subscription_offer_code_one_time_use_codes manifest_parser · 85%
info
Tool: asc_export_subscription_offer_code_one_time_use_values manifest_parser · 85%
info
Tool: asc_list_subscription_offer_code_custom_codes manifest_parser · 85%
info
Tool: asc_post_subscription_offer_code_custom_code manifest_parser · 85%
info
Tool: asc_patch_subscription_offer_code_custom_code manifest_parser · 85%
info
Tool: asc_list_version_experiments manifest_parser · 85%
info
Tool: asc_get_version_experiment manifest_parser · 85%
info
Tool: asc_post_version_experiment manifest_parser · 85%
info
Tool: asc_patch_version_experiment manifest_parser · 85%
info
Tool: asc_delete_version_experiment manifest_parser · 85%
info
Tool: asc_list_experiment_treatments manifest_parser · 85%
info
Tool: asc_post_experiment_treatment manifest_parser · 85%
info
Tool: asc_patch_experiment_treatment manifest_parser · 85%
info
Tool: asc_delete_experiment_treatment manifest_parser · 85%
info
Tool: asc_list_treatment_localizations manifest_parser · 85%
info
Tool: asc_post_treatment_localization manifest_parser · 85%
info
Tool: asc_delete_treatment_localization manifest_parser · 85%
info
Tool: asc_get_app_store_version_phased_release manifest_parser · 85%
info
Tool: asc_post_app_store_version_phased_release manifest_parser · 85%
info
Tool: asc_patch_app_store_version_phased_release manifest_parser · 85%
info
Tool: asc_delete_app_store_version_phased_release manifest_parser · 85%
info
Tool: asc_list_beta_app_review_submissions manifest_parser · 85%
info
Tool: asc_get_beta_app_review_submission manifest_parser · 85%
info
Tool: asc_post_beta_app_review_submission manifest_parser · 85%
info
Tool: asc_list_beta_app_review_details manifest_parser · 85%
info
Tool: asc_get_beta_app_review_detail manifest_parser · 85%
info
Tool: asc_patch_beta_app_review_detail manifest_parser · 85%
info
Tool: asc_list_pre_release_versions manifest_parser · 85%
info
Tool: asc_get_pre_release_version manifest_parser · 85%
info
Tool: asc_list_territories manifest_parser · 85%
info
Tool: asc_get_age_rating_declaration manifest_parser · 85%
info
Tool: asc_patch_age_rating_declaration manifest_parser · 85%
info
Tool: asc_list_app_prices manifest_parser · 85%
info
Tool: asc_get_app_store_review_detail manifest_parser · 85%
info
Tool: asc_post_app_store_review_detail manifest_parser · 85%
info
Tool: asc_patch_app_store_review_detail manifest_parser · 85%
info
Tool: asc_post_app_store_version_release_request manifest_parser · 85%
info
Tool: asc_get_subscription_grace_period manifest_parser · 85%
info
Tool: asc_patch_subscription_grace_period manifest_parser · 85%
info
Tool: asc_list_app_encryption_declarations manifest_parser · 85%
info
Tool: asc_get_app_encryption_declaration manifest_parser · 85%
info
Tool: asc_post_app_encryption_declaration manifest_parser · 85%
info
Tool: asc_get_build_app_encryption_declaration manifest_parser · 85%
info
Tool: asc_list_app_price_points manifest_parser · 85%
info
Tool: asc_patch_build_app_encryption_declaration manifest_parser · 85%
info
Tool: asc_get_app_encryption_declaration_document manifest_parser · 85%
info
Tool: asc_post_app_encryption_declaration_document manifest_parser · 85%
info
Tool: asc_patch_app_encryption_declaration_document manifest_parser · 85%
info
Tool: asc_upload_app_encryption_declaration_document manifest_parser · 85%
info
Tool: asc_list_nominations manifest_parser · 85%
info
Tool: asc_get_nomination manifest_parser · 85%
info
Tool: asc_post_nomination manifest_parser · 85%
info
Tool: asc_patch_nomination manifest_parser · 85%
info
Tool: asc_delete_nomination manifest_parser · 85%
info
Tool: asc_post_subscription_price manifest_parser · 85%
info
Tool: asc_delete_subscription_price manifest_parser · 85%
info
Tool: asc_list_iap_localizations manifest_parser · 85%
info
Tool: asc_get_iap_localization manifest_parser · 85%
info
Tool: asc_post_iap_localization manifest_parser · 85%
info
Tool: asc_patch_iap_localization manifest_parser · 85%
info
Tool: asc_delete_iap_localization manifest_parser · 85%
info
Tool: asc_list_subscription_promotional_offers manifest_parser · 85%
info
Tool: asc_get_subscription_promotional_offer manifest_parser · 85%
info
Tool: asc_list_subscription_promotional_offer_prices manifest_parser · 85%
info
Tool: asc_post_subscription_promotional_offer manifest_parser · 85%
info
Tool: asc_patch_subscription_promotional_offer_prices manifest_parser · 85%
info
Tool: asc_delete_subscription_promotional_offer manifest_parser · 85%
info
Tool: asc_list_webhooks manifest_parser · 85%
info
Tool: asc_get_webhook manifest_parser · 85%
critical
Invisible Unicode characters in 'asc_patch_territory_availability' poisoning · 92%
info
Tool: asc_post_webhook manifest_parser · 85%
info
Tool: asc_patch_webhook manifest_parser · 85%
info
Tool: asc_delete_webhook manifest_parser · 85%
info
Tool: asc_list_webhook_deliveries manifest_parser · 85%
info
Tool: asc_post_webhook_redelivery manifest_parser · 85%
info
Tool: asc_post_webhook_ping manifest_parser · 85%
info
Tool: asc_list_iaps manifest_parser · 85%
info
Tool: asc_get_iap manifest_parser · 85%
info
Tool: asc_list_iap_prices manifest_parser · 85%
info
Tool: asc_list_iap_price_points manifest_parser · 85%
info
Tool: asc_post_iap_price_schedule manifest_parser · 85%
info
Tool: asc_list_apps manifest_parser · 85%
info
Tool: asc_get_app manifest_parser · 85%
critical
Invisible Unicode characters in 'asc_patch_accessibility_declaration' poisoning · 92%
info
Tool: asc_list_app_preview_sets manifest_parser · 85%
info
Tool: asc_get_app_preview_set manifest_parser · 85%
info
Tool: asc_post_app_preview_set manifest_parser · 85%
info
Tool: asc_delete_app_preview_set manifest_parser · 85%
info
Tool: asc_list_app_previews manifest_parser · 85%
info
Tool: asc_get_app_preview manifest_parser · 85%
info
Tool: asc_post_app_preview manifest_parser · 85%
info
Tool: asc_patch_app_preview manifest_parser · 85%
info
Tool: asc_delete_app_preview manifest_parser · 85%
info
Tool: asc_upload_app_preview manifest_parser · 85%
info
Tool: asc_list_builds manifest_parser · 85%
info
Tool: asc_get_build manifest_parser · 85%
info
Tool: asc_patch_build manifest_parser · 85%
info
Tool: asc_get_build_beta_detail manifest_parser · 85%
info
Tool: asc_patch_build_beta_detail manifest_parser · 85%
info
Tool: asc_list_app_events manifest_parser · 85%
info
Tool: asc_get_app_event manifest_parser · 85%
info
Tool: asc_post_app_event manifest_parser · 85%
info
Tool: asc_patch_app_event manifest_parser · 85%
info
Tool: asc_delete_app_event manifest_parser · 85%
info
Tool: asc_list_app_event_localizations manifest_parser · 85%
info
Tool: asc_get_app_event_localization manifest_parser · 85%
info
Tool: asc_post_app_event_localization manifest_parser · 85%
info
Tool: asc_patch_app_event_localization manifest_parser · 85%
info
Tool: asc_delete_app_event_localization manifest_parser · 85%
info
Tool: asc_list_beta_build_localizations manifest_parser · 85%
info
Tool: asc_post_beta_build_localization manifest_parser · 85%
info
Tool: asc_patch_beta_build_localization manifest_parser · 85%
info
Tool: asc_delete_beta_build_localization manifest_parser · 85%
info
Tool: asc_list_beta_app_localizations manifest_parser · 85%
info
Tool: asc_get_beta_app_localization manifest_parser · 85%
info
Tool: asc_post_beta_app_localization manifest_parser · 85%
info
Tool: asc_patch_beta_app_localization manifest_parser · 85%
info
Tool: asc_delete_beta_app_localization manifest_parser · 85%
info
Tool: asc_get_subscription_availability manifest_parser · 85%
info
Tool: asc_list_subscription_available_territories manifest_parser · 85%
info
Tool: asc_post_subscription_availability manifest_parser · 85%
info
Tool: asc_get_iap_availability manifest_parser · 85%
info
Tool: asc_list_iap_available_territories manifest_parser · 85%
info
Tool: asc_post_iap_availability manifest_parser · 85%
info
Tool: asc_list_subscription_plan_availabilities manifest_parser · 85%
info
Tool: asc_list_subscription_plan_available_territories manifest_parser · 85%
info
Tool: asc_post_subscription_plan_availability manifest_parser · 85%
info
Tool: asc_patch_subscription_plan_availability manifest_parser · 85%
info
Tool: asc_sign_promotional_offer_legacy manifest_parser · 85%
info
Tool: asc_sign_promotional_offer manifest_parser · 85%
info
Tool: asc_sign_introductory_offer_eligibility manifest_parser · 85%
info
Tool: asc_list_subscription_groups manifest_parser · 85%
info
Tool: asc_list_subscriptions manifest_parser · 85%
info
Tool: asc_list_subscription_prices manifest_parser · 85%
info
Tool: asc_list_subscription_price_points manifest_parser · 85%
info
Tool: asc_get_build_perf_power_metrics manifest_parser · 85%
info
Tool: asc_upload_asset_chunk manifest_parser · 85%
info
Tool: asc_list_app_infos manifest_parser · 85%
info
Tool: asc_get_app_info manifest_parser · 85%
info
Tool: asc_patch_app_info manifest_parser · 85%
info
Tool: asc_list_app_info_localizations manifest_parser · 85%
info
Tool: asc_get_app_info_localization manifest_parser · 85%
info
Tool: asc_post_app_info_localization manifest_parser · 85%
info
Tool: asc_patch_app_info_localization manifest_parser · 85%
info
Tool: asc_delete_app_info_localization manifest_parser · 85%
info
Tool: asc_list_diagnostic_signatures manifest_parser · 85%
info
Tool: asc_get_diagnostic_logs manifest_parser · 85%
info
Tool: asc_get_app_perf_power_metrics manifest_parser · 85%
info
Tool: asc_get_${cfg.toolBase} manifest_parser · 85%
info
Tool: asc_upload_${cfg.toolBase} manifest_parser · 85%
info
Tool: asc_post_${cfg.toolBase} manifest_parser · 85%
info
Tool: asc_patch_${cfg.toolBase} manifest_parser · 85%
info
Tool: asc_delete_${cfg.toolBase} manifest_parser · 85%
info
Tool: asc_post_analytics_report_request manifest_parser · 85%
info
Tool: asc_list_analytics_report_requests manifest_parser · 85%
info
Tool: asc_delete_analytics_report_request manifest_parser · 85%
info
Tool: asc_list_analytics_reports manifest_parser · 85%
info
Tool: asc_list_analytics_report_instances manifest_parser · 85%
info
Tool: asc_list_analytics_report_segments manifest_parser · 85%
info
Tool: asc_download_analytics_report_segment manifest_parser · 85%
info
Tool: asc_get_sales_report manifest_parser · 85%
info
Tool: asc_get_finance_report manifest_parser · 85%
info
Tool: asc_list_app_store_versions manifest_parser · 85%
info
Tool: asc_get_app_store_version manifest_parser · 85%
info
Tool: asc_post_app_store_version manifest_parser · 85%
info
Tool: asc_patch_app_store_version manifest_parser · 85%
info
Tool: asc_delete_app_store_version manifest_parser · 85%
info
Tool: asc_list_beta_testers manifest_parser · 85%
info
Tool: asc_get_beta_tester manifest_parser · 85%
info
Tool: asc_post_beta_tester manifest_parser · 85%
info
Tool: asc_delete_beta_tester manifest_parser · 85%
info
Tool: asc_post_beta_tester_invitation manifest_parser · 85%
info
Tool: ppp_load_index manifest_parser · 85%
info
Tool: ppp_compute_proposal manifest_parser · 85%
info
Tool: ppp_apply_proposal manifest_parser · 85%
info
Tool: asc_list_bundle_ids manifest_parser · 85%
info
Tool: asc_get_bundle_id manifest_parser · 85%
info
Tool: asc_post_bundle_id manifest_parser · 85%
info
Tool: asc_patch_bundle_id manifest_parser · 85%
info
Tool: asc_delete_bundle_id manifest_parser · 85%
info
Tool: asc_post_bundle_id_capability manifest_parser · 85%
info
Tool: asc_patch_bundle_id_capability manifest_parser · 85%
info
Tool: asc_delete_bundle_id_capability manifest_parser · 85%
info
Tool: asc_list_certificates manifest_parser · 85%
info
Tool: asc_post_certificate manifest_parser · 85%
info
Tool: asc_delete_certificate manifest_parser · 85%
info
Tool: asc_list_profiles manifest_parser · 85%
info
Tool: asc_get_profile manifest_parser · 85%
info
Tool: asc_post_profile manifest_parser · 85%
info
Tool: asc_delete_profile manifest_parser · 85%
info
Tool: asc_list_devices manifest_parser · 85%
info
Tool: asc_post_device manifest_parser · 85%
info
Tool: asc_patch_device manifest_parser · 85%
info
Required env vars (8) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
low
Permission: filesystem access detected permission_analyzer · 80%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Invisible Unicode characters in 'asc_delete_alternative_distribution_domain' poisoning · 92%
critical
Invisible Unicode characters in 'asc_delete_alternative_distribution_key' poisoning · 92%
critical
Tool poisoning in 'asc_post_customer_review_response': Cross-tool sequencing directive poisoning · 85%
critical
Invisible Unicode characters in 'asc_post_customer_review_response' poisoning · 92%
critical
Invisible Unicode characters in 'asc_patch_version_experiment' poisoning · 92%
critical
Invisible Unicode characters in 'asc_patch_age_rating_declaration' poisoning · 92%
critical
Invisible Unicode characters in 'asc_post_app_store_version_release_request' poisoning · 92%
critical
Invisible Unicode characters in 'asc_post_nomination' poisoning · 92%
critical
Invisible Unicode characters in 'asc_patch_nomination' poisoning · 92%
critical
Invisible Unicode characters in 'asc_post_subscription_availability' poisoning · 92%
critical
Invisible Unicode characters in 'asc_post_iap_availability' poisoning · 92%
critical
Invisible Unicode characters in 'asc_patch_subscription_plan_availability' poisoning · 92%
critical
Invisible Unicode characters in 'asc_delete_certificate' poisoning · 92%
critical
Invisible Unicode characters in 'asc_post_device' poisoning · 92%
info
SBOM generated: 318 components sbom_generator · 100%
critical
RSA Private Key found in akoskomuves-appstoreconnect-mcp-e9b45b8/src/init.ts secret_scanner · 95%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%