Launch page + viral waitlist + analytics tool for pre-launch products
Server has 5 tools with clear verb-noun naming (create_waitlist, get_waitlist_stats, export_signups, check_position, list_waitlists). All tools have descriptions (avg 120 chars, within 10-1024 range). Input schemas are present with type definitions. However, parameter descriptions are minimal or missing in several tools (e.g., create_waitlist's color_theme lacks enum constraint documentation; check_position lacks format guidance for email). Output schemas are not formally documented, tools return JSON strings without declared field structures. Error handling is basic (returns JSON error objects but lacks recovery guidance or actionable next steps). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear read/write semantics. Composition is sound, each tool has one responsibility and names are unambiguous.
Check someone's position on a waitlist by email.
Create a new waitlist with a landing page.
Export all signups for a waitlist as JSON.
Get signup counts, referral stats, and viral coefficient for a waitlist.
List all waitlists with their basic info and signup counts.
Output schemas not documented. Tools return JSON strings without declared field structures (e.g., create_waitlist returns {waitlist_id, slug, api_key, landing_page_url} but this is not formally specified). LLMs cannot plan downstream calls or extract fields reliably.
Parameter descriptions incomplete. create_waitlist's color_theme accepts enum values (minimal, gradient, dark, startup) but the parameter description does not list them, LLM must infer from docstring. check_position's email parameter lacks format guidance (should specify email format).
No tool annotations. create_waitlist is destructive (WRITE risk) and export_signups is read-only, but neither tool declares readOnlyHint or destructiveHint. Agents cannot distinguish safe-to-retry tools from irreversible ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. Tools return {error: 'Waitlist not found'} but do not suggest next steps (e.g., 'Try list_waitlists() to see available IDs'). Agents cannot self-correct on failures.
No pagination support. export_signups returns all signups (limit=100000 hardcoded) without offset/limit parameters or total count. Large waitlists will blow context windows.