asc_sign_promotional_offer_legacy

MCP tool from Appstoreconnect MCP by akoskomuves

legacy ECDSA-concatenated signature used by StoreKit 1's SKPaymentDiscount and the original StoreKit 2 Product.PurchaseOption.promotionalOffer(offerID:keyID:nonce:signature:timestamp:) API. Returns the base64 signature plus the nonce, timestamp, and keyId for the caller to pass to StoreKit. Auto-gen

How to use it

asc_sign_promotional_offer_legacy is exposed by the Appstoreconnect MCP MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), and the asc_sign_promotional_offer_legacy tool becomes available to the model automatically. See the full listing for setup details and every tool this server provides.

Install Appstoreconnect MCP

$npx -y @akoskomuves/appstoreconnect-mcp
FULL APPSTORECONNECT MCP LISTING

Other tools in Appstoreconnect MCP (39)

asc_delete_subscription_introductory_offer

delete a pending or active offer. Apple refuses to delete one that is currently redeemable; PATCH endDate to today to stop it instead.

asc_delete_subscription_price

cancel a pending scheduled change

asc_delete_subscription_promotional_offer

DELETE → 204.

asc_delete_subscription_win_back_offer

DELETE → 204.

asc_get_app

fetch one app by ID

asc_get_app_store_review_detail

/ ascpost… / ascpatch… — the What-to-tell-App-Review card of a version: contact person, demo account (name/password/required), notes. To-one per version; Apple merges on PATCH.

asc_get_iap

fetch a single IAP by ID.

asc_get_subscription_grace_period

/ ascpatch… — billing grace period per app: optIn / sandboxOptIn, duration (3 / 16 / 28 days), renewalType (all renewals vs paid-to-paid only). Keeps lapsed subscribers entitled while Apple retries payment.

asc_get_subscription_introductory_offer

fetch one offer by ID.

asc_get_subscription_promotional_offer

fetch a single offer, including its per-territory prices.

asc_get_subscription_win_back_offer

fetch a single offer, including its subscription and per-territory prices.

asc_list_app_price_points

valid Apple price tiers for an app in a given territory (~600+ tiers per territory). Pass nearAmount (target price) and optional nearCount (default 10) to narrow the response to the nearest tiers — Apple does not support a near-amount filter server-side, so the full list is still paginated but only

asc_list_app_prices

current price schedule for an app, splitting manual overrides from auto-derived prices and surfacing the base territory

asc_list_apps

list apps (filter by bundleId)

asc_list_iap_price_points

valid Apple price tiers for an IAP in a given territory. Same nearAmount / nearCount narrowing as the app and subscription price-point tools.

asc_list_iap_prices

current price schedule for an IAP (same shape as app prices: manual overrides + auto-derived + base territory).

asc_list_iaps

list IAPs for an app (v2 surface only — auto-renewable subscriptions are covered by the Subscriptions tools above). Filterable by inAppPurchaseType and state. If this returns zero rows for an app you know has IAPs, the IAPs may be legacy-only and need to be migrated in the App Store Connect web UI b

asc_list_subscription_groups

groups for an app

asc_list_subscription_introductory_offers

list intro offers (free trial / pay-as-you-go / pay-up-front) configured for a subscription, across territories. Apple's "all territories" wildcard (a single offer with no territory) surfaces as TERR=(all) in the table.

asc_list_subscription_price_points

valid price points for a subscription in a territory. Pass nearAmount to narrow the response to the nearest tiers around a target price.

asc_list_subscription_prices

current price schedule per subscription

asc_list_subscription_promotional_offer_prices

list per-territory price rows attached to an offer (territory + currency + amount + price-point ID).

asc_list_subscription_promotional_offers

list promo offers configured for a subscription.

asc_list_subscription_win_back_offer_prices

list per-territory price rows attached to an offer (territory + currency + amount + price-point ID).

asc_list_subscription_win_back_offers

list win-back offers configured for a subscription.

asc_list_subscriptions

auto-renewable subscriptions in a group

asc_patch_subscription_introductory_offer

narrow update path: only startDate, endDate, and pricePointId can change after creation. To change mode / duration / periods, delete and re-create.

asc_patch_subscription_promotional_offer_prices

update the offer's per-territory prices. Apple's wire semantic is replace (the new prices array becomes the post-state, dropping any territory not listed); the tool's mode: 'replace' 'add' 'remove' parameter hides the footgun — 'add' reads current prices and merges, 'remove' reads and filters.

asc_patch_subscription_win_back_offer

update the mutable attributes only: eligibility, startDate/endDate, priority, and promotionIntent. To change identity, mode, duration, periods, or prices, delete and re-create.

asc_post_app_price_schedule

replace the entire price schedule (whole-schedule replace, NOT a merge — matches Apple's API). Pre-flight refuses unless at least one entry targets the base territory with no startDate, and requires explicit acknowledgeReplacesAll: true. A separate acknowledgeDeletesScheduledIfBaseChanges ack is req

asc_post_app_store_version_release_request

⚠️ release an approved (PENDINGDEVELOPERRELEASE) version to the public App Store now — the "Release this version" click, automated. Only for manually-released versions; no undo.

asc_post_iap_price_schedule

replace the entire IAP price schedule (same whole-schedule replace semantics as ascpostapppriceschedule: acknowledgeReplacesAll: true, base-territory entry with no startDate, base-change ack required). No grandfather mechanism — same as apps.

asc_post_iap_submission

/ ascpostsubscriptionsubmission / ascpostsubscriptiongroupsubmission — submit an IAP / subscription / subscription group's pending metadata changes for review standalone, without a version release. Wire gotcha handled: the IAP one relates via inAppPurchaseV2.

asc_post_subscription_introductory_offer

create an offer. Three offerModes: FREETRIAL (no price; omit pricePointId), PAYASYOUGO (charge the offer price each period for numberOfPeriods periods), PAYUPFRONT (single charge for the whole duration; Apple still requires numberOfPeriods — defaults to 1 when omitted). Pass territoryId to target on

asc_post_subscription_price

schedule a price change for one territory

asc_post_subscription_promotional_offer

create an offer (name + offerCode + mode + duration + all per-territory prices) in one atomic POST. Pre-flights Apple's 10-offer cap and offerCode collisions, refusing with a clear remedy message instead of letting Apple 409.

asc_post_subscription_win_back_offer

create an offer (identity + eligibility rules + schedule + priority + all per-territory prices) in one atomic POST. Eligibility is expressed as customerEligibilityPaidSubscriptionDurationInMonths, customerEligibilityTimeSinceLastSubscribedInMonths (an { minimum, maximum? } range), and an optional cu

asc_sign_promotional_offer

JWS v2 format introduced at WWDC 2025 (back-deployed to iOS 15). Use with StoreKit 2's newer promotional-offer purchase options. Returns the JWS compact serialization directly. transactionId (the customer's appTransactionId) is optional but strongly recommended.

IAPs

ascgetiapavailability (reads through the v2 parent path) · asclistiapavailableterritories · ascpostiapavailability (same replace semantics).