About revenuecat-cli
revenuecat-cli is RevenueCat's official command-line interface for managing projects, apps, products, entitlements, offerings, charts, store state, and paywalls. It provides machine-readable output and a discoverable command schema for terminal, CI, and agent workflows.
Key features
- 01Manage projects, apps, and product catalogs
- 02Inspect charts and customer data
- 03Generate, edit, and publish paywalls
- 04Upload paywall media and fonts
- 05Discover commands and schemas in JSON
Use cases
- 01Manage RevenueCat resources from a terminal
- 02Automate operations in CI or agent scripts
- 03Edit a paywall and upload its assets
- 04Inspect exact command flags before execution
MCP support
The CLI covers many operations also available through the RevenueCat MCP server, with additional paywall editing and media or font uploads. The MCP server includes some SDK feature-gate and experiment tools that the CLI does not.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ revenuecat/ ai-toolkit --skill revenuecat-cliAfter installing, type/revenuecat-cliin Claude Code to confirm it loaded.
Details
From the project READMErevenuecat-cli: driving RevenueCat from the terminal
rc is the official RevenueCat command line interface. It covers most of the same project, app, product, entitlement, offering, paywall, chart, and store-state operations as the RevenueCat MCP server (the CLI adds paywall generate/edit and paywall image/font upload; the MCP server has some SDK feature-gate and experiment tools the CLI does not). Use whichever surface is available; this skill is the reference for the CLI path.
Before the first command
The CLI needs a shell. Without one (for example in a chat app with only the MCP server), use MCP, or tell the user which rc command to run or which dashboard page to use.
-
Check it is installed:
rc --version. If that fails, pick one:- Run without installing:
npx @revenuecat/cli <command>everywherercappears below. Needs Node. Best for CI and agent sandboxes. - Install on macOS/Linux:
brew install RevenueCat/tap/rc. - Install with npm:
npm install -g @revenuecat/cli.
Installing changes the user's machine, so ask before running
brewornpm install -g.npxneeds no permission beyond running the command. - Run without installing:
-
Check it is logged in:
rc auth status --json. The CLI does not share the MCP server's login. If no credential is active, ask the user to runrc auth loginthemselves: it opens a browser for OAuth. In CI, setRC_API_KEYor pass--api-key. -
Check the project: pass
--project-id <id>, or have the user set a default withrc projects use.
The CLI authenticates with a RevenueCat secret key (sk_...); that is correct because the CLI is a server-side tool. This is not the same as the public SDK keys (appl_/goog_/amzn_) you fetch for client app code. Never put a secret key in an app, and never ask the user to paste one into the chat.
Discover the surface
The CLI is self-describing. Don't guess a command or flag, ask the binary:
rc commands --jsonlists the full command tree. Capability IDs appear in colon form (apps:create,products:store:plan).rc commands --schemas --jsonreturns every command's flags, args, and examples in one call. This is the most reliable way for an agent to discover per-command detail.rc schema <command> --jsonreturns detail for a single command, but the command must be space-separated tokens (rc schema apps create), not the colon form fromrc commands.rc schema apps:createsilently returns the root schema, so when in doubt userc commands --schemas.rc --helpandrc <noun> --helpgive human-readable help.
Output conventions
--jsongives stable, machine-readable output. Data goes to stdout, progress and chatter to stderr.- The envelope is
{ "data": ... }, but the shape underdatavaries by command: lists are usuallydata.items[], though some commands use other keys (charts usedata.names[]). Inspect the schema or the response rather than assumingdata.items. --no-inputnever prompts, it fails instead. Use it in scripts, CI, and agents.--yes/-yskips confirmation prompts on mutating commands.--project-id <id>selects the project (or set a default withrc projects use). Pass it explicitly in scripts.- Exit codes:
0success,1error,2bad usage,4auth,5not found,6rate limited.
Common operations
Look up exact flags with rc commands --schemas --json (or rc schema <space-separated command>). The common nouns:
- Projects and apps:
rc projects list|create|use,rc apps list|create|keys - Catalog:
rc products ...,rc entitlements ...,rc offerings ...,rc packages ... - Store credentials and state:
rc setup apple|google,rc products store plan|apply|sync - Data:
rc charts list|show,rc customers ... - Paywalls:
rc paywalls generate|edit|publish(dashboard design/audit playbook:revenuecat-paywall-design) - Paywall media and fonts:
rc media-assets list|upload <file>,rc fonts list|upload <file>. MCP cannot upload these; do not use the dashboard in a browser. - Dashboard:
rc open [section] [id] --print(resource URLs:revenuecat-dashboard-links)
Images: jpg/png/webp/avif/heic/heif, up to 2 MiB. Fonts: ttf/otf, up to 5 MiB. Write or generate the file on disk first, then pass that path. Confirm flags with rc schema media-assets upload / rc schema fonts upload.
Prefer the specific command. Drop to rc api <METHOD> <path> only for endpoints not yet in the CLI surface.