waitlister-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,206 @@
1
+ # Waitlister MCP Server
2
+
3
+ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that connects AI assistants like Claude, Cursor, and Windsurf to the [Waitlister](https://waitlister.me) API. Manage your waitlist subscribers through natural language.
4
+
5
+ ## What Can You Do With This?
6
+
7
+ Once connected, you can ask your AI assistant things like:
8
+
9
+ - "Add test@gmail.com to my waitlist"
10
+ - "How many subscribers do I have?"
11
+ - "Look up the subscriber john@acme.com"
12
+ - "Update John's points to 500"
13
+ - "Show me the top 10 subscribers by referral count"
14
+
15
+ ## Tools
16
+
17
+ | Tool | Description |
18
+ | --- | --- |
19
+ | `add_subscriber` | Add a new subscriber to your waitlist |
20
+ | `list_subscribers` | List subscribers with pagination and sorting |
21
+ | `get_subscriber` | Get details for a specific subscriber by ID or email |
22
+ | `update_subscriber` | Update a subscriber's name, phone, points, or metadata |
23
+ | `log_view` | Record a waitlist page view for analytics |
24
+
25
+ ## Prerequisites
26
+
27
+ - Node.js 18+
28
+ - A [Waitlister](https://waitlister.me) account on the **Growth** or **Business** plan (API access required)
29
+ - Your **API key** and **waitlist key** from the Waitlister dashboard
30
+
31
+ ### Getting Your Keys
32
+
33
+ 1. Log in to [Waitlister](https://waitlister.me)
34
+ 2. Go to **Integrations** → **API access** → **Generate API key**
35
+ 3. Your **waitlist key** is found in your waitlist settings
36
+
37
+ ## Installation
38
+
39
+ ### Using npx (recommended)
40
+
41
+ No installation needed — just configure your MCP client:
42
+
43
+ ```json
44
+ {
45
+ "mcpServers": {
46
+ "waitlister": {
47
+ "command": "npx",
48
+ "args": ["-y", "waitlister-mcp"],
49
+ "env": {
50
+ "WAITLISTER_API_KEY": "your-api-key",
51
+ "WAITLISTER_WAITLIST_KEY": "your-waitlist-key"
52
+ }
53
+ }
54
+ }
55
+ }
56
+ ```
57
+
58
+ ### Global install
59
+
60
+ ```bash
61
+ npm install -g waitlister-mcp
62
+ ```
63
+
64
+ Then configure:
65
+
66
+ ```json
67
+ {
68
+ "mcpServers": {
69
+ "waitlister": {
70
+ "command": "waitlister-mcp",
71
+ "env": {
72
+ "WAITLISTER_API_KEY": "your-api-key",
73
+ "WAITLISTER_WAITLIST_KEY": "your-waitlist-key"
74
+ }
75
+ }
76
+ }
77
+ }
78
+ ```
79
+
80
+ ## Setup by Client
81
+
82
+ ### Claude Desktop
83
+
84
+ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
85
+
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "waitlister": {
90
+ "command": "npx",
91
+ "args": ["-y", "waitlister-mcp"],
92
+ "env": {
93
+ "WAITLISTER_API_KEY": "your-api-key",
94
+ "WAITLISTER_WAITLIST_KEY": "your-waitlist-key"
95
+ }
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ ### Cursor
102
+
103
+ Go to **Settings** → **MCP** → **Add new MCP server** and use the same configuration above.
104
+
105
+ ### Claude Code
106
+
107
+ ```bash
108
+ claude mcp add waitlister -- npx -y waitlister-mcp
109
+ ```
110
+
111
+ Then set the environment variables `WAITLISTER_API_KEY` and `WAITLISTER_WAITLIST_KEY`.
112
+
113
+ ## Environment Variables
114
+
115
+ | Variable | Required | Description |
116
+ | --- | --- | --- |
117
+ | `WAITLISTER_API_KEY` | Yes | Your Waitlister API key |
118
+ | `WAITLISTER_WAITLIST_KEY` | Yes | Your unique waitlist key |
119
+
120
+ ## Tool Reference
121
+
122
+ ### add_subscriber
123
+
124
+ Add a new subscriber to your waitlist.
125
+
126
+ **Parameters:**
127
+
128
+ - `email` (string, required) — Subscriber's email address
129
+ - `name` (string, optional) — Subscriber's name
130
+ - `phone` (string, optional) — Subscriber's phone number
131
+ - `referred_by` (string, optional) — Referral code of the person who referred them
132
+ - `metadata` (object, optional) — Custom fields (e.g. `{ "company": "Acme" }`)
133
+
134
+ ### list_subscribers
135
+
136
+ Retrieve a paginated list of subscribers.
137
+
138
+ **Parameters:**
139
+
140
+ - `limit` (number, default 20) — Results per page (1–100)
141
+ - `page` (number, default 1) — Page number
142
+ - `sort_by` (string, default "date") — Sort field: `position`, `points`, `date`, `referral_count`, `email`
143
+ - `sort_dir` (string, default "desc") — Sort direction: `asc` or `desc`
144
+
145
+ ### get_subscriber
146
+
147
+ Get detailed info for a specific subscriber.
148
+
149
+ **Parameters:**
150
+
151
+ - `id_or_email` (string, required) — Subscriber's ID or email address
152
+
153
+ ### update_subscriber
154
+
155
+ Update a subscriber's information.
156
+
157
+ **Parameters:**
158
+
159
+ - `id_or_email` (string, required) — Subscriber's ID or email address
160
+ - `name` (string, optional) — Updated name
161
+ - `phone` (string, optional) — Updated phone number
162
+ - `points` (number, optional) — Updated points value
163
+ - `metadata` (object, optional) — Custom fields to add/update (merged with existing)
164
+
165
+ ### log_view
166
+
167
+ Record a waitlist page view.
168
+
169
+ **Parameters:**
170
+
171
+ - `visitor_id` (string, optional) — Unique visitor identifier (prevents duplicate counts)
172
+ - `referring_domain` (string, optional) — Referring domain
173
+
174
+ ## Rate Limits
175
+
176
+ Rate limits depend on your Waitlister plan:
177
+
178
+ | Plan | Subscriber Endpoints | Log View Endpoint |
179
+ | --- | --- | --- |
180
+ | Growth | 60 requests/min | 200 requests/min |
181
+ | Business | 120 requests/min | 400 requests/min |
182
+
183
+ ## Development
184
+
185
+ ```bash
186
+ git clone https://github.com/waitlister/waitlister-mcp.git
187
+ cd waitlister-mcp
188
+ npm install
189
+ npm run build
190
+ ```
191
+
192
+ Test with the MCP Inspector:
193
+
194
+ ```bash
195
+ WAITLISTER_API_KEY=your-key WAITLISTER_WAITLIST_KEY=your-key npm run inspect
196
+ ```
197
+
198
+ ## Links
199
+
200
+ - [Waitlister](https://waitlister.me) — Create waitlists for your product launches
201
+ - [API Documentation](https://waitlister.me/docs/api)
202
+ - [MCP Protocol](https://modelcontextprotocol.io/)
203
+
204
+ ## License
205
+
206
+ MIT
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/build/index.js ADDED
@@ -0,0 +1,187 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { z } from "zod";
5
+ // Configuration
6
+ const API_BASE = "https://waitlister.me/api/v1";
7
+ const API_KEY = process.env.WAITLISTER_API_KEY;
8
+ const WAITLIST_KEY = process.env.WAITLISTER_WAITLIST_KEY;
9
+ if (!API_KEY) {
10
+ console.error("Error: WAITLISTER_API_KEY environment variable is required.");
11
+ process.exit(1);
12
+ }
13
+ if (!WAITLIST_KEY) {
14
+ console.error("Error: WAITLISTER_WAITLIST_KEY environment variable is required.");
15
+ process.exit(1);
16
+ }
17
+ // Helper: make authenticated API requests
18
+ async function apiRequest(path, options = {}) {
19
+ const url = `${API_BASE}/waitlist/${WAITLIST_KEY}${path}`;
20
+ const response = await fetch(url, {
21
+ ...options,
22
+ headers: {
23
+ "Content-Type": "application/json",
24
+ "X-Api-Key": API_KEY,
25
+ ...options.headers,
26
+ },
27
+ });
28
+ const data = await response.json();
29
+ if (!response.ok) {
30
+ const errorMessage = typeof data === "object" && data !== null && "message" in data
31
+ ? data.message
32
+ : `API error: ${response.status} ${response.statusText}`;
33
+ throw new Error(errorMessage);
34
+ }
35
+ return data;
36
+ }
37
+ // Helper: format response for MCP
38
+ function textResponse(data) {
39
+ return {
40
+ content: [
41
+ {
42
+ type: "text",
43
+ text: JSON.stringify(data, null, 2),
44
+ },
45
+ ],
46
+ };
47
+ }
48
+ // Create server
49
+ const server = new McpServer({
50
+ name: "waitlister",
51
+ version: "1.0.0",
52
+ });
53
+ // ─── Tool: Add Subscriber ───────────────────────────────────────────────────
54
+ server.tool("add_subscriber", "Add a new subscriber to your Waitlister waitlist. Returns their position, referral code, and sign-up token.", {
55
+ email: z.string().email().describe("The subscriber's email address"),
56
+ name: z.string().optional().describe("The subscriber's name"),
57
+ phone: z.string().optional().describe("The subscriber's phone number"),
58
+ referred_by: z
59
+ .string()
60
+ .optional()
61
+ .describe("Referral code of the person who referred this subscriber"),
62
+ metadata: z
63
+ .record(z.string())
64
+ .optional()
65
+ .describe("Additional custom fields to store with the subscriber (e.g. company, role)"),
66
+ }, async ({ email, name, phone, referred_by, metadata }) => {
67
+ const body = { email };
68
+ if (name)
69
+ body.name = name;
70
+ if (phone)
71
+ body.phone = phone;
72
+ if (referred_by || metadata) {
73
+ body.metadata = {
74
+ ...(metadata || {}),
75
+ ...(referred_by ? { referred_by } : {}),
76
+ };
77
+ }
78
+ const data = await apiRequest("/sign-up", {
79
+ method: "POST",
80
+ body: JSON.stringify(body),
81
+ });
82
+ return textResponse(data);
83
+ });
84
+ // ─── Tool: List Subscribers ─────────────────────────────────────────────────
85
+ server.tool("list_subscribers", "Retrieve a paginated list of subscribers from your waitlist. Supports sorting by position, points, date, referral_count, or email.", {
86
+ limit: z
87
+ .number()
88
+ .min(1)
89
+ .max(100)
90
+ .default(20)
91
+ .describe("Number of results to return (1-100, default 20)"),
92
+ page: z
93
+ .number()
94
+ .min(1)
95
+ .default(1)
96
+ .describe("Page number for pagination (default 1)"),
97
+ sort_by: z
98
+ .enum(["position", "points", "date", "referral_count", "email"])
99
+ .default("date")
100
+ .describe("Field to sort by (default: date)"),
101
+ sort_dir: z
102
+ .enum(["asc", "desc"])
103
+ .default("desc")
104
+ .describe("Sort direction (default: desc)"),
105
+ }, async ({ limit, page, sort_by, sort_dir }) => {
106
+ const params = new URLSearchParams({
107
+ limit: limit.toString(),
108
+ page: page.toString(),
109
+ sort_by,
110
+ sort_dir,
111
+ });
112
+ const data = await apiRequest(`/subscribers?${params.toString()}`);
113
+ return textResponse(data);
114
+ });
115
+ // ─── Tool: Get Subscriber ───────────────────────────────────────────────────
116
+ server.tool("get_subscriber", "Retrieve detailed information about a specific subscriber by their ID or email address. Returns position, points, referral info, metadata, location, and more.", {
117
+ id_or_email: z
118
+ .string()
119
+ .describe("The subscriber's unique ID or email address"),
120
+ }, async ({ id_or_email }) => {
121
+ const encoded = encodeURIComponent(id_or_email);
122
+ const data = await apiRequest(`/subscribers/${encoded}`);
123
+ return textResponse(data);
124
+ });
125
+ // ─── Tool: Update Subscriber ────────────────────────────────────────────────
126
+ server.tool("update_subscriber", "Update an existing subscriber's information. You can update their name, phone, points, and/or custom metadata. Only include fields you want to change.", {
127
+ id_or_email: z
128
+ .string()
129
+ .describe("The subscriber's unique ID or email address"),
130
+ name: z.string().optional().describe("Updated name"),
131
+ phone: z.string().optional().describe("Updated phone number"),
132
+ points: z.number().optional().describe("Updated points value"),
133
+ metadata: z
134
+ .record(z.string())
135
+ .optional()
136
+ .describe("Custom fields to add or update (merged with existing metadata)"),
137
+ }, async ({ id_or_email, name, phone, points, metadata }) => {
138
+ const body = {};
139
+ if (name !== undefined)
140
+ body.name = name;
141
+ if (phone !== undefined)
142
+ body.phone = phone;
143
+ if (points !== undefined)
144
+ body.points = points;
145
+ if (metadata !== undefined)
146
+ body.metadata = metadata;
147
+ const encoded = encodeURIComponent(id_or_email);
148
+ const data = await apiRequest(`/subscribers/${encoded}`, {
149
+ method: "PUT",
150
+ body: JSON.stringify(body),
151
+ });
152
+ return textResponse(data);
153
+ });
154
+ // ─── Tool: Log View ─────────────────────────────────────────────────────────
155
+ server.tool("log_view", "Record a view of your waitlist page. Useful for tracking engagement and calculating conversion rates.", {
156
+ visitor_id: z
157
+ .string()
158
+ .optional()
159
+ .describe("Unique identifier for the visitor (prevents duplicate counts)"),
160
+ referring_domain: z
161
+ .string()
162
+ .optional()
163
+ .describe("Domain that referred the view"),
164
+ }, async ({ visitor_id, referring_domain }) => {
165
+ const body = {};
166
+ if (visitor_id)
167
+ body.visitor_id = visitor_id;
168
+ if (referring_domain) {
169
+ body.metadata = { referring_domain };
170
+ }
171
+ const data = await apiRequest("/log-view", {
172
+ method: "POST",
173
+ body: JSON.stringify(body),
174
+ });
175
+ return textResponse(data);
176
+ });
177
+ // ─── Start Server ───────────────────────────────────────────────────────────
178
+ async function main() {
179
+ const transport = new StdioServerTransport();
180
+ await server.connect(transport);
181
+ console.error("Waitlister MCP server running on stdio");
182
+ }
183
+ main().catch((error) => {
184
+ console.error("Fatal error:", error);
185
+ process.exit(1);
186
+ });
187
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "waitlister-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for the Waitlister API — manage your waitlist subscribers through AI assistants like Claude, Cursor, and more.",
5
+ "type": "module",
6
+ "bin": {
7
+ "waitlister-mcp": "./build/index.js"
8
+ },
9
+ "files": [
10
+ "build"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "prepare": "npm run build",
15
+ "start": "node build/index.js",
16
+ "inspect": "npx @modelcontextprotocol/inspector build/index.js"
17
+ },
18
+ "keywords": [
19
+ "mcp",
20
+ "waitlist",
21
+ "waitlister",
22
+ "model-context-protocol",
23
+ "ai",
24
+ "claude",
25
+ "cursor"
26
+ ],
27
+ "author": "Waitlister",
28
+ "license": "MIT",
29
+ "homepage": "https://waitlister.me",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/waitlister/waitlister-mcp"
33
+ },
34
+ "dependencies": {
35
+ "@modelcontextprotocol/sdk": "^1.12.1",
36
+ "zod": "^3.24.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/node": "^22.0.0",
40
+ "typescript": "^5.7.0"
41
+ }
42
+ }