Skip to Content
Browse the Docs▾

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 mcp from the @revnu/cli package, 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 | sh

It 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/mcp

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

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:

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:

  1. Open revnu.com in the same browser and sign in there first, with the email of the account you want to connect.

  2. If you are signed in as someone else, sign out and sign in with the right email.

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

Docs 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-mcp

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

Last updated

Agents: this page is also markdown at /docs/mcp.md, answers Accept: text/markdown, and is listed in /docs/llms.txt.