mcpField
R
revenuecat-cli

revenuecat-cli

github.com/revenuecatDevelopment76432 installsUpdated 1d ago
Repository

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

  1. 01Manage projects, apps, and product catalogs
  2. 02Inspect charts and customer data
  3. 03Generate, edit, and publish paywalls
  4. 04Upload paywall media and fonts
  5. 05Discover commands and schemas in JSON

Use cases

  1. 01Manage RevenueCat resources from a terminal
  2. 02Automate operations in CI or agent scripts
  3. 03Edit a paywall and upload its assets
  4. 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-cli

After installing, type/revenuecat-cliin Claude Code to confirm it loaded.

Details

From the project README

revenuecat-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.

  1. Check it is installed: rc --version. If that fails, pick one:

    • Run without installing: npx @revenuecat/cli <command> everywhere rc appears 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 brew or npm install -g. npx needs no permission beyond running the command.

  2. 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 run rc auth login themselves: it opens a browser for OAuth. In CI, set RC_API_KEY or pass --api-key.

  3. Check the project: pass --project-id <id>, or have the user set a default with rc 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 --json lists the full command tree. Capability IDs appear in colon form (apps:create, products:store:plan).
  • rc commands --schemas --json returns 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> --json returns detail for a single command, but the command must be space-separated tokens (rc schema apps create), not the colon form from rc commands. rc schema apps:create silently returns the root schema, so when in doubt use rc commands --schemas.
  • rc --help and rc <noun> --help give human-readable help.

Output conventions

  • --json gives stable, machine-readable output. Data goes to stdout, progress and chatter to stderr.
  • The envelope is { "data": ... }, but the shape under data varies by command: lists are usually data.items[], though some commands use other keys (charts use data.names[]). Inspect the schema or the response rather than assuming data.items.
  • --no-input never prompts, it fails instead. Use it in scripts, CI, and agents.
  • --yes / -y skips confirmation prompts on mutating commands.
  • --project-id <id> selects the project (or set a default with rc projects use). Pass it explicitly in scripts.
  • Exit codes: 0 success, 1 error, 2 bad usage, 4 auth, 5 not found, 6 rate 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.

Comments

Markdown supported