Skip to main content

Connect Cursor to Nordva Launch

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

Before you start

Create a secret key (it starts with nv_live_) under Dashboard → API keys. Publishable keys are meant for browsers and are refused by most tools.

Setup

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.

Notes for Cursor

  • 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.
  • If the connection fails with 401, the Authorization header is missing or malformed. If a tool answers INVALID_API_KEY or KEY_REVOKED, the header arrived but the key is wrong.

Tools you get

Changelog

publish_changelog_entryPublish or schedule a changelog entryAll plans
list_changelog_entriesList recent changelog entriesAll plans
archive_changelog_entryRemove a changelog entry from public viewAll plans

Waitlist

add_to_waitlistAdd an email to a waitlistAll plans
import_waitlistImport an existing list into the waitlistAll plans
get_waitlist_statsGet waitlist stats and top referrers (admin view)All plans
get_waitlist_leaderboardGet the public-safe waitlist leaderboardIndie and Builder
invite_from_waitlistInvite people from the waitlistIndie and Builder
export_waitlistExport waitlist to CSV or JSONIndie and Builder
get_waitlist_settingsGet current waitlist pause state and custom copyAll plans
update_waitlist_settingsPause/resume waitlist or set custom landing-page copyAll plans
get_waitlist_embed_snippetGet HTML snippet to embed the waitlist on the developer's siteAll plans

Feedback

submit_feedbackSubmit, classify, and route user feedbackIndie and Builder
list_feedbackList recent feedback submissionsAll plans
update_feedbackMark feedback reviewed or resolved, or fix its categoryAll plans
configure_feedback_routingConfigure a feedback routing destination (email/linear/github/slack)All plans

Notifications

send_notificationSend an in-app notification to one of your usersBuilder
get_unread_notificationsList unread notificationsBuilder
mark_notifications_readMark notifications as readBuilder

Revenue

get_stripe_connection_statusCheck whether Stripe is connected and syncingAll plans
get_revenue_summaryGet MRR, subscriptions, growth and churn from StripeIndie and Builder
get_revenue_seriesGet revenue over time from StripeIndie and Builder
list_recent_paymentsList recent payments and cancellations from StripeIndie and Builder

Contacts

list_contactsList people across waitlist, feedback, subscribers and StripeAll plans
get_contactGet one person across every primitiveAll plans
update_contactSet a contact's stage or noteAll plans

Attribution

get_attribution_reportSee which signup sources produce paying customersIndie and Builder

Project and domains

get_insightsGet a summary of the project over a periodAll plans
setup_checkVerify Nordva Launch auth and report planAll plans
get_projectRead current project name and slugAll plans
update_projectRename project or change its public URL slugAll plans
register_allowed_originAdd a CORS-allowed origin to the projectAll plans
list_allowed_originsList the project's CORS-allowed originsAll plans
register_custom_domainAdd a custom hostname for the project's widget (Builder only)Builder
list_custom_domainsList the project's custom hostnamesAll plans
get_custom_domain_statusForce-refresh a custom domain's verification statusAll plans