diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index e1a3d405..a47b73fa 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -50,7 +50,7 @@ export default function RootLayout({
-
+
{children}
diff --git a/apps/web/src/app/login/page.tsx b/apps/web/src/app/login/page.tsx index 3cf57897..9f1d83e8 100644 --- a/apps/web/src/app/login/page.tsx +++ b/apps/web/src/app/login/page.tsx @@ -75,9 +75,6 @@ export default function LoginPage() { >

Login to your account

-

- Enter your email below to login to your account -

diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index eed49575..76d3f167 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -4,7 +4,6 @@ import { GitHubStarCounter } from '@/components/github-star-counter' import { SupplySideCTA } from '@/components/supply-side-cta' import { calendarBookingUrl, - discordUrl, docsUrl, githubUrl, twitterUrl @@ -15,7 +14,7 @@ export default function TheBestDamnLandingPageEver() { <> {/* Hero section */}
-

+

Your API → Paid MCP, Instantly

@@ -30,7 +29,7 @@ export default function TheBestDamnLandingPageEver() { {/* How it works section */}
-

+

How It Works

@@ -39,11 +38,11 @@ export default function TheBestDamnLandingPageEver() { {/* Features section */}
-

+

Production-Ready and Extremely Flexible

-
+

Auth @@ -68,21 +67,22 @@ export default function TheBestDamnLandingPageEver() {

- Monetization + Stripe Billing

Charge for your MCP products with a flexible, declarative pricing model built on top of Stripe. Agentic supports almost any - combination of fixed and usage-based billing models, both at the - MCP level, at the tool-call level, and at the custom metric level - (e.g., tokens, image transformations, etc). + combination of fixed and{' '} + usage-based billing models, + both at the MCP level, at the tool-call level, and at the custom + metric level (e.g., tokens, image transformations, etc).

- Support both MCP and HTTP + Support both MCP and HTTP

@@ -97,18 +97,30 @@ export default function TheBestDamnLandingPageEver() {

+
+

+ API keys +

+ +

+ When a customer subscribes to your product, they're given a unique + API key. MCP URLs are appended with this API key to correlate + usage with their subscription. Customer HTTP tool calls use the + same API key as a standard HTTP Authorization header. +

+
+

Rate-limiting

- Customize your MCP product with durable rate-limiting built on top - of Cloudflare's global infrastructure. Create default rate-limits, - change them based on a customer's subscribed pricing plan, and - create custom tool-specific overrides, all with a simple, - strongly-typed JSON config. REST assured that your origin API will - be safe behind Agentic's robust API gateway. + All agentic products are protected by durable rate-limiting built + on top of Cloudflare's global infrastructure. Customize the + default rate-limits, change them based on a customer's pricing + plan, or create custom tool-specific overrides. REST assured that + your origin API will be safe behind Agentic's robust API gateway.

@@ -119,11 +131,11 @@ export default function TheBestDamnLandingPageEver() {

Opt-in to caching with familiar cache-control and{' '} - stale-while-revalidate features. MCP tool calls include - caching information in their _meta fields with symmetry - to standard HTTP headers. All caching takes place in Cloudflare's - global edge cache, and will only be enabled if you choose to - enable it for your product or specific tools. + stale-while-revalidate options. MCP tool calls include + caching information in their _meta fields, providing + parity with standard HTTP headers. All caching takes place in + Cloudflare's global edge cache, and caching will only be enabled + if you choose to enable it for your product or individual tools.

@@ -133,9 +145,9 @@ export default function TheBestDamnLandingPageEver() {

- Agentic tracks usage-based billing and analytics at a fine-grained - level, so you can understand how your customers are using your - product. + Agentic tracks all tool calls for usage-based billing and + analytics at a fine-grained level, so you can drill in and deeply + understand how your customers are using your product.

@@ -149,7 +161,7 @@ export default function TheBestDamnLandingPageEver() { time you make a change to your product's config, pricing, or docs, a unique preview deployment is created for that change. This enables instant rollbacks if there are problems with a deployment. - Publish deployment publicly uses semantic versioning ( + Publishing deployments publicly uses semantic versioning ( semver), so your customers can choose how to handle breaking changes.

@@ -157,43 +169,42 @@ export default function TheBestDamnLandingPageEver() {

- And more! + That's just the start

- Checkout our docs for more details on - Agentic's MCP API gateway. + + Check out our docs + {' '} + for more details on Agentic's MCP API gateway.

{/* Marketplace section */} -
-

+ {/*
+

MCP Marketplace

-

Coming soon...

-
+

+ Coming soon... +

+

*/} {/* Open source section */}
-

- Agentic is 100% Open Source! +

+ Agentic is 100% Open Source

-

- Join the tens of thousands of TypeScript AI engineers who've{' '} - - starred the project on GitHub - - .{' '} +

+ Open source is very dear to my heart, and I couldn't be happier that + Agentic is fully OSS. It's written in{' '} + TypeScript, stands on the + shoulders of infra giants (Vercel, Cloudflare, Postgres), and has a + small but vibrant developer community.{' '} Check out the source on GitHub - - ,{' '} - - join our community on Discord - - , or{' '} + {' '} + or{' '} ping me on Twitter - - . + {' '} + with questions / feedback.

+ {/* Social proof section */} +
+

+ TODO: social proof +

+ +

TODO

+
+ {/* CTA section */} -
- +
+

+ Deploy Your MCP Product Today +

+ +

Join the AI gold rush && deploy your first MCP product today.

+ +
) diff --git a/apps/web/src/app/signup/page.tsx b/apps/web/src/app/signup/page.tsx index e612f0c2..c075130f 100644 --- a/apps/web/src/app/signup/page.tsx +++ b/apps/web/src/app/signup/page.tsx @@ -89,9 +89,6 @@ export default function SignupPage() { >

Create an account

-

- Enter your info below to create an account -

diff --git a/apps/web/src/components/github-star-counter.tsx b/apps/web/src/components/github-star-counter.tsx index ebfc0824..75ff711b 100644 --- a/apps/web/src/components/github-star-counter.tsx +++ b/apps/web/src/components/github-star-counter.tsx @@ -2,7 +2,7 @@ import NumberFlow from '@number-flow/react' import Link from 'next/link' -import { useEffect, useState } from 'react' +import { type ReactNode, useEffect, useState } from 'react' import { GitHubIcon } from '@/icons/github' import { githubUrl } from '@/lib/config' @@ -13,7 +13,13 @@ import { Button } from './ui/button' // TODO: fetch this dynamically const numGitHubStars = 17_600 -export function GitHubStarCounter({ className }: { className?: string }) { +export function GitHubStarCounter({ + className, + children +}: { + className?: string + children?: ReactNode +}) { const [numStars, setNumStars] = useState(0) useEffect(() => { @@ -35,9 +41,11 @@ export function GitHubStarCounter({ className }: { className?: string }) { notation: 'compact', roundingPriority: 'morePrecision' }} - suffix=' stars' + suffix={children ? undefined : ' stars'} willChange /> + + {children} ) diff --git a/apps/web/src/components/supply-side-cta.tsx b/apps/web/src/components/supply-side-cta.tsx index 06d7c983..7b568e15 100644 --- a/apps/web/src/components/supply-side-cta.tsx +++ b/apps/web/src/components/supply-side-cta.tsx @@ -5,16 +5,22 @@ import Link from 'next/link' import { HeroButton } from '@/components/hero-button' import { Button } from '@/components/ui/button' -import { calendarBookingUrl, docsQuickStartUrl } from '@/lib/config' +import { GitHubIcon } from '@/icons/github' +import { calendarBookingUrl, docsQuickStartUrl, githubUrl } from '@/lib/config' import { useAgentic } from './agentic-provider' +import { GitHubStarCounter } from './github-star-counter' -export function SupplySideCTA() { +export function SupplySideCTA({ + variant = 'github' +}: { + variant?: 'book-call' | 'github' | 'github-2' +}) { const ctx = useAgentic() return (
- + - + {variant === 'github' ? ( + + ) : variant === 'github-2' ? ( + + ) : ( + + )}
) } diff --git a/readme.md b/readme.md index dc6d614c..7347d9b3 100644 --- a/readme.md +++ b/readme.md @@ -21,6 +21,7 @@ - stripe billing portal - should we bypass stripe for `free` plans to increase conversions? - handle browser back/forward with `?next=` + - add some social proof to signup page - **API gateway** - oauth flow - https://docs.scalekit.com/guides/mcp/oauth @@ -43,6 +44,7 @@ - consider using [neon serverless driver](https://orm.drizzle.team/docs/connect-neon) for production - can this also be used locally? - may need to update our `drizzle-orm` fork +- figure out the best OSS license for launch ## TODO: Post-MVP