Skip to Content
Browse the Docs▾

Changelog

What changed in the Revnu API, CLI, MCP server and these docs, newest first.

Most changes are additive. An entry that changes how an existing route or tool behaves says so.

2026-11-05

  • Create leads and save contacts. New POST /leads saves a company as a lead, or returns the one you already have for that domain, and POST /leads/{id}/contacts adds or updates people on it, with a name alone if that's all you know. MCP: lead_create and lead_contacts_save.

  • Search finds run-together names. q on GET /leads matches a company name or domain typed without its spaces or dashes, so microagi finds Micro AGI.

2026-11-03

2026-10-30

  • One length limit for agent messages. POST /agent/messages takes text of up to 4,000 characters in any language (UTF-16 code units, so some emoji count as two), counted after trimming, so Chinese, Japanese and Korean messages now get the full length too. A longer one gets 400. Changed behaviour: a too-long message is now always 400, where it used to be 409 with error: "rejected".

  • Follow-ups report their replies. A message the agent picked up inside a turn that was already running now reads replied on GET /agent/messages/{requestId}, with that turn's replies.

  • Remove a deal. PATCH /leads/{id} takes stage: null to remove a lead's deal. GET /leads/{id} adds handling when your team has taken the lead over.

  • Where a note came from. Notes carry source, such as granola:<meeting id> when your Revnu agent filed a call on the lead. null for other notes.

2026-10-28

  • Send conversions from PostHog. POST /api/measurement/posthog takes PostHog's HTTP Webhook destination body as is, with your event key, and records each conversion like the Event API does. Both now add not_matchable_reason when an event carries nothing an ad platform can match.

  • Smaller default MCP pages. The leads_list and blocklist_list MCP tools return 10 rows when limit is left out, down from 50. Pass limit for more. The REST defaults are unchanged. CLI 1.8.2.

  • Deals on leads. PATCH /leads/{id} sets a lead's owner and its deal: stage (interested, meeting, proposal, won, lost), dealValue, currency, closeDate and lostReason. It also fills your own lead columns with customFields. The lead_update MCP tool takes the same fields.

  • Lead notes. New POST /leads/{id}/notes and lead_note_add MCP tool. GET /leads/{id} returns the newest 10 timeline entries in notes, the deal, and interactions: last send and reply, days since each, waitingOn and connectionStrength.

  • Search and sort leads. GET /leads takes q (company, domain or primary contact), stage, and sort (newest, last_interaction, recently_updated). Each lead carries deal, lastInteractionAt, lastReplyAt and waitingOn. All additive.

2026-10-24

  • Proposed workflows and Ask Me First. When the account's Proposed Workflows setting is Ask Me First, a workflow the agent proposed doesn't run until someone approves it. POST /workflows/{id}/runs then answers 409 with error: "not_approved", and resume approves it. Under Just Do It, the default, proposed workflows run on their schedule as before. GET /workflows documents status: "proposed", and the workflows_list MCP tool adds a statusExplanation.

2026-10-23

  • Connecting an app again adds a token. A new OAuth sign-in from an MCP host or revnu login mints its own token, labelled with the app's name plus a number if that label is taken. Changed behaviour: tokens from earlier connections of the same app stay live. Revoke tokens you no longer use in Settings → Developers; an account holds up to 20.

2026-10-21

  • LinkedIn state on leads. Each lead from GET /leads and GET /leads/{id} carries linkedin: its LinkedIn sequence status, invite, accept, message, seen and reply times, and the next step, or null outside a LinkedIn sequence. A GET /leads page holds at most 30 leads that are in a LinkedIn sequence.

  • Outbound webhooks. Revnu can POST a signed event to your URL when a LinkedIn invite is sent (linkedin.invite_sent), accepted (linkedin.invite_accepted) or replied to (linkedin.replied). Set them up in Settings → Developers. See Outbound Webhooks.

2026-10-20

  • Agent status counts every turn. running and lastTurnAt on GET /agent/status include wake and workflow turns, and a turn counts as running while it has shown activity in the last 20 minutes.

  • Background research in message status. GET /agent/messages/{requestId} adds backgroundTasks (each research task the message started, with its state) and done, which is true only once the turn has ended and every task's result has been reported. The report joins replies. waitSeconds on POST /agent/messages now waits for done. The agent_message_status MCP tool takes waitSeconds to wait here too.

2026-10-19

  • Search review history. GET /review/search checks up to 10 names or topics in one call across every card status, including resolved cards, without returning full drafts. Also the review_search MCP tool.

  • Message status stays running while the turn works. On GET /agent/messages/{requestId}, a started turn stays running while it has shown activity in the last 20 minutes, for up to 2 hours. Changed behaviour: this replaces the earlier 30-minute limit on started turns.

2026-10-18

  • Sync existing customers. POST /customers records a signup, trial, customer or former customer from your app or CRM and keeps them out of cold outreach. Needs leads:write. Removing such an entry with DELETE /blocklist/{id} answers 409 with error: "customer_relationship". Also revnu customers sync, revnu customers import for up to 5,000 records, and the customer_sync MCP tool. CLI 1.7.0.

  • People a run found on an existing company. A workflow run that adds people to a company's research list without saving them as contacts now lists that company under GET /leads?workflowRunId=, with those people in runPeople. Runs count them in found.people.

  • Roles and already-known people in runPeople. Each person carries role (economic for the buyer, champion, technical, user or null). A run that returns people a company already had now lists that company too, with those people marked alreadyKnown: true, so the run's list matches what it reported.

2026-10-17

  • Longer workflow steps, and a size check. On POST /workflows and PATCH /workflows/{id}, a step's title and each details line take up to 1,000 characters, up from 400. Changed behaviour: a workflow whose steps don't fit in one run, about 6,500 characters in total (fewer with emoji or non-Latin text), now gets a 400 that says how far over it is, so you can trim it before saving.

2026-10-15

  • Docs. New pages: Developers, the start of the developer docs; API, CLI, MCP or Chat, on which to use when; and Inbound Webhooks, on sending Revnu events from your own systems. Authentication lists the smallest scope sets for read-only and status tokens, and MCP Server Setup covers reconnecting a broken connector and which tools send, publish or spend.

  • Claude Code. The documented command is now claude mcp add --transport http --scope user revnu https://revnu.com/api/mcp, so Revnu is available in every project rather than only the directory it was added in.

2026-10-14

  • Sign up from a terminal. npx @revnu/cli setup signs a person up (or in) in the browser and runs the same setup as the setup_* tools, so a coding agent can set someone up without restarting to load the MCP server. --json gives agents one object with stage, next and command. revnu login signs in on its own. See Install the CLI.

2026-10-10

  • Run a workflow now. POST /workflows/{id}/runs starts a workflow's next run within about a minute and returns its id, without changing the schedule. Runs gain a queued status. Also revnu workflows run <id> and the workflow_run MCP tool.

2026-10-06

2026-10-02

  • Workflow runs. Each run reports found: { leads, contacts }, every lead and contact carries the workflowRunId that found it, and GET /leads?workflowRunId= lists one run's leads with runContactIds. Also revnu leads list --workflow-run <id>.

2026-10-01

  • LinkedIn. GET /linkedin/person reads one person's LinkedIn relationship with each connected account: connected or not, any pending invite and when it was sent, and the conversation. Read-only. Also revnu linkedin person and the linkedin_person MCP tool.

2026-09-29

  • OpenAPI. /openapi.json describes every route with its scope, parameters and error statuses.

  • Docs. New pages: How Revnu Works, Errors and this changelog. Every page now shows when it was last updated.

2026-09-28

  • Agent messages. queue: true on POST /agent/messages hands the agent another job without stopping the one it is running.

  • Block list. POST /blocklist accepts LinkedIn profile links as well as domains and email addresses.

2026-09-25

  • Remote MCP server. Connect Claude, ChatGPT or Cursor to https://revnu.com/api/mcp with OAuth, no install. On hosts that support MCP Apps, the review queue opens as cards with buttons. See MCP Server Setup.

  • CLI. revnu and its local MCP server cover every public API route.

2026-09-24

  • Measurement. Docs for the Revnu Tag and the server-side Event API.

  • Content API. Canonical URLs follow your site's trailing-slash convention.

2026-09-22

2026-09-20

  • Docs. revnu.com/docs launched: every page as markdown, an llms.txt index and search.

2026-09-19

  • Public API. Personal tokens with scopes; the review queue, agent messages, results, workflows and leads over https://revnu.com/api/v1. GET /me verifies a token, and waitSeconds holds a message request open for the reply.

  • CLI. The @revnu/cli package with a local MCP server.

Frequently Asked Questions

Is the API versioned?

Yes, by path: everything lives under /api/v1. New fields and routes arrive without a version change, so ignore fields you do not recognise.

How do I hear about changes?

This page and /openapi.json change together. The docs index at /docs/llms.txt and the sitemap carry each page's last-updated date.