Skip to Content
Browse the Docs▾

MCP Server Setup

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 revnu.com/mcp, 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, 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, Request Changes, Snooze and Dismiss buttons, right in the chat.

review_list gives your assistant compact titles, statuses and available actions. The app receives the full cards separately, so showing your queue does not require 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? Until your free trial or paid plan starts, only the setup_* tools work. Every other tool, ask_revnu included, answers setup_pending. Finish setup first: tell your assistant "Set me up with revnu.com".

Remote connector for Claude, ChatGPT and Cursor

The server URL is:

https://revnu.com/api/mcp

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:

  • The token was revoked in Settings → Developers

  • The app went 90 days without using it

  • The app was connected again, which replaces the old token

Sign in again from the app. Nothing about your account changes; the new token gets the permissions you tick.

  • 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 app's redirect address is refused. Some hosts register a return address Revnu won't accept. Use the token setup instead: 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 needs the Agent: Message permission (agent:message); without it the tool doesn't appear. 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 does not send a new message, because a new message would stop the running work. It returns the earlier request's progress with notSent instead. 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, linkedin_person, 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 only 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, nothing else. It can't approve anything: if a review card in the chat still shows a button, pressing it fails, because Revnu refuses write calls from a token without the 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. A card marked done does not prove a message was delivered. sent_recorded means its resolution records a send; queued means approved for delivery; unconfirmed needs further evidence. No match only means no matching review title or prompt, not no activity. 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.
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.
workflow_delete none Deletes the workflow. It can't be undone.
review_answer with approve LinkedIn invite or message, or gift Refused. Approve these on the Review page in the dashboard.

LinkedIn invite and message cards and gift cards can't be approved through the API or MCP. Gift cards in the chat show no Approve button. LinkedIn cards may still show one, but pressing it fails: open Review in the dashboard instead. 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 can't approve, send or start work: Revnu refuses its write calls.

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?

Either the connection didn't get the Agent: Message permission, or the account hasn't started its trial yet. Reconnect and tick Agent: Message, or finish setup with the setup_* tools first.

Why does Approve fail on a LinkedIn card in Claude?

LinkedIn invites and messages are approved in the dashboard. The card in the chat may show an Approve button anyway; open Review at revnu.com/dashboard/review to approve it.

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. Connecting the same app again replaces its old token.

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.