diff --git a/apps/web/package.json b/apps/web/package.json index 7c699cee..8b9c8f1a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -57,6 +57,7 @@ "react-dom": "catalog:", "react-infinite-scroll-hook": "catalog:", "react-lottie-player": "catalog:", + "react-medium-image-zoom": "^5.2.14", "react-use": "catalog:", "server-only": "catalog:", "shiki": "catalog:", diff --git a/apps/web/public/agentic-mcp-gateway-mvp-diagram-light.png b/apps/web/public/agentic-mcp-gateway-mvp-diagram-light.png new file mode 100644 index 00000000..4fb6c2f3 Binary files /dev/null and b/apps/web/public/agentic-mcp-gateway-mvp-diagram-light.png differ diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index c5050399..113f6775 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -1,4 +1,5 @@ import './globals.css' +import 'react-medium-image-zoom/dist/styles.css' import type { Metadata } from 'next' import { Geist } from 'next/font/google' diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 01eb95cc..42f7c6a0 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -8,6 +8,7 @@ import { GitHubStarCounter } from '@/components/github-star-counter' import { HeroSimulation2 } from '@/components/hero-simulation-2' import { MCPMarketplaceFeatures } from '@/components/mcp-marketplace-features' import { PageContainer } from '@/components/page-container' +import { SupplySideCTA } from '@/components/supply-side-cta' import { docsPublishingQuickStartUrl, githubUrl, @@ -58,7 +59,7 @@ export default async function TheBestDamnLandingPageEver() { {/* How it works section */}

- Agentic tools work everywhere + Agentic tools work everywhere

Agentic tools are{' '} - production-ready + optimized for LLMs

@@ -126,6 +127,23 @@ export default async function TheBestDamnLandingPageEver() {

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

+ Publish your own MCP products with Agentic +

+ +
+ Run one command to turn any MCP server or OpenAPI service into a + paid MCP product. With built-in support every major LLM SDK and MCP + client. +
+ + +
+
+ {/* Open source section */}

@@ -168,7 +186,7 @@ export default async function TheBestDamnLandingPageEver() {

TODO

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

diff --git a/apps/web/src/app/publishing/page.tsx b/apps/web/src/app/publishing/page.tsx index f905c0f4..1461e30a 100644 --- a/apps/web/src/app/publishing/page.tsx +++ b/apps/web/src/app/publishing/page.tsx @@ -1,4 +1,6 @@ +import Image from 'next/image' import Link from 'next/link' +import Zoom from 'react-medium-image-zoom' import { DotsSection } from '@/components/dots-section' import { ExampleAgenticConfigs } from '@/components/example-agentic-configs' @@ -6,7 +8,8 @@ import { GitHubStarCounter } from '@/components/github-star-counter' import { MCPGatewayFeatures } from '@/components/mcp-gateway-features' import { PageContainer } from '@/components/page-container' import { SupplySideCTA } from '@/components/supply-side-cta' -import { githubUrl, twitterUrl } from '@/lib/config' +import { docsPublishingUrl, githubUrl, twitterUrl } from '@/lib/config' +import mcpGatewayDiagramLight from '@/public/agentic-mcp-gateway-mvp-diagram-light.png' export default function PublishingMCPsPage() { return ( @@ -19,8 +22,7 @@ export default function PublishingMCPsPage() {

Run one command to turn any MCP server or OpenAPI service into a paid - MCP product,{' '} - with built-in distribution to over 20k AI engineers. + MCP product. With built-in support every major LLM SDK and MCP client.
@@ -32,7 +34,28 @@ export default function PublishingMCPsPage() { How It Works -
TODO
+
+ + MCP Gateway Demo + +
+ +

+ Deploy any MCP server or OpenAPI service to Agentic's MCP Gateway, + which handles auth, billing, rate-limiting, caching, etc. And + instantly turn your API into a paid MCP product that supports every + major LLM SDK and MCP client.{' '} + + Learn more + + . +

{/* Config section */} @@ -43,17 +66,21 @@ export default function PublishingMCPsPage() { -
-

- Configuring your Agentic project is straightforward, regardless of - whether your origin is an MCP server or an OpenAPI service. For TS - projects, you can use a fully-typed{' '} - agentic.config.ts file, or - fall back to using an{' '} - agentic.config.json file to - configure your project. -

-
+

+ + Configuring your Agentic project + {' '} + is straightforward , regardless of whether your origin is an MCP + server or an OpenAPI service. For TS projects, you can use a + fully-typed agentic.config.ts{' '} + file, or fall back to using an{' '} + agentic.config.json file to + configure your project.{' '} + + Learn more + + . +

{/* Features section */} diff --git a/apps/web/src/components/demand-side-cta.tsx b/apps/web/src/components/demand-side-cta.tsx index 81e00b15..d4bc544f 100644 --- a/apps/web/src/components/demand-side-cta.tsx +++ b/apps/web/src/components/demand-side-cta.tsx @@ -2,7 +2,7 @@ import Link from 'next/link' import { HeroButton } from '@/components/hero-button' import { Button } from '@/components/ui/button' -import { docsMarketplaceUrl } from '@/lib/config' +import { docsUrl } from '@/lib/config' export function DemandSideCTA() { return ( @@ -14,7 +14,7 @@ export function DemandSideCTA() { diff --git a/apps/web/src/components/example-agentic-configs.tsx b/apps/web/src/components/example-agentic-configs.tsx index 1380d43f..6ba9c48c 100644 --- a/apps/web/src/components/example-agentic-configs.tsx +++ b/apps/web/src/components/example-agentic-configs.tsx @@ -50,7 +50,7 @@ export function ExampleAgenticConfigs() { } return ( -
+
) diff --git a/apps/web/src/components/example-usage.tsx b/apps/web/src/components/example-usage.tsx index 5764a7ce..ff6e4f44 100644 --- a/apps/web/src/components/example-usage.tsx +++ b/apps/web/src/components/example-usage.tsx @@ -91,7 +91,7 @@ export function ExampleUsage({ // }) return ( -
+
Check out our docs for more details on Agentic's MCP gateway. ), - href: docsUrl, + href: docsPublishingUrl, icon: TextSelectIcon, pattern: { y: 13, diff --git a/apps/web/src/components/mcp-marketplace-features.tsx b/apps/web/src/components/mcp-marketplace-features.tsx index 781c7dd1..9fe1c7b8 100644 --- a/apps/web/src/components/mcp-marketplace-features.tsx +++ b/apps/web/src/components/mcp-marketplace-features.tsx @@ -19,7 +19,7 @@ const mcpMarketplaceFeatures: FeatureData[] = [ All Agentic tools have been hand-crafted specifically for LLM tool use. - + {' '} We call this Agentic UX, and it's at the heart of why Agentic tools work better for LLM & MCP use cases than legacy APIs. @@ -34,11 +34,12 @@ const mcpMarketplaceFeatures: FeatureData[] = [ } }, { - name: 'Battle-Tested', + name: 'Production-Ready MCP Support', description: ( <> - Forget random GitHub repos and piping MCP servers together. Agentic - tools are all battle-tested in production and come with real SLAs. + Forget random GitHub repos and gluing local MCP servers together. + Agentic tools are all battle-tested in production and come with real + SLAs. ), icon: ShieldCheckIcon, diff --git a/apps/web/src/components/supply-side-cta.tsx b/apps/web/src/components/supply-side-cta.tsx index 500755fe..e6484f13 100644 --- a/apps/web/src/components/supply-side-cta.tsx +++ b/apps/web/src/components/supply-side-cta.tsx @@ -3,7 +3,7 @@ import { sanitizeSearchParams } from '@agentic/platform-core' import Link from 'next/link' -import { HeroButton } from '@/components/hero-button' +import { HeroButton, type HeroButtonVariant } from '@/components/hero-button' import { Button } from '@/components/ui/button' import { GitHubIcon } from '@/icons/github' import { @@ -16,15 +16,17 @@ import { useAgentic } from './agentic-provider' import { GitHubStarCounter } from './github-star-counter' export function SupplySideCTA({ - variant = 'github' + variant = 'github', + heroVariant = 'purple' }: { variant?: 'book-call' | 'github' | 'github-2' + heroVariant?: HeroButtonVariant }) { const ctx = useAgentic() return (
- + - Get Started + Quick Start diff --git a/apps/web/src/lib/config.ts b/apps/web/src/lib/config.ts index 8c31a55e..b53c1f6e 100644 --- a/apps/web/src/lib/config.ts +++ b/apps/web/src/lib/config.ts @@ -19,6 +19,7 @@ export const githubUrl = 'https://github.com/transitive-bullshit/agentic' export const calendarBookingUrl = 'https://cal.com/travis-fischer/15min' export const docsUrl = 'https://docs.agentic.so' export const docsPublishingQuickStartUrl = `${docsUrl}/publishing/quickstart` +export const docsPublishingUrl = `${docsUrl}/publishing` export const docsMarketplaceUrl = `${docsUrl}/marketplace` export const discordUrl = 'https://discord.agentic.so' diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 6110867b..370ce250 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -9,6 +9,7 @@ "rootDir": ".", "baseUrl": ".", "paths": { + "@/public/*": ["public/*"], "@/*": ["src/*"] } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0b85411..39e3c96f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -806,6 +806,9 @@ importers: react-lottie-player: specifier: 'catalog:' version: 2.1.0(react@19.1.0) + react-medium-image-zoom: + specifier: ^5.2.14 + version: 5.2.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react-use: specifier: 'catalog:' version: 17.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -8171,6 +8174,12 @@ packages: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-medium-image-zoom@5.2.14: + resolution: {integrity: sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-promise-suspense@0.3.4: resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} @@ -17303,6 +17312,11 @@ snapshots: react: 19.1.0 rfdc: 1.4.1 + react-medium-image-zoom@5.2.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-promise-suspense@0.3.4: dependencies: fast-deep-equal: 2.0.1