From working prototype to paid product. Every dependency mapped. Every step paint-by-numbers.
| Feature | Status | What It Does |
|---|---|---|
| publish_to_nowpage | ✓ Live | Publish HTML pages to any NowPage domain |
| send_email | ✓ Live | Email links via Resend (BYOK supported) |
| register_to_command_center | ✓ Live | Track published pages in content registry |
| Domain auto-detection | ✓ Live | DEFAULT_DOMAIN — customers don't specify domain every time |
| Composite Bearer token | ✓ Live | Format: npkey:resendkey — BYOK for email |
| Domain allowlist | ✓ Live | ALLOWED_DOMAINS env var restricts publishing targets |
| Tier | What You Get | Price |
|---|---|---|
| Community | MCP access, 1 domain, email tool, dashboard access, community support | $29/mo |
| Pro | Everything in Community + 3 domains, priority support, analytics | $49/mo |
| Team | Everything in Pro + unlimited domains, team seats, custom branding | $99/mo |
| Additional Domain | Add-on for any plan | $15/mo each |
Our cost per customer: ~$0. NowPage runs on Vercel free tier. Supabase free tier. Email via customer's own Resend key or our shared one (100/day free). This is 95%+ margin.
https://nowpage-mcp.vercel.app/api/mcpyour-np-key (or your-np-key:your-resend-key for email)| # | Task | Depends On | Unlocks |
|---|---|---|---|
| 1.1 | Stripe checkout page — hosted payment link for each tier | Stripe account (have it) | Revenue collection |
| 1.2 | Stripe webhook handler — /api/webhooks/stripe receives payment events, provisions customer | 1.1 | Auto-provisioning |
| 1.3 | Customer table in Supabase — mcp_customers: id, email, stripe_id, plan, domains[], np_api_key, status, created_at | Supabase (have it) | Everything else |
| 1.4 | NowPage API key provisioning — auto-create NP API key scoped to customer's domain(s) | NowPage admin API (need to build) | Hands-free onboarding |
| 1.5 | Welcome email — sent via Resend with API key, MCP URL, setup instructions | 1.2, 1.4 | Customer can self-serve |
| 1.6 | Onboarding landing page — /onboard route with Stripe embed + domain input | 1.1, 1.3 | Public signup flow |
Depends: Stripe account + NowPage admin API for key provisioning
Unlocks: First paying customers. $0 → $29+/mo.
Two approaches (pick one):
| Approach | How | Effort | Best For |
|---|---|---|---|
| A) Token-based routing | Single MCP server. Customer's Bearer token → lookup in mcp_customers → get their domain, NP key, Resend key. No per-customer deployment. | ~4 hours | Scale to 100+ customers with one server |
| B) Per-customer Vercel deploy | Clone the repo per customer. Set their env vars. Each gets their own URL. | ~1 hour per customer | Full isolation, custom domains |
Recommended: Approach A. One deployment, token-based routing. Scale without ops overhead.
| # | Task | Depends On |
|---|---|---|
| 2.1 | Auth middleware — Bearer token → Supabase lookup → inject customer config | Phase 1 (customer table) |
| 2.2 | Per-customer domain resolution — replace ALLOWED_DOMAINS env var with DB lookup | 2.1 |
| 2.3 | Per-customer NP key injection — use customer's provisioned key, not server env var | 2.1 |
| 2.4 | Per-customer Resend key — BYOK from customer table (they enter during onboarding) | 2.1 |
Unlocks: True multi-tenant. 50 customers, one server, zero per-customer ops.
| # | Task | Depends On |
|---|---|---|
| 3.1 | Usage events table — mcp_usage: customer_id, tool, domain, timestamp, tokens_used | Phase 1 (customer table) |
| 3.2 | Logging middleware — every MCP tool call writes a usage row | 3.1 |
| 3.3 | Rate limiting — check monthly usage against plan limits | 3.2 |
| 3.4 | Usage dashboard — customers see their publish count, email count, domains | 3.2 |
| 3.5 | Admin dashboard — we see all customers, usage, revenue, churn signals | 3.2 |
Unlocks: Data-driven pricing. Upsell triggers. Abuse prevention.
| # | Feature |
|---|---|
| 4.1 | Add/remove domains |
| 4.2 | Rotate API keys |
| 4.3 | Manage team members |
| 4.4 | View usage & billing |
| 4.5 | Upgrade/downgrade plan |
| # | Feature |
|---|---|
| 5.1 | Template library — pre-built page templates customers can use |
| 5.2 | Custom tools — customers add their own MCP tools (CRM, analytics, etc.) |
| 5.3 | Webhook integrations — fire webhooks on publish events |
| 5.4 | White-label — customers brand the MCP as their own |
Answer: No — but they get one provisioned automatically.
| Scenario | How It Works |
|---|---|
| Community plan ($29) | We provision a NowPage site for them (e.g., theirname.nowpage.pub). They get an API key scoped to that domain. They never touch NowPage directly. |
| Custom domain ($15 add-on) | Customer points their DNS (CNAME) to NowPage. We configure routing. Same API key, different domain. |
| Existing NowPage user | They already have a key. They just paste it into the MCP Bearer token. Done. |
The magic: The customer never needs to understand NowPage. They just connect Claude.ai to the MCP and start publishing. NowPage is invisible infrastructure — like Stripe is invisible to Shopify customers.
mcp_customers table in Supabase — SQL migration with customer data model. (Ralph task, 10 min)/api/webhooks/stripe in the MCP Next.js app. On payment → create customer row → provision NP key → send welcome email. (Ralph task, 30 min)/onboard route with pricing cards + Stripe checkout buttons. (Ralph task, 20 min)| Component | Provider | Cost |
|---|---|---|
| MCP Server | Vercel (free tier) | $0 |
| NowPage hosting | Vercel (free tier) | $0 |
| Database | Supabase (free tier → $25 at scale) | $0–$25 |
| Email (shared) | Resend (free 100/day → $20 at scale) | $0–$20 |
| Stripe fees | 2.9% + $0.30 | ~$1.15/customer |
| Domain (optional) | Customer's own registrar | $0 to us |
| Break-even | 1 customer | |
| 10 customers (Community) | $278/mo profit | |
| 50 customers (mixed) | $1,800+/mo profit | |
Last updated: March 10, 2026 | NowPage MCP Product Roadmap v2