Skip to main content

See which signup sources pay in Cursor

Signups are easy to count and customers are what matter. With attribution over MCP, the agent can tell you which source produced paying customers and then pull up what those customers asked for, in the same conversation.

Cursor reads MCP servers from a JSON file, either per user or per project. Remote servers take a url and optional headers.

Setup

You need a secret key (nv_live_…) from Dashboard → API keys.

01Add the server to mcp.json

~/.cursor/mcp.json (or .cursor/mcp.json in a project)

{
  "mcpServers": {
    "nordva": {
      "url": "https://mcp.nordva.dev",
      "headers": {
        "Authorization": "Bearer nv_live_..."
      }
    }
  }
}

Use the file in your home directory if the key should not live in the repository. A project-level .cursor/mcp.json containing a key belongs in .gitignore.

02Check the connection

Open Cursor Settings and find the MCP section. nordva should be listed with its tools and a green status. In Agent mode, ask it to run setup_check.

Then ask Cursor

  • Which waitlist source produced paying customers last month?
  • Was the Product Hunt launch worth it?
  • Who referred the most people who ended up paying?
  • Which campaign converts best, and what did those customers ask for?

For “Which source produced paying customers in the last 30 days?” Cursor calls get_attribution_report with:

{
  "group_by": "referrer",
  "period_days": 30
}

Returned: One row per source with signups, confirmed, invited, paying, ever paid and the signup-to-paying rate, plus current MRR and collected revenue per currency, and whether Stripe is connected.

Attribution tools and arguments

get_attribution_report

Read-onlyIndie and Builder

See which signup sources produce paying customers

group_byoptional"referrer" | "utm_source" | "utm_campaign" | "referral_code"
period_daysoptionalnumber, 1–3,650
limitoptionalnumber, 1–100

Behaviour worth knowing

  • It only covers people who signed up through a Launch waitlist form, page or widget. The tool description tells the agent to say so and not to present it as page analytics.
  • The agent is told not to rank sources by conversion rate when a source has only a handful of signups.
  • Without Stripe connected the funnel still works; paying is zero and the result explains why.
  • Grouping by referring site is on Indie. Grouping by UTM source, UTM campaign and referral code is on Builder.
  • Cursor's agent decides when to call a tool from the tool descriptions; naming the tool in the prompt ("use publish_changelog_entry") removes the guesswork.
  • Tools that send email or remove content are flagged destructive by the server, and their descriptions tell the agent to confirm with you first.