import { GitHubIcon, NotionIcon, PostgresIcon, RestIcon, SalesforceCloudIcon, StripeIcon, } from '@/components/brand-icons'; import { HeroStepRotator } from '@/components/hero-step-rotator'; import { HeroVideo } from '@/components/hero-video'; import { JsonLd } from '@/components/json-ld'; import { ParticleHero } from '@/components/particle-hero'; import { PulseLink } from '@/components/pulse'; import { ScrollCue } from '@/components/scroll-cue'; import { TIERS } from '@/lib/pricing'; import { FAQ, faqJsonLd } from '@/lib/seo'; import { Activity, ChevronDown, Container, ShieldCheck } from 'lucide-react'; import Link from 'next/link'; import type { ComponentType } from 'react'; interface ExampleEntry { title: string; desc: string; /** Brand logo component rendered inside the coloured chip. */ Icon: ComponentType<{ size?: number; className?: string }>; /** Official brand colour for the chip background. */ bg: string; /** Foreground colour the icon paints in. */ fg: string; } const EXAMPLES: ExampleEntry[] = [ { title: 'PostgreSQL', desc: 'Read-only access to your tables with schema introspection.', Icon: PostgresIcon, bg: '#336791', fg: '#ffffff', }, { title: 'Salesforce', desc: 'Query opportunities, accounts and leads from Claude.', Icon: SalesforceCloudIcon, bg: '#00a1e0', fg: '#ffffff', }, { title: 'Notion', desc: 'Search pages, read content, append blocks.', Icon: NotionIcon, bg: '#ffffff', fg: '#0a0a0b', }, { title: 'GitHub', desc: 'List issues, search code, post comments. Scoped to one repo.', Icon: GitHubIcon, bg: '#181717', fg: '#ffffff', }, { title: 'Stripe', desc: 'Look up charges, customers, refunds (read-only by default).', Icon: StripeIcon, bg: '#635bff', fg: '#ffffff', }, { title: 'Custom REST', desc: 'Wrap any HTTP API behind one prompt-defined tool surface.', Icon: RestIcon, bg: '#6366f1', fg: '#ffffff', }, ]; // Honest marketplace preview data: template names + tool counts only. These // mirror the first-party starter templates; no invented fork counts, no // "verified" theatre — the frame is labelled as a preview of the card format. const PREVIEW_TEMPLATES: { name: string; author: string; tools: number }[] = [ { name: 'notion-search', author: 'core', tools: 2 }, { name: 'github-issues', author: 'core', tools: 3 }, { name: 'stripe-readonly', author: 'core', tools: 4 }, { name: 'postgres-readonly', author: 'core', tools: 3 }, ]; const MARKETPLACE_POINTS: { t: string; d: string }[] = [ { t: 'Fork and own', d: 'Start from a server someone already shipped. Fork it, paste your own credentials, deploy. No prompt required.', }, { t: 'Secrets never travel', d: "A template carries the spec and generated code, never the author's API keys. You add your own on fork.", }, { t: 'Open from day one', d: 'Publish a server you built and anyone can fork it. The marketplace is young — early templates set the standard.', }, ]; // Proof-by-specificity band: three claims a visitor can verify with one // click instead of taking our word for it. Substitute for social proof // until there is social proof. const PROOF_POINTS: { t: string; d: string; href: string; linkLabel: string; Icon: ComponentType<{ size?: number; className?: string }>; }[] = [ { t: 'OAuth 2.1 authorization server', d: 'PKCE, Dynamic Client Registration and Resource Indicators (RFC 8707) in front of every server.', href: '/docs/oauth', linkLabel: 'Read the auth docs', Icon: ShieldCheck, }, { t: 'Live system status', d: 'Uptime and incident history, public. If a build queue slows down, you see it before we tell you.', href: '/status', linkLabel: 'Check status now', Icon: Activity, }, { t: 'Per-server container isolation', d: 'Every generated server runs in its own Docker container. Secrets AES-256-GCM encrypted at rest.', href: '/security', linkLabel: 'Security architecture', Icon: Container, }, ]; const PIPELINE_STEPS: { n: string; t: string; d: string }[] = [ { n: '01', t: 'Describe your tool', d: 'A sentence is enough. List your secrets and which APIs to call.', }, { n: '02', t: 'We generate, check, deploy', d: 'Claude writes the spec. We render TypeScript, run static checks, build a container, deploy to your subdomain.', }, { n: '03', t: 'Install in your client', d: 'Copy the snippet into Claude Desktop, Cursor or ChatGPT. OAuth flow on first use.', }, ]; /** Mono shell-comment section kicker: `## how_it_works` */ function Kicker({ children }: { children: string }) { return
## {children}
; } export default function Landing() { const teaserTiers = TIERS.filter((t) => t.name === 'Hobby' || t.name === 'Pro'); return ( <> {/* Hero — left: copy + CTAs, right: cycling terminal tile. The WebGL particle field sits behind at z-0 with pointer-events:none so the CTAs stay interactive. */}From prompt to production MCP server in 60 seconds. OAuth 2.1, Streamable HTTP, ready for Claude, Cursor and ChatGPT.
{s.d}
{p.d}
{p.linkLabel} → ); })}Works with Claude Desktop, Cursor, ChatGPT, VS Code Copilot and Continue.dev — anything that speaks MCP.
Ship integrations like these from one prompt each.
{e.desc}
The marketplace is a library of working MCP servers. Fork one, paste your credentials, deploy. Or publish yours and let others build on it.
{p.d}
{t.description}
{f.a}
Free tier, full source export, no lock-in. If it doesn't work for you, take the TypeScript and leave.