Skip to main content
Glama
ilpr

@waitlister/mcp

by ilpr

Waitlister MCP Server — @waitlister/mcp

An MCP (Model Context Protocol) server that connects AI assistants like Claude, Cursor, and Windsurf to the Waitlister API. Create waitlists and manage subscribers through natural language.

This is the official package, superseding waitlister-mcp (1.0.x). Existing waitlister-mcp configurations keep working, but new setups should use @waitlister/mcp — it adds account-key support, waitlist creation, stats, and deletion, and works on every plan.

What Can You Do With This?

Once connected, you can ask your AI assistant things like:

  • "Is my Waitlister key working, and can I create another waitlist?"

  • "Create a waitlist for my new product and give me the signup form URL"

  • "Launch my waitlist with a landing page — dark theme — and publish it"

  • "Change the page headline to 'Join 500+ others'"

  • "Generate a landing page: bold, dev-tool aesthetic" (AI builder, 1 credit)

  • "Add test@gmail.com to my waitlist"

  • "How many subscribers do I have?"

  • "Look up the subscriber john@acme.com"

  • "Update John's points to 500"

  • "Show me the top 10 subscribers by referral count"

Related MCP server: nudge

Tools

Tool

Description

Plan

get_account

Check the key and what the account may do: plan, waitlist count vs cap, whether the next create_waitlist would succeed, AI credits. Read-only

Every plan (account key)

create_waitlist

Create a new waitlist; returns its key + a form URL that collects signups immediately. Optionally provisions its landing page (draft) in the same call

Every plan (account key)

list_waitlists

List every waitlist you own, with subscriber/view counts

Every plan (account key)

get_stats

Subscriber + view counters for a waitlist (cheap social proof)

Every plan

add_subscriber

Add a new subscriber to a waitlist

Every plan

list_subscribers

List subscribers with pagination and sorting

Growth+

get_subscriber

Get details for a specific subscriber by ID or email

Growth+

update_subscriber

Update a subscriber's name, phone, points, or metadata

Growth+

delete_subscriber

Permanently delete a subscriber (irreversible)

Growth+

log_view

Record a waitlist page view for analytics

Every plan

get_landing_page

Structured view of the hosted landing page: status, copy, theme, SEO, live URL, analytics

Every plan

create_landing_page

Create the page from structured fields (draft; one page per waitlist)

Every plan

update_landing_page

Update copy/theme/background/SEO; live pages update immediately

Every plan

publish_landing_page

Go live at waitlister.me/p/{slug} (or unpublish)

Every plan

generate_landing_page

AI-generate or AI-edit the whole page from a prompt (1 AI credit per call, ~20–50s)

Every plan

AI pages vs standard pages: after generate_landing_page, the page's copy lives inside the generated page — update_landing_page rejects copy/structure fields with guidance to use generate_landing_page + is_edit instead (theme and seo still update normally). Generated pages are saved as drafts, and the AI conversation carries over to the dashboard's AI chat.

Prerequisites

  • Node.js 18+

  • A Waitlister account — the free plan works

  • An account API key (recommended), or a per-waitlist API key (Growth plan+)

Getting Your Key

Account key (recommended — works on every plan, covers every waitlist you own):

  1. Log in to Waitlister

  2. Go to SettingsAPI keys → create a key (wl_acct_…)

Per-waitlist key (legacy, Growth plan+): waitlist → IntegrationsAPI access. You'll also need the waitlist key from the waitlist's settings.

Installation

No installation needed — just configure your MCP client:

{
  "mcpServers": {
    "waitlister": {
      "command": "npx",
      "args": ["-y", "@waitlister/mcp"],
      "env": {
        "WAITLISTER_ACCOUNT_KEY": "wl_acct_your-key"
      }
    }
  }
}

With an account key you can optionally add "WAITLISTER_WAITLIST_KEY": "your-waitlist-key" to set a default waitlist — otherwise each tool call can target any waitlist you own via its waitlist_key parameter (ask the assistant to run list_waitlists first).

{
  "mcpServers": {
    "waitlister": {
      "command": "npx",
      "args": ["-y", "@waitlister/mcp"],
      "env": {
        "WAITLISTER_API_KEY": "your-api-key",
        "WAITLISTER_WAITLIST_KEY": "your-waitlist-key"
      }
    }
  }
}

Global install

npm install -g @waitlister/mcp

Then configure with "command": "waitlister-mcp" and the same env.

Setup by Client

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) with the JSON above.

Cursor

Go to SettingsMCPAdd new MCP server and use the same configuration.

Claude Code

claude mcp add waitlister --env WAITLISTER_ACCOUNT_KEY=wl_acct_your-key -- npx -y @waitlister/mcp

Environment Variables

Variable

Required

Description

WAITLISTER_ACCOUNT_KEY

One of the two keys

Account API key (wl_acct_…, Settings → API keys). Every plan; every waitlist you own; unlocks create_waitlist/list_waitlists.

WAITLISTER_API_KEY

One of the two keys

Per-waitlist API key (Growth+). Requires WAITLISTER_WAITLIST_KEY.

WAITLISTER_WAITLIST_KEY

With WAITLISTER_API_KEY; optional otherwise

Default waitlist for the waitlist-scoped tools.

Notes

  • Uniqueness: waitlist names and URL slugs are unique across all of Waitlister. create_waitlist rejects a taken name/slug with a message telling you what to change.

  • Async counters: signups and deletions update get_stats counters and queue positions within a few seconds, not instantly.

  • Plan gating: creating waitlists, adding subscribers, and stats work on every plan (lower rate limits on free plans). Reading/updating/deleting subscriber data requires Growth or higher — see rate limits.

  • Built on the official waitlister SDK (typed errors, automatic retries with backoff).

Development

git clone https://github.com/ilpr/waitlister-mcp.git
cd waitlister-mcp
npm install
npm run build

Test with the MCP Inspector:

WAITLISTER_ACCOUNT_KEY=wl_acct_your-key npm run inspect

Privacy

Full policy: https://waitlister.me/privacy-policy

What this extension collects. Nothing on its own. It runs locally on your machine and holds no database, no telemetry, and no analytics. It stores only the credential you enter — your Waitlister account API key — which Claude Desktop keeps in your operating system's secure credential storage.

What it sends, and where. The extension sends the API requests you ask it to make, over HTTPS, to the Waitlister API at https://waitlister.me/api/v1, authenticated with your key. That means the arguments you (or Claude, on your instruction) pass to a tool: for example a waitlist name, landing-page copy, or a subscriber's email address when you add one. Nothing is sent anywhere else. There are no third-party analytics, error trackers, or intermediary services in the path.

How requests identify themselves. Like any SDK, those requests carry identification headers so Waitlister can tell agent traffic from ordinary API traffic and support it properly: this package's name and version (waitlister-mcp/1.4.0), the SDK version, the Node version, and the name and version your MCP host announces in the protocol handshake (e.g. claude-ai/0.1.0). No prompt text, no file paths, no machine or user identifiers. Nothing extra is sent — these ride along on requests you already made.

How that data is used and retained. Data reaching the Waitlister API is handled under the Waitlister privacy policy linked above — the same terms that apply when you use the web dashboard. Waitlist and subscriber records persist in your Waitlister account until you delete them, from the dashboard or with the delete_subscriber tool. The extension itself retains nothing after a request completes.

Third-party sharing. Waitlister does not sell your data. Landing-page designs requested through generate_landing_page are produced by Waitlister's AI page builder, which passes your design prompt to a third-party model provider; see the privacy policy for the current subprocessor list.

Your controls. Revoke the API key at any time in Waitlister under Settings → API keys, which immediately stops this extension from reaching your account. Uninstalling the extension removes the stored key from your machine. Account and data deletion requests follow the process in the privacy policy.

Contact. https://waitlister.me/contact

License

MIT — see LICENSE.

Available Tools

14 tools
add_subscriberA

Add a new subscriber to a waitlist. Returns their position, referral code, and sign-up token. Idempotent per email: an existing email returns is_new_sign_up: false with their current position, not an error. Works on every plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe subscriber's name
emailYesThe subscriber's email address
phoneNoThe subscriber's phone number
metadataNoAdditional custom fields to store with the subscriber (e.g. company, role)
referred_byNoReferral code of the person who referred this subscriber
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently reveals idempotency behavior (existing email returns is_new_sign_up: false), return values (position, referral code, sign-up token), and cross-plan compatibility. However, it leaves ambiguity about whether subsequent calls with different data update existing subscriber fields, so it is not a perfect 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise, consisting of two sentences that front-load the action, then return value, idempotency nuance, and compatibility statement. No words are wasted, and every sentence contributes meaningful context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a moderately complex schema (6 parameters, nested objects) and no output schema, but the description covers key return fields and edge-case behavior (idempotency, is_new_sign_up flag). It does not provide the exact response structure or error scenarios, but the level of detail is sufficient for an AI to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add extra parameter-level guidance beyond what the schema already provides; it only reinforces email-related behavior through the idempotency note. This is acceptable but does not elevate the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Add') with a resource ('subscriber') and context ('waitlist'), clearly distinguishing it from sibling tools like update_subscriber and delete_subscriber. It further clarifies the purpose by mentioning return values and idempotent behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states when to use the tool (adding a subscriber) and adds operational context (idempotent per email, works on every plan). It does not explicitly name alternatives or exclusions, but sibling tool names make the primary distinction apparent, so it meets the threshold for clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_landing_pageA

Create the waitlist's hosted landing page from structured fields, as a draft (nothing goes live until publish_landing_page). One page per waitlist — returns a 409 error if one already exists (use update_landing_page then). headline is required. Works on every plan. Tip: when creating a new waitlist AND its page, use create_waitlist's landing_page parameter instead — one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
seoNoSearch/social metadata for the hosted page
themeNoPage theme
headlineYesThe page's main title (3-120 characters, plain text — no HTML)
backgroundNoPage background (image backgrounds are dashboard-only)
button_textNoSubmit-button label (max 40 characters, default "Join the waitlist")
descriptionNoSupporting copy under the headline (max 1000 characters, plain text)
collect_nameNoAdd (true) or remove (false) a name input on the signup form
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.
collect_phoneNoAdd (true) or remove (false) a phone input on the signup form

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavioral context beyond annotations: draft status (nothing live until publish), one page per waitlist constraint (409 on conflict), headline required, and 'Works on every plan'. These go beyond the simple readOnly/idempotent/destructive hints and do not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each earning its place: the core action with draft status, the conflict behavior with alternative, the required field, the plan note, and the tip. Front-loaded with the verb and resource, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complexity is high (9 params, nested objects) but the schema fully covers parameters. The description covers lifecycle (draft), conflict handling, plan availability, and alternatives. Without an output schema, the 409 conflict and draft/publish behavior are enough to understand the tool's contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline of 3 applies. The description mentions 'headline is required' which is already in schema; it does not add extra semantic details about other parameters. However, since the schema itself is fully descriptive, this is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Create the waitlist's hosted landing page from structured fields, as a draft'. Clearly distinguishes from siblings (publish_landing_page, update_landing_page, generate_landing_page) by noting one page per waitlist and the 409 conflict, plus the alternative to create_waitlist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when not to use: 'returns a 409 error if one already exists (use update_landing_page then)' and provides the tip to use create_waitlist's landing_page parameter when creating both. Also clarifies nothing goes live until publish_landing_page, so the draft-only use case is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_waitlistA

Create a new waitlist on your Waitlister account (requires an account key, works on every plan within its waitlist cap). Returns the waitlist key and a form_action_url that collects signups immediately. Pass landing_page to also provision the hosted landing page (as a draft — go live with publish_landing_page) in the same call. Note: waitlist names and URL slugs are unique across all of Waitlister — a taken name/slug is rejected with guidance to pick another.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe product/waitlist name
slugNoURL slug (derived from name when omitted; must be globally unique)
categoryNoProduct category
descriptionNoInternal description
landing_pageNoAlso create the hosted landing page (draft) in the same request. headline required. More fields (background, SEO) via update_landing_page afterwards.
validate_emailsNoValidate email deliverability at signup (default true)
referral_rewards_enabledNoEnable the referral program (points for signups and referrals)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral transparency burden. It discloses authentication (account key), plan limitations (waitlist cap), immediate return values (waitlist key, form_action_url), the draft state of landing pages, and global uniqueness constraints with rejection guidance. This is rich, non-obvious context beyond any structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is about three sentences, front-loaded with the main purpose and return value, then optional parameter behavior, then a crucial uniqueness note. No wasted words; each sentence adds unique value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 params, nested landing_page object, no output schema), the description provides complete context: it covers return values, plan limitations, authentication, optional landing page behavior, and uniqueness constraints. It doesn't need to explain every parameter because the schema covers them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics on top: it explains that landing_page creates a draft, name and slug must be globally unique, and that the tool returns a form_action_url that collects signups immediately. This boosts the score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new waitlist on the user's account, with a specific verb and resource. It also distinguishes itself by noting it returns the waitlist key and form_action_url, which is unique among sibling tools like list_waitlists and get_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (creating a waitlist) and provides context about account key requirements and plan caps. It mentions that landing pages are provisioned as drafts and that publish_landing_page is needed to go live, but it doesn't explicitly contrast with create_landing_page as an alternative for separate landing page creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_subscriberA

Permanently delete a subscriber (and their email history) from a waitlist by ID or email address. This cannot be undone. Counters and queue positions update asynchronously within a few seconds. Requires the Growth plan or higher.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_emailYesThe subscriber's unique ID or email address
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so excellently. It discloses that deletion is permanent and irreversible, affects email history, and that counters/queue positions update asynchronously within seconds. It also notes the plan requirement. This is far beyond a generic 'delete' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact—four short sentences, each adding critical information: the operation, irreversibility, async behavior, and plan requirement. There is no filler or repetition. It is front-loaded with the core purpose and then immediately addresses side effects and constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no output schema, the description is remarkably complete. It covers what happens to the subscriber and email history, the irreversible nature, the timing of counter updates, and access requirements. It does not need to explain return values since no output schema exists, and the described side effects are sufficient for an agent to anticipate the outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (id_or_email and waitlist_key), so the schema already documents their meaning. The description adds no new parameter-level details beyond what the schema states (e.g., it references 'ID or email' which is already in the schema). Baseline 3 is appropriate since the schema handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (permanently delete), the target resource (subscriber and their email history), the scope (from a waitlist), and the method (by ID or email address). It distinguishes itself from sibling tools like add_subscriber and update_subscriber by explicitly indicating this is a deletion operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context: use this tool to permanently remove a subscriber. It does not explicitly name alternatives or state when not to use it, but the plan requirement (Growth or higher) provides a clear prerequisite. The purpose is unambiguous enough for an agent to select it appropriately among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_landing_pageA

Generate a complete custom landing page from a natural-language prompt with Waitlister's AI builder (same engine as the dashboard), or edit the existing AI page with is_edit: true. COSTS 1 AI CREDIT per call (shared with the dashboard AI builder; errors with the balance when out of credits) — don't call repeatedly for small tweaks a human should review. Synchronous, typically 20-50 seconds. The result is saved as a draft: review in the dashboard or go live with publish_landing_page. The AI conversation is saved, so the dashboard's AI chat continues where this left off. After generating, the page is an AI page — see update_landing_page for what that changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesWhat to build or change, in natural language (e.g. "dark, bold, dev-tool aesthetic")
is_editNotrue edits the existing AI page instead of generating a fresh one (409 if there is no AI page yet)
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the minimal annotations by disclosing the 1 AI credit cost and balance error behavior, synchronous execution with 20-50 second latency, draft-save outcome, and that the AI conversation is persisted for dashboard continuity. These are critical behavioral traits not available from annotations or schema, making the description highly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that front-loads the primary purpose and then adds necessary behavioral, cost, and workflow details. Every sentence contributes useful information, but the structure could be improved with separation (e.g., bullets) for easier scanning. Still, it remains appropriately concise given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (AI generation, edit mode, cost, draft state, conversation persistence, sibling relationships), the description covers nearly all relevant aspects. It does not describe the return format or response structure, but with no output schema and a simple success/error model, this is not a critical gap. Overall, it is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already described in detail (e.g., prompt examples, is_edit behavior including 409 error, waitlist_key requirements). The description adds no new parameter semantics beyond mentioning is_edit in context, so it meets the baseline for high schema coverage but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's primary function: generating a complete custom landing page from a natural-language prompt using the AI builder, with an optional edit mode via is_edit: true. It distinguishes itself from sibling tools like create_landing_page (non-AI creation) and publish_landing_page (going live), making the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool (for AI-driven page generation/editing) and when not to (avoid repeated calls for small tweaks that need human review). It also points to alternatives: see update_landing_page for implications of AI-page status and publish_landing_page for going live, giving clear workflow context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_landing_pageA
Read-only

Get the structured view of a waitlist's hosted landing page: status (draft/published/unpublished), page_type (standard or ai), copy fields, theme, SEO, the live URL (null until published), and view/signup analytics. AI-built pages also return remaining AI credits. Works on every plan. 404 if the waitlist has no page yet — create one with create_landing_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses specific behaviors: the 404 error condition when no page exists, the live URL being null until published, the conditional inclusion of AI credits for AI-built pages, and plan availability. These details meaningfully help the agent anticipate edge cases and response variations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but organized: a clear opening verb+resource, a structured enumeration of return content, then a few short sentences adding behavioral caveats. Every clause serves a purpose, though it is slightly longer than strictly necessary compared to the two-sentence ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description adequately covers the main return fields (status, page_type, copy, theme, SEO, URL, analytics, AI credits), plus error behavior, plan availability, and a link to the create tool. It stops short of specifying formats or additional error cases, but is sufficient for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full documentation for the single waitlist_key parameter (100% coverage), including its optionality and environment variable fallback. The description adds no additional parameter-specific semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Get the structured view of a waitlist's hosted landing page' — a specific verb+resource+scope. It enumerates the returned fields (status, page_type, copy fields, theme, SEO, URL, analytics), and the distinct read-only verb clearly separates it from siblings like create_landing_page, update_landing_page, publish_landing_page, and generate_landing_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: 'Works on every plan' indicates broad availability, and '404 if the waitlist has no page yet — create one with create_landing_page' names an explicit alternative for the missing-page case. It does not explicitly contrast with other getter tools like get_stats, but the scope of the returned data and the explicit create alternative provide solid usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statsA

Get a waitlist's subscriber and view counters — cheap social proof, works on every plan. Counters update asynchronously (within seconds of a signup or delete).

ParametersJSON Schema
NameRequiredDescriptionDefault
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses async counter updates (within seconds of signup/delete) and plan availability. Since annotations are absent, this provides useful behavioral context about freshness and accessibility, though it doesn't cover error cases or output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose and value, second discloses a key behavioral trait. No fluff, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only stats tool with 1 optional param, the description covers what it does and an important behavior (async updates). Since no output schema exists, it could mention return format, but the description's mention of counters implies basic numeric values. Overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already documents waitlist_key thoroughly (optional, format, source). The description adds no additional parameter insight, but with 100% schema coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'Get a waitlist's subscriber and view counters'. Distinguishes from sibling get_subscriber by focusing on aggregate counters, and from list_subscribers by returning counts rather than subscriber details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Indicates this is for social proof counters, implying it's the right tool for quick stats rather than detailed subscriber lists. Mentions it works on every plan, establishing availability, but doesn't explicitly name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscriberA

Retrieve detailed information about a specific subscriber by their ID or email address — position, points, referral info, metadata, location, and more. Requires the Growth plan or higher.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_emailYesThe subscriber's unique ID or email address
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It mentions the access requirement (Growth plan or higher) and enumerates the types of data returned (position, points, referral info, metadata, location). However, it does not explicitly state that this is a read-only operation that does not modify subscriber data, nor does it describe error behaviors (e.g., what happens if no subscriber matches). This is adequate but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at two sentences, with the primary action and parameters in the first sentence and the plan requirement in the second. It is front-loaded with the key information and contains no redundant or extraneous words. Every sentence contributes to understanding the tool's purpose and constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with two parameters and no output schema, the description covers the essential information: what it does, what data it returns, and the plan requirement. It lacks explicit error semantics or a note about read-only nature, but given the schema handles parameter details and the tool is a straightforward retrieval operation, it is fairly complete. A small gap is the absence of mention of return type or structure, but the listed fields give a good indication.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a 100% description coverage for both parameters, so the baseline is 3. The description adds minimal semantic value by mentioning 'by their ID or email address', which aligns with id_or_email, but it does not add any new detail about waitlist_key. The schema handles parameter explanations well, so no penalty, but no bonus either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieve detailed information about a specific subscriber'), the target resource (subscriber), and the lookup method (by ID or email). It distinguishes itself from sibling tools like list_subscribers (which lists all subscribers) and get_stats (which returns statistics), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: when you need detailed information for a single subscriber identified by ID or email. It also notes the plan requirement (Growth plan or higher), which is a prerequisite. However, it does not explicitly mention alternatives or when not to use it compared to list_subscribers, but the 'specific subscriber' wording implies the contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_subscribersA

Retrieve a paginated list of a waitlist's subscribers, sortable by position, points, date, referral_count, or email. Requires the Growth plan or higher.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (default 1)
limitNoNumber of results to return (1-100, default 20)
sort_byNoField to sort by (default: date)date
sort_dirNoSort direction (default: desc)desc
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description provides useful behavioral details: pagination, sortability, and the Growth plan requirement. It does not disclose rate limits or response format, but for a read-only list tool, it covers key operational aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence that front-loads the core action and key capabilities. Every word adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives a high-level overview but omits response structure details (no output schema exists) and does not mention the optional waitlist_key fallback behavior or pagination defaults. It is adequate for a simple list tool but leaves some operational gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all 5 parameters, each with descriptions, enums, and defaults. The tool description only lists sortable fields already present in the schema enum, adding no new semantic information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a paginated list of a waitlist's subscribers and specifies sortable fields. It distinguishes from sibling tools like list_waitlists by focusing on subscribers rather than waitlists, and from get_subscriber by being a list operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for fetching subscriber lists and notes a plan requirement (Growth or higher), which is a usage condition. It does not explicitly mention alternatives or exclusions, but the context is clear enough for basic selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_waitlistsA

List every waitlist your account owns, with subscriber and view counts (requires an account key).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It discloses a required account key for authentication and indicates the return includes counts. However, it does not mention potential limitations like pagination, rate limits, or error behavior, which would be valuable for a list operation. The description covers some traits but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the action, scope, and key output details without any filler. Every word contributes meaning, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no parameters and no output schema, the description adequately covers the purpose, authentication requirement, and return contents (subscriber and view counts). It does not explain the output structure in detail, but since there is no output schema, the description's mention of counts fulfills the core need. Minor gaps like missing pagination details prevent a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty with zero parameters, so the baseline for this dimension is 4. The description adds no parameter-specific meaning because there are none to describe, which is appropriate given the tool takes no input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and identifies the resource as 'every waitlist your account owns', with the added detail of 'subscriber and view counts' that clarifies the expected output. This clearly distinguishes it from sibling tools like create_waitlist and get_stats, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context that this is for listing all waitlists owned by the account, implying it is the go-to for an overview. It does not explicitly mention alternatives or when not to use it, but the 'every waitlist your account owns' phrasing provides sufficient contextual guidance for a tool with no parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_viewA

Record a view of a waitlist page — useful for tracking engagement and conversion rates when you host your own landing page.

ParametersJSON Schema
NameRequiredDescriptionDefault
visitor_idNoUnique identifier for the visitor (prevents duplicate counts)
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.
referring_domainNoDomain that referred the view

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It conveys the core action and purpose but does not detail side effects, idempotency, or required setup beyond what the schema covers. This is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action, and contains no filler. It efficiently conveys the purpose and use case in a compact form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

As a simple logging tool with well-described schema parameters, the description provides essential context: what it does and when to use it. It doesn't explain return values (no output schema) or relationships to get_stats, but these are not necessary for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The tool description does not add parameter semantics beyond the schema; the schema itself already explains parameters well (e.g., visitor_id prevents duplicate counts).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool records a waitlist page view, using a specific verb 'Record a view' and resource 'waitlist page'. It distinguishes itself from sibling tools like add_subscriber or create_waitlist, and adds context by mentioning tracking engagement and conversion rates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear context for when to use the tool: when hosting your own landing page and wanting to track engagement/conversion. It does not explicitly name alternatives or exclusions, but the use case is distinct from other waitlist tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_landing_pageA
Idempotent

Publish the landing page to its live URL (https://waitlister.me/p/{slug}, or the waitlist's custom domain) — or take it offline with unpublish: true. Publishing validates the page has an email field, a submit button, and a headline of at least 3 characters. API publishes skip the custom social-share (OG) image; publishing once from the dashboard generates it. Works on every plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
unpublishNotrue takes the page offline instead of publishing it
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly=false, idempotent=true, destructive=false), the description discloses important behavioral nuances: validation requirements (email field, submit button, headline length), the automatic generation of OG images when publishing from the dashboard versus skipping it via API, and that it works on every plan. This adds significant value beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using three sentences to cover the main action, alternative behavior, validation criteria, and the social-image caveat. Information is front-loaded with the primary purpose at the start, and every sentence contributes unique value without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and only two optional parameters, the description covers the essential behavioral aspects: URL targeting, unpublish capability, validation checks, image behavior, and plan support. It does not mention return values or error handling, but for a simple publish action, the completeness is adequate, though not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers both parameters fully (unpublish and waitlist_key), so the baseline is 3. The description adds meaning by explaining the effect of 'unpublish: true' (takes the page offline) and implies which parameter is used for publishing vs unpublishing. This goes slightly beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: publishing a landing page to its live URL or unpublishing it. It specifies the exact URL format (waitlister.me/p/{slug} or custom domain) and distinguishes from sibling tools like get_landing_page or update_landing_page by focusing on the publish/unpublish action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool, including the ability to unpublish with 'unpublish: true'. It also mentions validation criteria that must be met for publishing to succeed, which guides usage decisions. However, it does not explicitly name alternative tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_landing_pageA
Idempotent

Update any subset of the landing page's structured fields. On a published page the change goes live immediately. IMPORTANT: on an AI-built page (page_type "ai"), the copy/structure fields (headline, description, button_text, collect_name, collect_phone, background) return a 409 error — edit those with generate_landing_page and is_edit: true; theme and seo still work here on both page types. Works on every plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
seoNoSearch/social metadata for the hosted page
themeNoPage theme
headlineNoThe page's main title (3-120 characters, plain text — no HTML)
backgroundNoPage background (image backgrounds are dashboard-only)
button_textNoSubmit-button label (max 40 characters, default "Join the waitlist")
descriptionNoSupporting copy under the headline (max 1000 characters, plain text)
collect_nameNoAdd (true) or remove (false) a name input on the signup form
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.
collect_phoneNoAdd (true) or remove (false) a phone input on the signup form

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses significant behavioral traits beyond annotations: changes go live immediately on published pages, AI-built pages return 409 for copy/structure fields, and theme/seo work on both page types. The idempotentHint annotation is complemented by 'Update any subset' suggesting partial updates are safe, but the live-publishing and error behavior are valuable additions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though the description is dense, it is well structured and every sentence earns its place: first states the core action, then live-publishing behavior, then the critical AI-page exception, and finally plan coverage. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 parameters, nested objects, and no output schema, the description covers the key contexts: partial updates, immediate live effect, AI-page limitations, and plan availability. It provides enough information for an agent to select and invoke the tool correctly, including the crucial edit-path alternative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by grouping parameters into 'copy/structure fields' (headline, description, button_text, collect_name, collect_phone, background) vs 'theme and seo,' which directly informs which parameters are restricted on AI pages. This is extra semantic context not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Update any subset of the landing page's structured fields,' a specific verb+resource statement. It also distinguishes from sibling tools by explicitly naming generate_landing_page and noting that theme and seo still work for AI-built pages, while copy/structure fields do not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: for AI-built pages, copy/structure fields should be edited via generate_landing_page with is_edit:true, while theme and seo remain editable here. Also states 'Works on every plan,' removing plan-based ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_subscriberA

Update an existing subscriber's name, phone, points, and/or custom metadata. Only include fields you want to change; updating points triggers a queue position recalculation. Requires the Growth plan or higher.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoUpdated name
phoneNoUpdated phone number
pointsNoUpdated points value
metadataNoCustom fields to add or update (merged with existing metadata)
id_or_emailYesThe subscriber's unique ID or email address
waitlist_keyNoThe waitlist key (12 characters, from list_waitlists or the dashboard). Optional if WAITLISTER_WAITLIST_KEY is set.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It discloses a notable side-effect ('updating points triggers a queue position recalculation') and the partial-update behavior ('Only include fields you want to change'), which are valuable non-obvious details. It does not cover return values or error handling, but the key behavioral traits are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy, front-loaded with the core action. Every sentence provides useful information: the action, the partial-update guideline, a side-effect, and a plan requirement. Zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers essential context: what can be updated, partial-update semantics, a non-obvious side-effect, and a plan restriction. The schema fully documents parameters, so the description is reasonably complete. It could mention the return value or error behavior, but those omissions do not significantly hinder tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds the general rule 'Only include fields you want to change' and flags the points recalculation, but individual parameter meanings are already fully described in the schema. The description does not need to compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the explicit verb 'Update' and specifies the exact resources and fields (name, phone, points, custom metadata). It clearly differentiates from sibling tools like add_subscriber, get_subscriber, and delete_subscriber by targeting existing subscribers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use: 'Only include fields you want to change' indicates partial updates, and 'Requires the Growth plan or higher' sets a prerequisite. It does not explicitly name alternative tools, but the 'existing subscriber' phrasing and sibling names make the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv1.2.0
    • First observedadd_subscriber
    • First observedcreate_landing_page
    • First observedcreate_waitlist
    • First observeddelete_subscriber
    • First observedgenerate_landing_page
    • First observedget_landing_page
    • First observedget_stats
    • First observedget_subscriber
    • First observedlist_subscribers
    • First observedlist_waitlists
    • First observedlog_view
    • First observedpublish_landing_page
    • First observedupdate_landing_page
    • First observedupdate_subscriber

TDQS

A4.3/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: waitlists (create/list), stats, subscribers (add/list/get/update/delete), views, and landing pages (get/create/update/publish/generate). There is no overlap between tools; even get_stats and get_landing_page serve different purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (create_waitlist, list_subscribers, publish_landing_page, etc.). Verbs are appropriate and uniformly placed at the start, making the set predictable and easy to navigate.

Tool Count5/5

14 tools is well within the ideal 3-15 range and each tool serves a clear purpose in managing waitlists, subscribers, and landing pages. The count feels proportionate to the domain's complexity without being bloated.

Completeness3/5

The waitlist lifecycle is incomplete: you can create and list waitlists but cannot update or delete them. There is also no single-waitlist getter (only list), which forces agents to filter through the list. However, subscriber and landing page coverage is thorough, so the gaps are workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ilpr/waitlister-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server