RevKeen MCP
Connect RevKeen billing tools to AI hosts over the Model Context Protocol
RevKeen MCP lets AI hosts like Claude, Cursor, and VS Code query your billing, customer, subscription, and usage data through the Model Context Protocol — an open standard for connecting AI assistants to external tools securely.
On this page you will learn how to connect your AI host to RevKeen, what tools are available, how the scope-based access model works, and when to choose MCP over SDKs or the REST API.
Quick start
The fastest path: one command in your terminal.
claude mcp add --transport http revkeen https://mcp.revkeen.com/mcpRevKeen opens a browser-based OAuth flow. Grant the scopes you need and you are connected. Try asking:
"List all overdue invoices from the last 30 days"
Connect from other hosts
If you are not using Claude Code, pick your host below and add the configuration.
// .cursor/mcp.json in your project root
{
"mcpServers": {
"revkeen": {
"url": "https://mcp.revkeen.com/mcp"
}
}
}// .vscode/mcp.json in your project root
{
"servers": {
"revkeen": {
"type": "http",
"url": "https://mcp.revkeen.com/mcp"
}
}
}// claude_desktop_config.json
{
"mcpServers": {
"revkeen": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-remote", "https://mcp.revkeen.com/mcp"]
}
}
}Server URL: https://mcp.revkeen.com/mcp
Transport: Streamable HTTP
Authentication: OAuth 2.1 (browser flow)After your host connects, RevKeen opens a browser-based OAuth flow. The granted scopes become the tool permissions for that session.
Example prompts
Once connected, try these prompts in your AI host to see what RevKeen MCP can do:
| Prompt | What it uses |
|---|---|
| "List all overdue invoices from the last 30 days" | invoices_list with status filter |
| "Show me the details for customer Jane Smith" | customers_list (search) then customers_get |
| "Which subscriptions are currently in dunning?" | subscriptions_list_in_dunning |
| "What is the total usage for meter X this billing period?" | usage_events_aggregate |
| "Show me all payments over $500 this month" | payments_list with amount filter |
| "Check the usage balance for subscription abc-123" | usage_balance_get |
| "List all active subscriptions for customer def-456" | subscriptions_list with customer filter |
| "Dry-run a usage event to validate my payload" | usage_events_dry_run |
Your AI host translates these into the appropriate tool calls automatically.
Available tools
The default profile exposes 24 read-only tools across 9 areas. Write operations are behind a separate rollout policy.
Customers
| Tool | Description | Scope |
|---|---|---|
customers_list | List customers. Filter by email. | customers:read |
customers_get | Get detailed customer information including address and metadata. | customers:read |
Invoices
| Tool | Description | Scope |
|---|---|---|
invoices_list | List all invoices. Filter by status, customer, date range. | invoices:read |
invoices_get | Get detailed information about a specific invoice by ID. | invoices:read |
Payments
| Tool | Description | Scope |
|---|---|---|
payments_list | List payments. Filter by customer, invoice, or status. | payments:read |
payments_get | Get payment details including status, amounts, and gateway info. | payments:read |
Orders
| Tool | Description | Scope |
|---|---|---|
orders_list | List orders. Filter by customer, status, or billing type. | orders:read |
orders_get | Get order details including line items and fulfillment info. | orders:read |
Subscriptions
| Tool | Description | Scope |
|---|---|---|
subscriptions_list | List subscriptions. Filter by status or customer. | subscriptions:read |
subscriptions_get | Get subscription details. Past-due subscriptions include dunning summary. | subscriptions:read |
subscriptions_list_in_dunning | List subscriptions currently in dunning (past_due). Includes dunning phase and retry info. | subscriptions:read |
Meters and pricing
| Tool | Description | Scope |
|---|---|---|
meters_list | List usage meters. Filter by active/archived status. | prices:read |
meters_get | Get detailed meter configuration including aggregation, filters, and event name. | prices:read |
meters_list_prices | List all prices attached to a meter, including tier configurations. | prices:read |
Storefront
| Tool | Description | Scope |
|---|---|---|
storefront_products_list | List active, cart-eligible products with browser-safe display data, live prices, and derived availability. Requires Cart to be enabled (403 CART_DISABLED otherwise). | products:read |
storefront_products_get | Get one cart-eligible product by UUID, merchant product reference, or slug — same browser-safe projection as the list tool. | products:read |
storefront_availability_get | Get a product's availability (status plenty/low/soldout, remaining, display_mode). Products that do not track availability return status 'unknown'. | products:read |
storefront_status_get | Cart integration readiness report (activation, keys, origins, product-read, webhooks, availability) — the same semantics as revkeen cart status and the dashboard health panel. Never returns key material. | apps:write |
Usage billing
| Tool | Description | Scope |
|---|---|---|
usage_events_list | Query usage events. Filter by meter, customer, subscription, or time range. | usage:read |
usage_events_aggregate | Get aggregated usage summary for a meter over a time range. Returns total value and event count. | usage:read |
usage_events_dry_run | Validate usage events without persisting. Returns would_ingest/would_skip/would_fail status per event. | usage:read |
usage_balance_get | Get current usage balance for a customer or subscription. Returns per-meter breakdown with included allowance, overage, estimated charges, and margin data. | usage:read |
Integrations
| Tool | Description | Scope |
|---|---|---|
integrations_list_packages | List packages from an external integration provider (e.g., PracticeHub). | integrations:read |
integrations_list_mappings | List product mappings between external packages and RevKeen products. | integrations:read |
All 24 tools are read-only. Write and destructive operations (create, update, delete, send) are not exposed in the default profile. RevKeen is rolling these out behind a separate policy as the tool contract stabilizes.
Scope model
Access is controlled through read-focused OAuth scopes. Each scope unlocks specific tools. When you connect, the OAuth consent screen lets you choose which scopes to grant.
| Scope | What it unlocks |
|---|---|
invoices:read | invoices_list, invoices_get |
customers:read | customers_list, customers_get |
payments:read | payments_list, payments_get |
orders:read | orders_list, orders_get |
subscriptions:read | subscriptions_list, subscriptions_get, subscriptions_list_in_dunning |
prices:read | meters_list, meters_get, meters_list_prices |
usage:read | usage_events_list, usage_events_aggregate, usage_events_dry_run, usage_balance_get |
integrations:read | integrations_list_packages, integrations_list_mappings |
products:read | storefront_products_list, storefront_products_get, storefront_availability_get |
apps:write | storefront_status_get |
If your AI host connects but tools are missing, check that you granted the right scopes during OAuth.
How access works
Your host connects
Your MCP host sends a connection request to https://mcp.revkeen.com/mcp using Streamable HTTP transport.
OAuth consent in your browser
RevKeen redirects you to a browser-based OAuth 2.1 consent screen. You sign in with your RevKeen account and select which scopes (customers, invoices, payments, etc.) to grant for this session.
Scoped session created
RevKeen issues a session token scoped to your merchant and the approved scopes. The token is bound to the MCP session and cannot be reused outside the host.
Tool calls enforced server-side
Every tool call is checked against your scopes, merchant isolation, and rate limits. The server enforces access policy, audit logs every call, scrubs PII from responses, and manages the session lifecycle for you.
This is the key difference between MCP and handing an AI tool a raw API key. The MCP server enforces access boundaries, tenant isolation, and tool contracts — the AI host cannot bypass them.
Tool stability
The 20 v1 tools are stable. RevKeen follows these guarantees:
- No breaking changes to existing tool names, required parameters, or response shapes within a version.
- New tools are added behind rollout policies and announced in the changelog →.
- Deprecations are communicated with at least 90 days notice before removal.
- Write tools will be introduced incrementally with explicit opt-in.
You can build automation on top of the v1 tool contract with confidence.
Rate limits
The MCP server enforces per-session rate limits to protect merchant resources:
| Scope | Limit |
|---|---|
| Per session | 60 requests per minute |
| Per merchant | 300 requests per minute (across all sessions) |
If you exceed a rate limit, the server returns an error with a retry_after hint. Wait the indicated time before retrying.
Rate limits are enforced server-side with Redis-backed counters. In production, rate limiting uses a fail-closed model — if the rate limit backend is unavailable, requests are denied rather than allowed.
Operational endpoints
| Endpoint | Purpose |
|---|---|
https://mcp.revkeen.com/ | Root metadata and public server information |
https://mcp.revkeen.com/healthz | Health check (returns 200 OK when healthy) |
https://mcp.revkeen.com/mcp | Remote MCP endpoint (Streamable HTTP) |
Troubleshooting
Host cannot connect
- Confirm the URL is
https://mcp.revkeen.com/mcp— not an older SSE or stdio endpoint. - Check that your host supports Streamable HTTP transport. Claude Desktop requires the
@anthropic-ai/mcp-remotebridge (see setup above). - Verify your network allows outbound HTTPS to
mcp.revkeen.com.
OAuth window does not open
- Check for browser popup blockers — the OAuth flow opens in a new browser tab.
- If you are behind a corporate proxy, ensure
mcp.revkeen.comand your OAuth provider are allowlisted. - Try disconnecting and reconnecting in your host to re-trigger the flow.
Connected but tools are missing
- Reconnect with the scopes you actually need. If you only granted
customers:read, invoice tools will not appear. - Some hosts cache the tool list. Try reloading or restarting the host after reconnecting.
Tool call returns 403
- The authenticated user may not have access to the target merchant. Verify your RevKeen account has the correct merchant role.
- Check that the tool's required scope was granted during OAuth.
Tool call returns rate limit error
- Wait for the
retry_afterperiod indicated in the error response. - If you are running automated workflows, add backoff logic between tool calls.
- The per-merchant limit (300/min) is shared across all sessions — coordinate with teammates if multiple people are connected.
Data looks stale or empty
- MCP reads live data from RevKeen. If results are empty, verify the merchant has the expected data in the RevKeen Dashboard.
- The MCP server does not cache business data between calls.
When to use MCP vs SDKs vs REST vs CLI
| Surface | Best for | Tradeoffs |
|---|---|---|
| MCP → | AI hosts and agent workflows — natural language queries, copilot integrations | Read-only today, scope-limited, requires OAuth |
| SDKs → | Application code you own and deploy — type-safe, full API coverage | Requires API key management, no AI-native features |
| API Reference → | Raw HTTP integrations, webhook receivers, protocol details | Most flexible but most manual |
| CLI → | Terminal workflows, operator scripts, quick lookups | Best for humans, not for code |
If you are building an AI agent that needs to take actions (create invoices, process refunds), use the REST API → with an API key today. MCP write tools are coming soon.
Self-hosting and local development
For contributors or advanced local development, you can run the MCP server from the RevKeen monorepo:
pnpm --filter @revkeen/mcp-server devThe local server at apps/mcp-server uses the official MCP SDK with the same Streamable HTTP transport, OAuth bearer-token verification, scoped tool access, launch-policy model, and rate limiting as production.