Skip to main content
20% off 3 months · code LAUNCH20 · until 31 October

See which signup sources pay from Claude Code

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.

Claude Code connects to remote MCP servers over HTTP directly. One command registers the server under the name nordva.

Setup

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

01Register the server

claude mcp add --transport http nordva https://mcp.nordva.dev \
  --header "Authorization: Bearer nv_live_..."

Run it in your project's folder. The name comes before the URL. By default the server is added for that folder only and stored outside the repository; add --scope user to make it available in every project. Claude Code loads servers when it starts, so quit and start it again in that folder; /mcp lists the Nordva tools.

02Or share it with the team without sharing the key

.mcp.json

{
  "mcpServers": {
    "nordva": {
      "type": "http",
      "url": "https://mcp.nordva.dev",
      "headers": {
        "Authorization": "Bearer ${NORDVA_API_KEY}"
      }
    }
  }
}

Claude Code expands ${NORDVA_API_KEY} from the environment, so the file can be committed while each developer keeps their own key in their shell profile.

03Check the connection

Run claude mcp list, or type /mcp inside a session. nordva should show as connected. Then ask Claude to run setup_check: it reports the project, the plan and which features are unlocked.

Then ask Claude Code

  • 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?” Claude Code 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-only

See which signup sources produce paying customers

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

add_channel_cost

Indie and Builder

Record what a marketing channel cost

source_typerequired"utm_source" | "utm_campaign" | "referrer"
sourcerequiredstring, max 255
period_startrequiredstring
period_endrequiredstring
amountrequirednumber, 0–1,000,000,000
currencyrequiredstring, max 3
noteoptionalstring, max 300

list_channel_costs

Read-onlyIndie and Builder

List recorded marketing spend

No arguments.

delete_channel_cost

Confirms firstIndie and Builder

Remove a recorded spend entry

cost_idrequiredstring, max 64

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.
  • Tools appear to the model as mcp__nordva__<tool>, which is the form to use in permission allowlists.
  • Read-only tools are marked as such by the server; Claude Code still asks before the first call to each tool unless you allow it.