App Store RevenueCat Sync
Start read-only, build a diff, then create/update only after explicit confirmation. Never delete resources in this workflow.
Preconditions
asc auth configured.
- RevenueCat MCP configured/authenticated; write-enabled API v2 key for apply.
- Known
APP_ID, RevenueCat project_id, target app type (app_store or mac_app_store), and bundle ID for create flows.
Canonical key: ASC productId == RevenueCat store_identifier. Never use display names as unique IDs.
Modes
- Audit: read ASC + RevenueCat, find missing resources and conflicts, present plan.
- Apply: after approval, ensure ASC items, RevenueCat app/products, entitlements/attachments, offerings/packages, then verify.
Read Sources
asc subscriptions groups list --app "APP_ID" --paginate --output json
asc iap list --app "APP_ID" --paginate --output json
asc subscriptions list --group-id "GROUP_ID" --paginate --output json
RevenueCat MCP tools: mcp_RC_get_project, mcp_RC_list_apps, mcp_RC_list_products, mcp_RC_list_entitlements, mcp_RC_list_offerings, mcp_RC_list_packages with pagination.
Type mapping:
- subscription ->
subscription
CONSUMABLE -> consumable
NON_CONSUMABLE -> non_consumable
NON_RENEWING_SUBSCRIPTION -> non_renewing_subscription
Entitlement defaults: one per subscription group, one per non-consumable, none for consumables unless requested.
Apply Order
- Create missing ASC resources, then re-read ASC to get canonical IDs:
asc subscriptions groups create --app "APP_ID" --reference-name "Premium"
asc subscriptions create --group-id "GROUP_ID" --reference-name "Monthly" --product-id "com.example.premium.monthly" --subscription-period ONE_MONTH
asc iap create --app "APP_ID" --type NON_CONSUMABLE --ref-name "Lifetime" --product-id "com.example.lifetime"
- Ensure RevenueCat app/products with
mcp_RC_create_app and mcp_RC_create_product; set store_identifier to ASC productId.
- Ensure entitlements and product attachments with
mcp_RC_create_entitlement, mcp_RC_attach_products_to_entitlement, and verify with mcp_RC_get_products_from_entitlement.
- Optional offerings/packages:
mcp_RC_create_offering, mcp_RC_update_offering, mcp_RC_create_package, mcp_RC_attach_products_to_package using eligibility_criteria: "all".
Recommended package keys: weekly $rc_weekly, monthly $rc_monthly, two-month $rc_two_month, three-month $rc_three_month, six-month $rc_six_month, annual $rc_annual, lifetime $rc_lifetime, custom $rc_custom_<name>.
Agent Rules
- Always audit first, even when the user asks to apply.
- Ask before create/update operations.
- Match by
store_identifier first.
- Use full pagination (
--paginate, starting_after).
- Continue after per-item failures and report all together.
- RevenueCat MCP does not create ASC products; use
asc for ASC resources first.
- Watch for wrong RevenueCat project/app, wrong platform app, consumables attached to entitlements, skipped ASC re-read, and unverified package/offering attachments.
Output
Summarize ASC created/skipped/failed counts, RevenueCat created/skipped/failed counts, attachment counts, and actionable failures.
References: examples.md, references.md.
1---2name: appstore-revenuecat-sync3description: App Store Connect and RevenueCat subscription/IAP reconciliation with `asc` and RevenueCat MCP for catalog bootstrap, drift audits, deterministic product/entitlement/offering/package mapping, and no deletions.4---56# App Store RevenueCat Sync78Start read-only, build a diff, then create/update only after explicit confirmation. Never delete resources in this workflow.910## Preconditions1112- `asc` auth configured.13- RevenueCat MCP configured/authenticated; write-enabled API v2 key for apply.14- Known `APP_ID`, RevenueCat `project_id`, target app type (`app_store` or `mac_app_store`), and bundle ID for create flows.1516Canonical key: ASC `productId` == RevenueCat `store_identifier`. Never use display names as unique IDs.1718## Modes1920- Audit: read ASC + RevenueCat, find missing resources and conflicts, present plan.21- Apply: after approval, ensure ASC items, RevenueCat app/products, entitlements/attachments, offerings/packages, then verify.2223## Read Sources2425```bash26asc subscriptions groups list --app "APP_ID" --paginate --output json27asc iap list --app "APP_ID" --paginate --output json28asc subscriptions list --group-id "GROUP_ID" --paginate --output json29```3031RevenueCat MCP tools: `mcp_RC_get_project`, `mcp_RC_list_apps`, `mcp_RC_list_products`, `mcp_RC_list_entitlements`, `mcp_RC_list_offerings`, `mcp_RC_list_packages` with pagination.3233Type mapping:3435- subscription -> `subscription`36- `CONSUMABLE` -> `consumable`37- `NON_CONSUMABLE` -> `non_consumable`38- `NON_RENEWING_SUBSCRIPTION` -> `non_renewing_subscription`3940Entitlement defaults: one per subscription group, one per non-consumable, none for consumables unless requested.4142## Apply Order43441. Create missing ASC resources, then re-read ASC to get canonical IDs:45 ```bash46 asc subscriptions groups create --app "APP_ID" --reference-name "Premium"47 asc subscriptions create --group-id "GROUP_ID" --reference-name "Monthly" --product-id "com.example.premium.monthly" --subscription-period ONE_MONTH48 asc iap create --app "APP_ID" --type NON_CONSUMABLE --ref-name "Lifetime" --product-id "com.example.lifetime"49 ```502. Ensure RevenueCat app/products with `mcp_RC_create_app` and `mcp_RC_create_product`; set `store_identifier` to ASC `productId`.513. Ensure entitlements and product attachments with `mcp_RC_create_entitlement`, `mcp_RC_attach_products_to_entitlement`, and verify with `mcp_RC_get_products_from_entitlement`.524. Optional offerings/packages: `mcp_RC_create_offering`, `mcp_RC_update_offering`, `mcp_RC_create_package`, `mcp_RC_attach_products_to_package` using `eligibility_criteria: "all"`.5354Recommended package keys: weekly `$rc_weekly`, monthly `$rc_monthly`, two-month `$rc_two_month`, three-month `$rc_three_month`, six-month `$rc_six_month`, annual `$rc_annual`, lifetime `$rc_lifetime`, custom `$rc_custom_<name>`.5556## Agent Rules5758- Always audit first, even when the user asks to apply.59- Ask before create/update operations.60- Match by `store_identifier` first.61- Use full pagination (`--paginate`, `starting_after`).62- Continue after per-item failures and report all together.63- RevenueCat MCP does not create ASC products; use `asc` for ASC resources first.64- Watch for wrong RevenueCat project/app, wrong platform app, consumables attached to entitlements, skipped ASC re-read, and unverified package/offering attachments.6566## Output6768Summarize ASC created/skipped/failed counts, RevenueCat created/skipped/failed counts, attachment counts, and actionable failures.6970References: `examples.md`, `references.md`.