| name | create-revenuecat-project |
| description | Set up a complete RevenueCat project from scratch — creates apps, products, entitlements, offerings, and packages in the correct order. Use when the user wants to create a new RevenueCat project, configure in-app purchases, set up subscriptions or monetization, or bootstrap IAP infrastructure for iOS, Android, or Web. |
| model | opus |
RevenueCat Project Bootstrap
Guide through setting up a complete RevenueCat project from scratch.
Instructions
Important: Use the RevenueCat MCP server for all tool calls. The MCP server may have access to multiple projects. Always use list-projects first to retrieve all accessible projects. If multiple projects are returned, ask the user which project to use or if they want to create a new one.
Phase 1: Discovery
Ask targeted questions to understand the developer's needs:
- Platforms — "Which platforms are you building for?" (iOS, Android, Web, or multiple)
- Business Model — "What type of monetization are you planning?" (subscriptions, one-time purchases, consumables, or a mix)
- Subscription Tiers (if applicable) — "What subscription options do you want to offer?" (common: Monthly + Annual, single tier, Freemium + Premium)
- App Details — Bundle ID (iOS, e.g.
com.company.appname), package name (Android), and display name
Phase 2: Create Resources
Execute in this order — dependencies matter.
-
Verify/Create Project
list-projects - list accessible projects
If multiple: ask user which to use, or offer to create a new one
To create a new project, use the create-project MCP tool
Store project_id for all subsequent calls
-
Create Apps (for each platform):
- For mobile apps, ask if the user already has set up their app in App Store Connect / Google Play Console. If so, create an app using the
create-app tool (type: app_store | play_store). If not, use the automatically generated test_store app and tell the user that they can set up the integration with App Store Connect / Google Play Console later.
- For web apps,
create-app with type rc_billing
-
Create Products (for each subscription/purchase): create-product tool
3a. Test Store apps only: set a price for each product with the create-product-prices tool (e.g. {amount_micros: 980000000, currency: "JPY"} for ¥980 — amount_micros is always the price × 1,000,000 regardless of the currency's usual decimal places). Without this, the app builds and configures fine but Purchases.getOfferings() fails at runtime with "Error fetching offerings ... None of the Test Store products registered in the RevenueCat dashboard could be fetched." Real store apps (app_store/play_store) get their pricing from App Store Connect / Play Console instead — skip this step for those, and note that create-product-prices only works on test_store products.
-
Create Entitlements (for each feature/access level): create-entitlement tool
-
Attach Products to Entitlements: attach-products-to-entitlement tool
-
Create Default Offering: create-offering tool (lookup_key: "default")
-
Create Packages in Offering: create-package tool (for subscriptions, use $rc_monthly, $rc_annual, etc.)
-
Attach Products to Packages: attach-products-to-package tool
-
Get API Keys: list-app-public-api-keys tool
Phase 3: Summary & Next Steps
Provide a complete setup summary:
Project Setup Complete!
=======================
Project: {project_name} ({project_id})
Apps Created:
iOS: {app_name} - API Key: appl_xxxxx
Android: {app_name} - API Key: goog_xxxxx
Products:
- monthly_premium (subscription, P1M)
- annual_premium (subscription, P1Y)
Entitlements:
- premium → monthly_premium, annual_premium
Offering: default (current)
└── $rc_monthly → monthly_premium
└── $rc_annual → annual_premium
Next Steps:
1. Configure store credentials in RevenueCat dashboard
2. Create products in App Store Connect / Play Console
3. Add SDK to your app (see /rc:create-app)
4. Implement paywall UI using the "default" offering
Error Handling
If any step fails:
- Report the specific error clearly
- Suggest fixes (e.g., "Bundle ID may already be in use")
- Offer to retry or skip that step
- Continue with remaining steps if possible