Skip to main content

MCP server for waitlists

Run a pre-launch waitlist without opening a dashboard. The agent can report how signups are going, send the next batch of invites, pause intake, and produce the HTML to embed the form while it is editing your landing page.

Get an API key → Waitlist API overview

Things to ask

  • How is the waitlist doing? Who are the top referrers?
  • Give me the embed snippet for the waitlist and put it in the hero section.
  • Invite the next 50 people on the waitlist.
  • Pause signups and change the headline to "We're full for now".
  • Export the waitlist as CSV.

One call, start to finish

You type: “Invite the next 50 people on the waitlist.” The agent calls invite_from_waitlist with:

{
  "count": 50
}

Returned to the agent: The number of people invited and a sample of their addresses. Each one is sent an invite email and marked invited; people who were already invited are skipped.

Tools and arguments

add_to_waitlist

Add an email to a waitlist

emailrequiredstringSubscriber's email address.
referrer_codeoptionalstringOptional 8-character referral code from another signup. Invalid codes are ignored.
metadataoptionalobjectOptional key-value metadata, e.g. { source: 'producthunt' }. ≤1KB serialized.

import_waitlist

Import an existing list into the waitlist

rowsrequiredarrayPeople to import, at most 1000 per call.
consent_confirmedrequiredliteraltrue only after the developer confirmed these people consented.

get_waitlist_stats

Read-only

Get waitlist stats and top referrers (admin view)

No arguments.

get_waitlist_leaderboard

Read-onlyIndie and Builder

Get the public-safe waitlist leaderboard

limitoptionalnumber, 0–50How many entries to return. 1–50. Default 10.

invite_from_waitlist

Confirms firstIndie and Builder

Invite people from the waitlist

countoptionalnumber, 0–500Next-in-queue count. Cap 500. Cannot be combined with specific_email.
specific_emailoptionalstringSpecific email to invite. Cannot be combined with count.

export_waitlist

Read-onlyIndie and Builder

Export waitlist to CSV or JSON

formatoptional"csv" | "json"Output format. Default csv.
include_flaggedoptionalbooleanInclude anti-abuse-flagged rows. Default false.

get_waitlist_settings

Read-only

Get current waitlist pause state and custom copy

No arguments.

update_waitlist_settings

Pause/resume waitlist or set custom landing-page copy

accepting_signupsoptionalbooleantrue to allow new signups, false to freeze intake. Hides the public form when false.
header_textoptionalstring, max 120Custom headline (up to 120 chars). null clears and reverts to the default.
body_textoptionalstring, max 500Custom supporting paragraph (up to 500 chars). null clears and reverts to the default.
welcome_urloptionalstring, max 2,048Absolute http(s) URL invited signups are sent to (invite email CTA + hosted welcome page). null clears.

get_waitlist_embed_snippet

Read-only

Get HTML snippet to embed the waitlist on the developer's site

slugrequiredstring, max 64The project slug, e.g. 'demo' or 'my-product'.
heightoptionalnumber, 200–2,000Initial iframe height in px before auto-resize. Default 480.
titleoptionalstring, max 120Accessible name for the iframe. Default 'Join the waitlist'.

Behaviour worth knowing

  • invite_from_waitlist sends real email. The server marks it destructive and its description tells the agent to confirm the count with you before calling.
  • get_waitlist_stats returns full email addresses of the top ten referrers; get_waitlist_leaderboard returns the top fifty with masked addresses.
  • export_waitlist returns a signed download URL that is valid for 15 minutes and covers up to 10,000 rows. Flagged and unsubscribed rows are left out unless asked for.
  • add_to_waitlist on an address that is already signed up returns the existing signup with already_registered set, not an error. Disposable email domains are refused.
  • get_waitlist_embed_snippet builds the iframe HTML locally and makes no API call.

Questions

Does the embed snippet work for browser signups straight away?
The iframe does, because it loads the hosted page. If you post to the API from your own form instead, the origin has to be registered first; the agent can do that with register_allowed_origin.
Which waitlist tools need a paid plan?
Invites, export and the leaderboard need Indie or higher. Adding signups, stats, settings and the embed snippet work on Free, up to 100 signups.
Can the agent delete a signup?
No. There is no delete tool. Hard deletion for GDPR requests goes through the tokenised link each person receives, which calls DELETE /v1/waitlist/signups/by-token/{token}.