Reconcile App Store Connect subscriptions and in-app purchases with RevenueCat products, entitlements, offerings, and packages using asc and RevenueCat MCP. Use when setting up or syncing subscription catalogs across ASC and RevenueCat.
Use this skill to keep App Store Connect (ASC) and RevenueCat aligned, including creating missing ASC items and mapping them to RevenueCat resources.
asc authentication is configured (asc auth login or ASC_* env vars).APP_ID)project_idapp_store or mac_app_store) and bundle ID for create flowsproductId == RevenueCat store_identifier.productId stable once products are live.asc commands to create missing ASC subscription groups, subscriptions, and IAPs before RevenueCat mapping.Execute approved actions in this order:
asc subscriptions groups list --app "APP_ID" --paginate --output json
asc iap list --app "APP_ID" --paginate --output json
# for each subscription group:
asc subscriptions list --group-id "GROUP_ID" --paginate --output json
Use these MCP tools (with project_id and pagination where applicable):
mcp_RC_get_projectmcp_RC_list_appsmcp_RC_list_productsmcp_RC_list_entitlementsmcp_RC_list_offeringsmcp_RC_list_packagesMap ASC product types to RevenueCat product types:
subscriptionCONSUMABLE -> RevenueCat consumableNON_CONSUMABLE -> RevenueCat non_consumableNON_RENEWING_SUBSCRIPTION -> RevenueCat non_renewing_subscriptionSuggested entitlement policy:
Create missing ASC resources first, then re-read ASC to capture canonical IDs.
# create subscription group
asc subscriptions groups create --app "APP_ID" --reference-name "Premium"
# create subscription
asc subscriptions create \
--group-id "GROUP_ID" \
--reference-name "Monthly" \
--product-id "com.example.premium.monthly" \
--subscription-period ONE_MONTH
# create iap
asc iap create \
--app "APP_ID" \
--type NON_CONSUMABLE \
--ref-name "Lifetime" \
--product-id "com.example.lifetime"
Use MCP:
mcp_RC_create_appmcp_RC_create_product
store_identifier = ASC productIdapp_id = RevenueCat app IDtype from mapping aboveUse MCP:
mcp_RC_list_entitlements, mcp_RC_create_entitlementmcp_RC_attach_products_to_entitlementmcp_RC_get_products_from_entitlementUse MCP:
mcp_RC_list_offeringsmcp_RC_create_offeringmcp_RC_update_offering (is_current=true only if requested)mcp_RC_list_packagesmcp_RC_create_packagemcp_RC_attach_products_to_package with eligibility_criteria: "all"Recommended package keys:
ONE_WEEK -> $rc_weeklyONE_MONTH -> $rc_monthlyTWO_MONTHS -> $rc_two_monthTHREE_MONTHS -> $rc_three_monthSIX_MONTHS -> $rc_six_monthONE_YEAR -> $rc_annual$rc_lifetime$rc_custom_<name>Return a final summary with:
Example:
ASC: created groups=1 subscriptions=2 iap=1, skipped=14, failed=0
RC: created apps=0 products=3 entitlements=2 offerings=1 packages=2, skipped=27, failed=1
Attachments: entitlement_products=3 package_products=2
Failures:
- com.example.premium.annual: duplicate store_identifier exists on another RC app
store_identifier first.--paginate for ASC, starting_after for RevenueCat tools).project_id or app ID.