Connect Claude to your billing data.
Revvly speaks the Model Context Protocol. Claude — or any MCP client — can ask the same live questions as the in-dashboard Assistant: clients, subscriptions, invoices, MRR, and catalog. Write-scoped connections can propose changes, but only a signed-in human can approve them in Revvly. Tenant comes from the credential, never from the question.
What MCP is here
The Assistant already answers billing questions inside Revvly. MCP is the same tool catalog on a second transport, so those answers work from Claude Desktop, Claude Code, claude.ai, MCP Inspector, or your own agent stack. There is no second authorization system and no GraphQL hop — the tools call the same tenant-scoped services the dashboard does.
Endpoint
Full URL: https://api.revvly.ai/mcp. The transport is Streamable HTTP and stateless. GET and DELETE are accepted for protocol probes. Authenticate with either an OAuth access token (interactive connect) or an API key (machine clients). A dashboard sign-in token is not accepted here.
Connect with OAuth
You do not paste a key. Sign in with your dashboard account and pick the workspace the client may read. How you add the connector differs between claude.ai and Claude Desktop.
claude.ai
Add Revvly as a custom connector and set the URL to https://api.revvly.ai/mcp. Leave headers empty. On Team and Enterprise plans only organization Owners can add custom connectors; members may only connect to connectors previously added by an Owner.
Claude Desktop
Add a remote MCP server and set the URL to https://api.revvly.ai/mcp. Leave headers empty.
Connect with an API key
Claude Code, MCP Inspector, and other machine clients send a Bearer API key. Issue one from Settings → API Keys. The key needs the coarse READ capability. Add WRITE to propose actions. The key cannot approve its proposals; its credential owner opens the returned approval link while signed in to the Revvly dashboard. An empty endpoint scope, or a scope that includes /mcp or *, is enough. A key scoped only to /usage is rejected.
claude_desktop_config.json / MCP server entry{
"mcpServers": {
"revvly": {
"type": "http",
"url": "https://api.revvly.ai/mcp",
"headers": {
"Authorization": "Bearer rvly_sk_live_<your-key>"
}
}
}
}Capture the plaintext when the key is issued — it is shown once. The tenant is the key’s tenant. Rate limits are the same per-key limits as the rest of the platform.
What you can ask
The same read tools as the Assistant. Typical questions: current MRR and how it moved, overdue invoices for a client, usage against a meter, what bundles you sell. Mutating tools return a proposal with an approval link. The credential owner opens that link and approves or declines while signed in to Revvly; the MCP client cannot approve its own request. OAuth clients must request mcp:write; API keys need coarse WRITE. There are 20 read tools and 19 proposal tools; the full list with access levels is in the MCP tool catalogue.
Try it locally
MCP Inspector is useful when you are standing up a key or checking that OAuth reaches your login page.
npx @modelcontextprotocol/inspector # Transport: Streamable HTTP # URL: https://api.revvly.ai/mcp # Header: Authorization: Bearer rvly_sk_live_<your-key> # Or leave the header empty and complete the sign-in flow.
Errors & limits
Take actions
Writes use the same human-review boundary as the in-dashboard Assistant. A mutating tool stores a 15-minute proposal and returns an actionId plus an approval link. The credential owner must approve in Revvly; no approval operation is model-callable. The server atomically claims the action id so retries cannot run the write twice. Request mcp:write on OAuth (it is never added for you), or issue an API key with coarse WRITE.
- Client calls a toolA mutating tool, with mcp:write or a WRITE key.
- Proposal storedValid for 15 minutes. Returns an actionId and an approval link.
- Owner opens the linkSigned in to Revvly. The client cannot approve.
- ApprovedThe write is applied once, even if retried.orDeclinedNothing is written.