From 3dddb60149b2671b34da45d8150e8ac48502af66 Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Tue, 1 Sep 2026 21:07:46 +0800 Subject: [PATCH] feat(www): publish agent discovery catalog and complete json-ld (#49768) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I added the agent-discovery surfaces the www app was missing: a resource catalog at `/.well-known/ard.json` plus completed structured data on the homepage. I scoped this from the agent-readiness gaps that are truthfully closable on the www side; the catalog lists only resources that already exist and serve 200 (MCP OAuth metadata, Management API OpenAPI spec, llms.txt, agent-skills index). **Changed:** - **Agents can discover our machine-readable resources from one document**: new static catalog at `/.well-known/ard.json` (Agentic Resource Discovery format); the legacy `/.well-known/ai-catalog.json` path serves the same file via rewrite, keeping a single source artifact. - **Organization JSON-LD carries verifiable company details**: adds `legalName`, a support `contactPoint`, and the registered address already public on our Terms of Service. - **Homepage declares the product as an application entity**: emits `SoftwareApplication` JSON-LD via the existing `softwareApplicationSchema` builder, same pattern as the vector module page. ## To test Tested on Vercel preview: - [ ] `curl /.well-known/ard.json`: expect 200 with a JSON catalog of 5 entries - [ ] `curl /.well-known/ai-catalog.json`: expect the same document with status 200 (rewrite, not a redirect) - [ ] View homepage page source: expect three `application/ld+json` scripts: Organization now includes `address` and `contactPoint`, and a `SoftwareApplication` block is present ## Linear - fixes GROWTH-1164 ## Summary by CodeRabbit - **New Features** - Added an Agent Resource Description catalog listing Supabase’s MCP, API, documentation, and agent skill resources. - Added support for the legacy AI Catalog URL through a canonical redirect. - Enhanced website structured data with software application details, legal information, support contact details, and business address. - **Tests** - Added validation ensuring discoverable `.well-known` resources are cataloged and resolve correctly. - **Chores** - Updated marketing site test coverage for `.well-known` resource changes. --- .github/workflows/www-tests.yml | 1 + apps/www/app/(home)/page.tsx | 21 +++++++- apps/www/ard-catalog.test.ts | 80 ++++++++++++++++++++++++++++ apps/www/lib/json-ld.ts | 13 +++++ apps/www/lib/rewrites.js | 5 ++ apps/www/public/.well-known/ard.json | 72 +++++++++++++++++++++++++ 6 files changed, 191 insertions(+), 1 deletion(-) create mode 100644 apps/www/ard-catalog.test.ts create mode 100644 apps/www/public/.well-known/ard.json diff --git a/.github/workflows/www-tests.yml b/.github/workflows/www-tests.yml index a29e1b4765c..96f2737cccf 100644 --- a/.github/workflows/www-tests.yml +++ b/.github/workflows/www-tests.yml @@ -10,6 +10,7 @@ on: - 'apps/www/lib/**/*.js' - 'apps/www/content/md/**' - 'apps/www/scripts/**/*.mjs' + - 'apps/www/public/.well-known/**' # Cancel old builds on new commit for same workflow + branch/PR concurrency: diff --git a/apps/www/app/(home)/page.tsx b/apps/www/app/(home)/page.tsx index 8aa34bd438c..d9c2094bff7 100644 --- a/apps/www/app/(home)/page.tsx +++ b/apps/www/app/(home)/page.tsx @@ -2,7 +2,13 @@ import type { Metadata } from 'next' import { FrameworksSection } from './_components/FrameworksSection' import { HomeContent } from './_components/HomeContent' -import { organizationSchema, serializeJsonLd, websiteSchema } from '@/lib/json-ld' +import { DEFAULT_META_DESCRIPTION } from '@/lib/constants' +import { + organizationSchema, + serializeJsonLd, + softwareApplicationSchema, + websiteSchema, +} from '@/lib/json-ld' import { mdAlternates } from '@/lib/md-alternates' export const metadata: Metadata = { @@ -23,6 +29,19 @@ export default function HomePage() { type="application/ld+json" dangerouslySetInnerHTML={{ __html: serializeJsonLd(websiteSchema()) }} /> +