MCP Setup and Troubleshooting
Connect Claude Code, Codex, Gemini CLI, Claude, ChatGPT, Cursor, VS Code or any MCP host to Revnu, as a remote connector or a local server. The permissions each tool needs, which tools send or publish, and how to reconnect a broken connector.
This is the full install guide for the Revnu MCP server. The one-command versions on the Revnu MCP server page, the agent pages and revnu.com/setup use the same commands and point back here.
The Revnu MCP server connects Claude, ChatGPT, Cursor, Claude Code, Codex, Gemini CLI, GitHub Copilot and other MCP hosts to your Revnu account. Its tools map one-to-one onto the API's routes, so your assistant can hand Revnu work, read and resolve the review queue, read results and leads, sync your existing customers, manage the block list and edit workflows. Connect it two ways:
Remote, at
https://revnu.com/api/mcp. Nothing to install. You sign in to Revnu once and pick what the app may do.Local, as
revnu mcpfrom the@revnu/clipackage, with an API token in its environment.
Both serve the same tools. On hosts that support MCP Apps, review_list and review_get open your review queue as cards with Approve, Send, Ask for Changes, Snooze and Dismiss buttons, right in the chat. ask_revnu, results_get, leads_list, lead_get and workflows_list show their results in the same app. Buttons appear only for what the connection's permissions allow.
The hosted connector records tool usage, timing, errors and the request text passed
to ask_revnu or review_search in PostHog to help us understand usage and diagnose
problems. Query text is limited to 16 KB and recognizable credentials are masked.
Tool results and other arguments are excluded. Revnu receives the request your
assistant passes to its tools, not your whole conversation with that assistant.
These analytics apply to the hosted connector, not the local revnu mcp process.
review_list gives your assistant compact titles, statuses and available actions. The app receives the full cards separately, so your queue shows without copying every draft into chat. Use review_get to inspect a particular draft. One successful list call is enough to display the queue.
Note
New account? The setup_* tools take you from sign-up to Revnu's first work. Every other tool, ask_revnu included, opens once your free trial or paid plan starts and answers setup_pending until then. Tell your assistant "Set me up with revnu.com".
Full coding-agent install: skills and MCP globally
For Claude Code, Codex, Gemini CLI and Cursor, use the bundle:
curl -fsSL https://revnu.com/install | shIt detects installed hosts, adds Revnu to their user-level MCP configuration, and installs all eight growth skills globally for those same hosts. Restart the host, then authenticate Revnu in its MCP settings. Skills recognize growth requests without the Revnu name. MCP supplies the tools that carry out the work. Rerun the installer to refresh skills or repair the MCP configuration.
| Host | User-level MCP configuration |
|---|---|
| Claude Code | ~/.claude.json, or the file in CLAUDE_CONFIG_DIR |
| Codex | ~/.codex/config.toml, or the file in CODEX_HOME |
| Gemini CLI | ~/.gemini/settings.json, respecting GEMINI_CLI_HOME |
| Cursor | ~/.cursor/mcp.json |
The installer preserves other servers and settings. A project-level override can still take precedence in that project. Installation does not authenticate your account, start a paid plan, or bypass your approval settings. It reports incomplete setup if either part fails or no supported host is found.
The native Revnu plugin also bundles skills and MCP; choose its user/global scope where the host offers a scope choice. Web connectors and the manual MCP commands below provide MCP only. Adding an MCP server cannot install skill files through the MCP protocol.
Remote connector for Claude, ChatGPT and Cursor
The server URL is:
https://revnu.com/api/mcpOpening that URL in a browser takes you to the setup page. The install configuration
is also available at /mcp.json and
/.well-known/mcp.json.
It speaks Streamable HTTP and signs you in with OAuth. The first time you connect, Revnu asks you to sign in and choose which permissions the app gets. With no Revnu account yet, the same page creates one, and the app sets it up with you through the setup_* tools: tell it "Set me up with revnu.com" (revnu.com/setup). Connecting creates an API token labelled with the app's name, which you can revoke any time in Settings → Developers.
claude mcp add --transport http --scope user revnu https://revnu.com/api/mcpThen run /mcp inside Claude Code, pick revnu and choose Authenticate. A browser opens to sign in and choose permissions. Leave Agent: Message ticked if you want Claude Code to hand Revnu work with ask_revnu. If revnu isn't listed, restart Claude Code first.
--scope user makes Revnu available in every project. Without it, Claude Code adds the server to the current directory only, and it seems to vanish when you open another project.
To connect Claude Code, Codex, Gemini CLI and Cursor in one go, and install all eight Revnu growth skills globally, run curl -fsSL https://revnu.com/install | sh. It adds the Revnu server to each agent it finds. Then sign in from each agent.
codex mcp add revnu --url https://revnu.com/api/mcp
codex mcp login revnuThe second command opens a browser to sign in to Revnu and choose permissions.
gemini mcp add --transport http --scope user revnu https://revnu.com/api/mcpThen run /mcp auth revnu inside Gemini CLI to sign in.
Settings → Connectors → Add custom connector, paste the URL, then Connect.
Open Settings → Apps & Connectors → Advanced, turn on Developer mode, then create a connector named Revnu with the URL above and OAuth as the authentication.
Install in VS Code opens VS Code's install prompt with the server filled in. Or add it by hand in .vscode/mcp.json:
{
"servers": {
"revnu": { "type": "http", "url": "https://revnu.com/api/mcp" }
}
}Install in Cursor opens Cursor's install dialog with the server filled in. In any other host, add it to the host's MCP config:
{
"mcpServers": {
"revnu": { "url": "https://revnu.com/api/mcp" }
}
}A host that can't run OAuth can send a token instead: add the header Authorization: Bearer rvp_... with a token from Settings → Developers.
Reconnect a broken connector
On a first connection, "needs authentication" is normal. Every host shows it until you sign in. Sign in from the app (in Claude Code, /mcp then Authenticate) and it goes away.
After that, a connector that says it needs authentication, or answers invalid_token, has lost its token. That happens when:
The token was revoked in Settings → Developers
The app went 90 days without using it
Sign in again from the app. Nothing about your account changes; the new token gets the permissions you tick. Each connection gets its own token, and connecting again doesn't revoke the old one, so revoke tokens you no longer use in Settings → Developers.
Claude Code: run
/mcp, pick revnu and choose Authenticate.Cursor: open Cursor Settings and find revnu in the MCP server list. Click its login button, or turn it off and on again, and sign in in the browser that opens. If nothing happens, remove the server and add it again with the JSON in Cursor and other hosts.
Claude, ChatGPT and VS Code: reconnect the Revnu connector, or remove it and add it again.
If sign-in says the account already holds 20 API tokens, revoke one in Settings → Developers, then connect again.
If you get an error after approving in the browser
The sign-in code expired or was used. The code your app collects after you approve works once and lasts 10 minutes. Start the connection again from the app, not by refreshing the browser tab.
The host's redirect address isn't on Revnu's list. For those hosts, use the token setup: mint a token in Settings → Developers and send it as
Authorization: Bearer rvp_...(see Cursor and other hosts), or run the local server.
If sign-in keeps looping
If the browser returns you to the sign-in page, or connects the wrong Revnu account:
Open revnu.com in the same browser and sign in there first, with the email of the account you want to connect.
If you are signed in as someone else, sign out and sign in with the right email.
Start the connection again from your app.
One Revnu login holds one business, so connecting while signed in to another business's account connects that account. The sign-in page shows which website the account is for. To connect a different business, press Use Another Account there.
Local server
Add to claude_desktop_config.json or Cursor's MCP settings:
{
"mcpServers": {
"revnu": {
"command": "npx",
"args": ["-y", "@revnu/cli", "mcp"],
"env": { "REVNU_API_TOKEN": "rvp_..." }
}
}
}claude mcp add --scope user revnu -e REVNU_API_TOKEN=rvp_... -- npx -y @revnu/cli mcpDocs MCP (no login)
A second server, at https://revnu.com/api/docs-mcp, serves these docs to coding agents. It needs no sign-in or token and has no access to any Revnu account. It has three read-only tools: search_docs finds pages by topic or API route, read_page returns a page as markdown, and list_pages lists every page by section.
{
"mcpServers": {
"revnu-docs": { "type": "http", "url": "https://revnu.com/api/docs-mcp" }
}
}In Claude Code:
claude mcp add --transport http --scope user revnu-docs https://revnu.com/api/docs-mcpThe same pages are plain markdown at https://revnu.com/docs/<page>.md, indexed at revnu.com/docs/llms.txt.
Tools
Start with ask_revnu. It appears when the connection has the Agent: Message permission (agent:message). It asks Revnu to do work (find and research leads, draft outreach, write content, change ads, report results) and waits up to 60 seconds by default, 200 at most. Hosts that support progress updates show that Revnu is still working. If the wait ends first, it returns queued or running with a requestId: check it with agent_message_status. Long research can continue as a background task after Revnu replies; the result lists it in backgroundTasks and done stays false until Revnu has reported the finished list. agent_message_status with waitSeconds waits for that.
ask_revnu protects work in progress. While an earlier request from the same connection is unfinished, it keeps that work running: the new message is not sent, and the call returns the earlier request's progress with notSent. Pass queue: true to hand over another job that starts once the current one is done, or interrupt: true to stop the running work and start the new one. Pass a clientRequestId so a retried call never sends twice. Anything Revnu wants approved lands in your review queue.
The rest read or change your account directly: whoami, review_list, review_search, review_get, review_answer, review_send, review_request_changes, review_snooze, review_dismiss, agent_message_status, agent_thread, agent_status, results_get, workflows_list, workflow_runs, workflow_create, workflow_update, workflow_pause, workflow_resume, workflow_run, workflow_delete, leads_list, lead_get, lead_update, lead_note_add, lead_note_edit, lead_note_delete, lead_take_over, lead_hand_back, lead_people_remove, lead_delete, linkedin_person, customer_sync, blocklist_list, blocklist_add, blocklist_remove.
While an account is still in setup it also sees setup_status, setup_website, setup_confirm, setup_checkout and setup_finish, and the other tools answer setup_pending until the trial starts. Your assistant sees the tools its token's scopes allow. Connect a set-up account with only Review: Read ticked and it sees whoami, review_list, review_search and review_get: a read-only view, where cards in the chat carry a link to open them in Revnu in place of action buttons, and write calls need the matching permission.
To check whether work for particular people has already been handled, call
review_search with their names in queries. It searches open and historical
review titles and prompts in one call, returning compact statuses and review
links. hasMore flags omitted matches. The send status tells you how far a
card got: sent_recorded means its resolution records a send, queued means
approved for delivery, and unconfirmed means check the evidence with
review_get. A card marked done is not proof of delivery on its own. The search
covers review titles and prompts, so other activity can exist when nothing
matches. Use review_get when you need the full draft or evidence.
Which tools send, publish or spend
Writes through an assistant are real writes. These are the ones with effects outside Revnu:
| Tool | Card | What happens |
|---|---|---|
review_send |
Email draft or reply | Sends the email. |
review_answer with approve |
Blog draft | Publishes the post. |
review_answer with approve |
Blog edit | Applies the edit to the live post. |
review_answer with approve |
Reddit comment | Posts the comment. |
review_answer with approve |
Ad launch | Turns the campaigns on, so spend starts. |
review_answer with approve |
Ad budget | Raises the monthly ad budget limit. |
review_answer with approve |
Outbound setup | Approves the sending domains and inboxes Revnu proposed. |
review_answer with approve |
Sequence | Approves the sequence. Revnu starts contacting the leads on it within a few minutes. |
ask_revnu |
none | Revnu does the work you ask for, under your approval settings. |
workflow_run |
none | Starts a workflow run now. |
blocklist_remove |
none | Lets Revnu contact that company or person again. |
lead_hand_back |
none | Lets Revnu contact a company your team had taken over again. |
lead_take_over |
none | Stops Revnu contacting the company and cancels its queued emails. |
workflow_delete |
none | Deletes the workflow. It can't be undone. |
review_answer with approve |
LinkedIn invite or message, or gift | Approve these on the dashboard's Review page. |
LinkedIn invite and message cards and gift cards are approved on the dashboard's Review page. In the chat they carry a note pointing there in place of an Approve button. review_dismiss, review_snooze and review_request_changes never send anything.
To give an assistant a look but no say, connect with only the read permissions ticked: Review: Read, Results: Read and Leads: Read. It reads everything those permissions cover and leaves approving, sending and starting work to you.
Frequently Asked Questions
Does Revnu have an MCP server?
Yes, at https://revnu.com/api/mcp. It speaks Streamable HTTP with OAuth and works in Claude, ChatGPT, Cursor, VS Code, Claude Code and other MCP hosts. A local version runs with npx -y @revnu/cli mcp.
Is there an MCP server for the Revnu docs?
Yes, at https://revnu.com/api/docs-mcp. It needs no sign-in and only reads the public docs, so a coding agent can search and read them while you build on the API.
Why does my connector say needs authentication the first time?
Every new connection starts that way, before you sign in. Sign in from the app, for example /mcp then Authenticate in Claude Code, and it connects.
Why can't my assistant use ask_revnu?
It needs the Agent: Message permission and an account whose free trial or paid plan has started. Reconnect and tick Agent: Message, or finish setup with the setup_* tools first.
Why is there no Approve button on a LinkedIn card in Claude?
LinkedIn invites and messages are approved in Review at revnu.com/dashboard/review, so their cards in the chat point there.
What is the Claude Code command for Revnu?
claude mcp add --transport http --scope user revnu https://revnu.com/api/mcp, then /mcp inside Claude Code to sign in.
Does the assistant see my whole account?
Only what the token's scopes allow. A token with review:read alone lets it list and read cards and nothing else. With the remote connector, the scopes are the boxes you tick when you connect. All seven scopes, and which of them can cause a send, publish or spend, are listed in Authentication and Scopes.
How do I disconnect an app?
Revoke its token in Settings → Developers; the app's next call fails. Each connection has its own token, so connecting the same app again adds a new token rather than replacing the old one.
Can I sign up for Revnu through MCP?
Yes. Connecting creates the account if you don't have one, and the setup_* tools take your assistant through the website, the research review and checkout. You enter any card details on Stripe's page yourself.
Can I run the local server against a staging API?
Yes. Add REVNU_API_BASE to the env block.