Introduction
Nordva Launch is one REST API and one MCP server for the things a small product needs around its users, from before launch to after people pay.
| Primitive | What it does |
|---|---|
| Changelog | Markdown release notes, scheduling, a hosted public page, email subscribers and an embeddable widget. |
| Waitlist | Signups with referral codes, a hosted page and widgets, invites, CSV import and export, and where each signup came from. |
| Feedback | Free-text feedback, classified automatically, routed to email, Slack, Linear or GitHub by category, answered from the inbox, and a public board where users vote on ideas. |
| Notifications | In-app notifications for a bell: send to one user, a group picked from your contacts, or everyone, now or scheduled, post changelog entries to it, read and mark read from the browser for a user your server signed. Every plan, with a monthly limit per project. |
| Revenue | Your own Stripe account or Lemon Squeezy store, read only: MRR, new and churned subscriptions, revenue over time, and which source each paying customer came from. Every plan (Free reads 30 days). |
| Contacts | One record per person across waitlist, subscribers, feedback and paying customers. Not a CRM. |
| Attribution | Which signup sources produce paying customers, with no tracking script. By referring site on every plan; campaigns on Builder; ad spend and return from Indie. |
Everything is behind the same API key, and every primitive is also available as tools in the MCP server, so Claude Code, Cursor or VS Code can publish a changelog entry, look up a customer or report your MRR from inside a session.
How it fits together
Section titled “How it fits together”- Two kinds of key. A secret key (
nv_live_…) for your server, and a publishable key (nv_pub_live_…) that is safe in a browser and can only write to the public endpoints: waitlist signup, feedback, changelog subscribe, and reading a signed-in user’s notifications (with theuser_hashyour server computes). See Authentication. - One response shape. Every response is
{ data, error, meta }. Errors carry a stablecodeand aremediationtelling you what to do. See Error codes. - Safe retries.
POSTandPATCHaccept anIdempotency-Key. See Idempotency. - Visitors only where you choose. Attribution and insights count what passes through Launch’s own forms and API, with no cookie. Web analytics is an optional one-line script with a tracking mode per site, from cookieless counting to a first-party visitor id where your visitors allow it; the Cookie Policy lists every cookie per mode. There are no heatmaps, recordings or click paths.
Where to start
Section titled “Where to start” Quickstart Get an API key and publish your first changelog entry in a few minutes.
MCP setup Connect Claude Code, Cursor, VS Code or Claude Desktop.
Add a waitlist A signup form in Next.js, or a zero-code widget, with referrals and sources.
Connect Stripe Read-only. See revenue, who became a customer, and from where.
Connect Lemon Squeezy The same numbers for a Lemon Squeezy store. Launch only reads.
Endpoints Every endpoint, generated from the API's own OpenAPI document.
Error codes Stable codes, what they mean and what to do about them.