Last updated: 2026-06-12. This doc captures the product shape and the path from
demo to launch. The demo (this repo, bun run dev) is the source of truth for
look & feel; this doc is the source of truth for what comes next.
Agents are only as useful as what they can reach. The services they need expose a fragmented mess of interfaces — MCP servers, REST/OpenAPI, GraphQL, CLIs — and that fragmentation is fine; what's missing is the map: one place that says "here is everything {provider} exposes, and here is exactly how to authenticate to each interface."
Auth is the bet. Discovery takes a minute; auth takes an hour. Every curated page leads with a grounded, cited, dated auth guide.
/homepage — vision statement, instant search, format counts, curated provider grid, agent-readable registry callout, Executor band./<provider>/curated pages (e.g./todoist/) — the SEO asset. Connect tabs (Claude Code / Cursor / Executor / curl), grounded auth guide with citations + verified date, interface cards with endpoints/auth/docs, links down into the raw catalog./browse/— the full raw catalog (3.6k records), client-side search + kind filters over/api.json, popularity-sorted, URL-addressable state./<kind>/<slug>/raw pages — one per catalog record, with derived connect snippets where the data allows, and an upsell banner to the curated page when one exists./vision/— the narrative, for humans and for backlinks./api.json— the whole registry as one JSON file. The page you read and the data your agent fetches are the same content.
Two-layer data model:
- Raw catalog (
output/*.json, fromscripts/normalize.ts): aggregated feeds, noisy by design, breadth. - Curated providers (
curated/*.json, schema insrc/lib/types.ts, spec incurated/GENERATION.md, validator inscripts/validate-curated.ts): one record per company, every interface, grounded auth guide. Quality. The 12 records currently in the repo are demo seeds.
Curated records must come from a repeatable cheap-model batch pipeline, not hand-editing and not main-loop agent work:
- Select the next N providers by demand signal (catalog popularity, search-console queries once live, Executor telemetry).
- Gather grounding per provider with plain fetches: official docs pages (auth, MCP, API reference), plus catalog hints (known remote URLs, auth types) as leads.
- Generate with a cheap model (e.g. Gemini 2.5 Flash — API key in Rhys's
1Password) using
curated/GENERATION.mdas the system prompt, emitting theProviderJSON schema. - Verify mechanically:
validate-curated.ts(schema, citation presence, placeholder-not-credential checks) + live MCP endpoint probes (the unauthenticatedinitializePOST → 401-with-WWW-Authenticate = OAuth, 200 = authless). Only probed records getverified: true. - Review diffs in PRs — generated records land as commits, never directly to prod.
- Refresh on a schedule (monthly, or when a probe starts failing), with
generatedAtexposed on-page so staleness is honest.
- Keep the raw layer raw; never hand-fix records. Fix the pipeline (normalize.ts dedup rules, version-collapsing for OpenAPI specs like GitHub's 20 GHES versions, favicon fallbacks).
- The curated layer is the noise answer users see: search ranks curated first.
- Add a quality score per raw record (has icon, has live endpoint, has tools, feed count) and use it for default sort/filtering.
- Grow sources: MCP registry (registry.modelcontextprotocol.io), fig completion specs (CLI surface), skills.sh (skills), Google Discovery.
- Target queries: "{provider} api auth", "{provider} mcp server", "connect {agent} to {provider}". Curated pages are the landing pages.
- Static HTML, canonical URLs, TechArticle JSON-LD with dateModified, fast pages — all in place in the demo. Add a sitemap and per-kind hub pages next.
- Long-tail raw pages (3.6k indexed) catch breadth queries and funnel up to curated pages via the banner.
- The Executor band on every funnel surface is the conversion path: integrations.sh is the top of Executor's funnel.
- Connect tabs include an Executor snippet on every page where a source is
derivable (
addSourcewith the spec/endpoint). - Worker already tracks
executoruser-agent hits in PostHog — the registry is designed to be read by Executor itself for in-product source search. - Next: an
executor add integrations.sh/<provider>deep-link format agreed with the Executor CLI, and a?from=integrations.shattribution param.
- Naming: "curated" vs "verified" vs "providers" for the clean layer.
- Whether
/api.jsonshould split into/api/providers.json(curated) and/api/catalog.json(raw) as the curated layer grows. - CLI ingestion: fig specs are 600+ commands — separate kind (
cli) in the raw catalog, or curated-only until demand shows up?