revenuecat-store-state
Managing product store state
The store is the source of truth for prices, availability, localizations, and offers. Reads are immediate. Writes go through a product store state plan: create a draft, compute a reviewable diff, then apply. Nothing reaches the store until the plan is applied.
MCP and the rc CLI (see the revenuecat-cli skill) use the same plan/apply model. Prefer whichever surface is available. Refer to the MCP tool schemas (or rc commands --schemas --json) for exact parameters.
There is at most one active (non-terminal) plan per project. List plans before creating a new one; if create fails because a plan is already in progress, fetch it, describe what is pending, and decide with the user whether to continue it or discard it.
Reads
Always use get-product-store-state (CLI: rc products show <product-id> --store-state). Never infer store prices, availability, or trials from get-product, list-products, or offering data — those are RevenueCat catalog, not store state. Surface the response's warnings.
If store_status.status is could_not_check, RevenueCat could not read the store: empty pricing, availability, or localizations mean the read failed, not that nothing is configured. Say the product couldn't be read from the store, without guessing a cause — never say it has no store prices.
Prerequisites
Store-state writes require store credentials connected to the RevenueCat project (an App Store Connect API key, or a Google Play service account with the Manage store presence permission) and a RevenueCat login with write access to the project. If a write fails with a credentials or permission error, report what is missing and how to fix it (dashboard app settings for store credentials) instead of retrying.