diff --git a/CLAUDE.md b/CLAUDE.md
index 7b8988c0..64920efd 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -14,9 +14,10 @@ The platform consists of:
- **Gateway Service** (`apps/gateway/`) - Cloudflare Worker that proxies requests to origin MCP/OpenAPI services
- **Website** (`apps/web/`) - Next.js site for both the marketing site and authenticated webapp
- **E2E Tests** (`apps/e2e/`) - End-to-end test suite for HTTP and MCP gateway requests
-- **Shared Packages** (`packages/`) - Common utilities, types, validators, and configuration
+- **Shared Packages** (`packages/`) - Common utilities, types, validators, and config
+- **StdLib Packages** (`stdlib/`) - TS AI SDK adapters
-The gateway accepts requests at `https://gateway.agentic.so/deploymentIdentifier/toolName` for HTTP requests or `https://gateway.agentic.so/deploymentIdentifier/mcp` for MCP.
+The gateway accepts requests at `https://gateway.agentic.so/deploymentIdentifier/tool-ame` for HTTP requests or `https://gateway.agentic.so/deploymentIdentifier/mcp` for MCP.
### Development Commands
diff --git a/apps/web/src/app/about/page.tsx b/apps/web/src/app/about/page.tsx
index f863600b..e5b9706d 100644
--- a/apps/web/src/app/about/page.tsx
+++ b/apps/web/src/app/about/page.tsx
@@ -1,5 +1,6 @@
import Link from 'next/link'
+import { DotsSection } from '@/components/dots-section'
import { PageContainer } from '@/components/page-container'
import { SupplySideCTA } from '@/components/supply-side-cta'
import { githubUrl, twitterUrl } from '@/lib/config'
@@ -179,13 +180,15 @@ export default function AboutPage() {
{/* CTA section */}
-
-
- Don't miss out on this AI wave
-
+
+
+
+ Don't miss out on the AI wave
+
-
-
+
+
+
)
}
diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx
index 0f3f8065..51c330c3 100644
--- a/apps/web/src/app/page.tsx
+++ b/apps/web/src/app/page.tsx
@@ -9,11 +9,7 @@ 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,
- twitterUrl
-} from '@/lib/config'
+import { githubUrl, twitterUrl } from '@/lib/config'
import {
defaultConfig,
getCodeForDeveloperConfig
@@ -117,7 +113,10 @@ export default async function TheBestDamnLandingPageEver() {
-
+
And of course, MCP is an
integral part of that mission. We're working on a bunch of features
designed to simplify advanced MCP use cases like bundling multiple
diff --git a/apps/web/src/app/publishing/page.tsx b/apps/web/src/app/publishing/page.tsx
index a14d4190..01add8b8 100644
--- a/apps/web/src/app/publishing/page.tsx
+++ b/apps/web/src/app/publishing/page.tsx
@@ -8,7 +8,7 @@ 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 { docsPublishingUrl, githubUrl, twitterUrl } from '@/lib/config'
+import { githubUrl, twitterUrl } from '@/lib/config'
export default function PublishingMCPsPage() {
return (
@@ -47,7 +47,7 @@ export default function PublishingMCPsPage() {
-
+
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
@@ -65,7 +65,7 @@ export default function PublishingMCPsPage() {
-
+
Configuring your Agentic project
{' '}
is straightforward , regardless of whether your origin is an MCP
@@ -74,7 +74,7 @@ export default function PublishingMCPsPage() {
file, or fall back to using an{' '}
agentic.config.json file to
configure your project.{' '}
-
+
Learn more
.
diff --git a/apps/web/src/components/app-projects-list.tsx b/apps/web/src/components/app-projects-list.tsx
index bad77898..ce3bca6f 100644
--- a/apps/web/src/components/app-projects-list.tsx
+++ b/apps/web/src/components/app-projects-list.tsx
@@ -5,7 +5,6 @@ import useInfiniteScroll from 'react-infinite-scroll-hook'
import { useAuthenticatedAgentic } from '@/components/agentic-provider'
import { LoadingIndicator } from '@/components/loading-indicator'
-import { docsPublishingQuickStartUrl } from '@/lib/config'
import { useInfiniteQuery } from '@/lib/query-client'
export function AppProjectsList() {
@@ -64,7 +63,10 @@ export function AppProjectsList() {
) : !projects.length ? (
No projects found.{' '}
-
+
Create your first project to get started.
diff --git a/apps/web/src/components/demand-side-cta.tsx b/apps/web/src/components/demand-side-cta.tsx
index 0d6bce26..293c8652 100644
--- a/apps/web/src/components/demand-side-cta.tsx
+++ b/apps/web/src/components/demand-side-cta.tsx
@@ -2,7 +2,6 @@ import Link from 'next/link'
import { HeroButton } from '@/components/hero-button'
import { Button } from '@/components/ui/button'
-import { docsUrl } from '@/lib/config'
export function DemandSideCTA() {
return (
@@ -14,7 +13,7 @@ export function DemandSideCTA() {
diff --git a/apps/web/src/components/footer.tsx b/apps/web/src/components/footer.tsx
deleted file mode 100644
index 9dd96d45..00000000
--- a/apps/web/src/components/footer.tsx
+++ /dev/null
@@ -1,104 +0,0 @@
-import Link from 'next/link'
-
-import { ActiveLink } from '@/components/active-link'
-import { GitHubIcon } from '@/icons/github'
-import { TwitterIcon } from '@/icons/twitter'
-import { copyright, docsUrl, githubUrl, twitterUrl } from '@/lib/config'
-
-export function Footer() {
- return (
-
- )
-}
diff --git a/apps/web/src/components/footer/dynamic.tsx b/apps/web/src/components/footer/dynamic.tsx
new file mode 100644
index 00000000..4f61c30e
--- /dev/null
+++ b/apps/web/src/components/footer/dynamic.tsx
@@ -0,0 +1,42 @@
+'use client'
+
+import { ActiveLink } from '@/components/active-link'
+import { useAgentic } from '@/components/agentic-provider'
+
+export function DynamicFooter() {
+ const ctx = useAgentic()
+
+ return (
+ <>
+ {ctx?.isAuthenticated ? (
+ <>
+
+
+ Dashboard
+
+
+
+
+
+ Logout
+
+
+ >
+ ) : (
+ <>
+
+
+ Log in
+
+
+
+
+
+ Sign up
+
+
+ >
+ )}
+ >
+ )
+}
diff --git a/apps/web/src/components/footer/index.tsx b/apps/web/src/components/footer/index.tsx
new file mode 100644
index 00000000..cc8eab0c
--- /dev/null
+++ b/apps/web/src/components/footer/index.tsx
@@ -0,0 +1,198 @@
+import Link from 'next/link'
+
+import { ActiveLink } from '@/components/active-link'
+import { GitHubIcon } from '@/icons/github'
+import { TwitterIcon } from '@/icons/twitter'
+import { copyright, githubUrl, twitterUrl } from '@/lib/config'
+
+import { DynamicFooter } from './dynamic'
+
+export function Footer() {
+ return (
+
+ )
+}
diff --git a/apps/web/src/components/header/dynamic.tsx b/apps/web/src/components/header/dynamic.tsx
new file mode 100644
index 00000000..ce5a5e14
--- /dev/null
+++ b/apps/web/src/components/header/dynamic.tsx
@@ -0,0 +1,34 @@
+'use client'
+
+import { ActiveLink } from '@/components/active-link'
+import { useAgentic } from '@/components/agentic-provider'
+
+export function DynamicHeader() {
+ const ctx = useAgentic()
+
+ return (
+ <>
+ {ctx?.isAuthenticated ? (
+ <>
+
+ Dashboard
+
+
+
+ Logout
+
+ >
+ ) : (
+ <>
+
+ Log in
+
+
+
+ Sign up
+
+ >
+ )}
+ >
+ )
+}
diff --git a/apps/web/src/components/header/index.tsx b/apps/web/src/components/header/index.tsx
index 125bf814..3a75f39d 100644
--- a/apps/web/src/components/header/index.tsx
+++ b/apps/web/src/components/header/index.tsx
@@ -1,32 +1,24 @@
-'use client'
-
-import { useTheme } from 'next-themes'
-
import { ActiveLink } from '@/components/active-link'
-import { useAgentic } from '@/components/agentic-provider'
import { DarkModeToggle } from '@/components/dark-mode-toggle'
-import { docsUrl } from '@/lib/config'
import { cn } from '@/lib/utils'
+import { DynamicHeader } from './dynamic'
import styles from './styles.module.css'
export function Header() {
- // TODO: use CSS for this instead of a hook
- const { resolvedTheme } = useTheme()
- const ctx = useAgentic()
-
return (