UseWait
Create and manage product waitlists from your AI agent.
What it can do
- Get Started: Read this first. Explains how to set up a complete UseWait waitlist: recommended order of tool calls, the page code format, slugs, assets, and referrals.
- Get Page Format: Returns the exact contract for a waitlist page's reactCode so you can generate custom page code safely. Read this before writing or replacing reactCode.
- Get Page Example: Returns a complete working GeneratedWaitlist function that satisfies the page contract, Turnstile and honeypot included. Start from this and restyle it rather than writing page code
What data it sees
Do you need an account
No: the server works without sign-in
Create and manage product waitlists from your AI agent. Generate a custom page, connect a custom domain, write confirmation emails, read signups, and send broadcasts. One-time $12 per waitlist, free to start. OAuth sign-in, no API key needed.
How to connect
How to connect UseWait to Claude
The server address to paste into Claude settings:
https://waitlist--usewait.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect UseWait to ChatGPT
The server address to paste into ChatGPT settings:
https://waitlist--usewait.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect UseWait to Cursor
The server address to paste into Cursor settings:
https://waitlist--usewait.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (29)
Raw names from tools/list. Only developers need these.
| get_started | Read this first. Explains how to set up a complete UseWait waitlist: recommended order of tool calls, the page code format, slugs, assets, and referrals. |
| get_page_format | Returns the exact contract for a waitlist page's reactCode so you can generate custom page code safely. Read this before writing or replacing reactCode. |
| get_page_example | Returns a complete working GeneratedWaitlist function that satisfies the page contract, Turnstile and honeypot included. Start from this and restyle it rather than writing page code from scratch. This is the same code a new waitlist ships with. |
| get_account | Get the authenticated account's plan, capabilities, and waitlist count. |
| list_waitlists | List all waitlists owned by this account. |
| create_waitlist | Create a new waitlist. It is live at https://usewait.com/w/<slug> immediately (default template unless reactCode is provided). |
| get_waitlist | Get one waitlist by id or slug, including its current reactCode. |
| update_waitlist | Update a waitlist: rename, change slug, set SEO fields, referral settings, or replace the page's reactCode. |
| delete_waitlist | Permanently delete a waitlist and all of its entries. Irreversible. |
| list_entries | List signups for a waitlist (newest first). |
| upgrade_waitlist | Get a Stripe checkout link to license a waitlist ($12 one-time) or to add 5000 more signups ($5). Relay the returned URL to the user; the purchase applies automatically once they pay. Licensing unlocks custom domains, custom Turnstile, own database, referrals, branding removal, and 30 more AI generations. |
| get_domain_status | Get a waitlist's custom-domain state plus the DNS record (A record and server IP) the domain owner must create. Pass checkDomain to pre-verify a candidate domain's DNS without configuring anything. |
| set_custom_domain | Connect a custom domain to a waitlist (requires a licensed waitlist). Runs DNS verification and configures serving + SSL. If DNS is not pointing yet, the result includes the exact A record (type, recordName relative to the zone, value): if you have a DNS provider connected, create that record with recordName and value, then call this tool again; otherwise relay it to the user and wait for propagation. SSL is issued automatically after a successful setup. |
| remove_custom_domain | Disconnect a waitlist's custom domain. The page stays live at its usewait.com/w/<slug> URL. |
| set_turnstile_keys | Set custom Cloudflare Turnstile keys for a waitlist (requires a plan with custom domains; custom keys are needed when serving from a custom domain). Omit a field to leave it unchanged; pass null to clear one. Use get_turnstile_status to inspect state; secrets are never returned. |
| get_turnstile_status | Whether a waitlist has custom Turnstile keys configured (secrets are never returned). |
| clear_turnstile_keys | Remove a waitlist's custom Turnstile keys; UseWait's own keys are used again on the hosted URL. |
| setup_external_database | Connect the user's own Postgres or MySQL database (BYOD; requires a plan with database access). With testOnly it just verifies connectivity. Otherwise it creates the entries table (waitlist_<slug>) in their database and persists the connection so new signups are stored there. get_database_status inspects current state. |
| get_database_status | Which database a waitlist stores signups in (internal or the user's own), and the BYOD table name if external. |
| detach_external_database | Disconnect a waitlist's external database; future signups go to the internal database again. |
| get_email_template_format | Returns the contract for waitlist confirmation email templates: available {{variables}}, HTML rules, waitlist linking, and how to author them with react-email. |
| list_email_templates | List the account's email templates (confirmation emails sent to new signups) with their linked waitlist ids. |
| get_email_template | Get one email template by id, including its full HTML. |
| create_email_template | Create a confirmation email template. Call get_email_template_format first for the variable contract. Pass waitlistIds to link it to waitlists so new signups receive it. |
| update_email_template | Update an email template's name, subject, html, or linked waitlists (waitlistIds replaces the full assignment set when provided). |
| delete_email_template | Permanently delete an email template. Irreversible. |
| send_campaign | Send a one-time broadcast email to every subscriber of a waitlist, from the owner's connected email provider. Needs a LICENSED waitlist and a provider connected in the dashboard settings (the owner pastes their Resend key there; you cannot set it). subject and html support {{name}}, {{email}}, {{waitlistName}}, {{description}} and {{unsubscribeUrl}}; an unsubscribe footer and List-Unsubscribe header are added automatically. Returns a campaignId to poll with get_campaign. Guardrails: only one broadcast sends per waitlist at a time, and each subscriber is emailed at most once per campaign, so it is safe to call once and poll rather than retrying. Do NOT call this repeatedly to retry; a retry is rejected while one is in flight. |
| get_campaign | Check the progress of a broadcast started with send_campaign. Returns status (sending, sent, failed), and how many were sent and failed out of the total. |
| upload_asset | Upload an image (logo, background, og-image) to the UseWait CDN. Returns a public URL to use in ogImage or inside page code. Max 5MB. og:image must be a PNG, JPG, WEBP or GIF at 1200x630. SVG is rejected because no social platform renders it as a preview card. Upload the raster file through the assets endpoint and use the URL it returns. If you cannot produce a raster image yourself, tell the user they can make one at https://ogimagen.com and paste the resulting URL back to you. Ask them for it rather than leaving the waitlist without a preview image. |