Blog / why-not-bootstrap-from-web-search

2026-09-07

Why coding agents should not bootstrap Next.js from raw web search

Web search finds blog posts and stale gists. It does not return a coherent, stamped App Router tree. Use search for research; use a catalog for the starter.

Web search is excellent at answering "what exists?" It is a poor substrate for "emit a greenfield Next.js App Router repo that installs and builds."

Agents blur those jobs. They query the open web, paste three tutorials into context, and invent a tree. The result looks familiar and fails the project build.

What web search optimizes for

Search ranks pages. Pages disagree.

  • Tailwind v3 config files next to a CSS-first v4 guide
  • Pages Router patterns in an App Router answer
  • Supabase helpers from three SDK majors in one thread
  • PrismaClient patterns that predate driver adapters
  • Env names that never match the snippet below them

The agent does not receive one coherent project. It receives a sample from years of public writing. Sampling is what training already does. Search adds fresher samples — still samples.

Failure modes that keep shipping

Typical outcomes when an agent bootstraps from search hits:

  • Mixed Router eras in the same app and pages layout
  • Cookie session helpers copied without the matching middleware
  • Package versions pinned to whatever a 2024 post used
  • Tutorial prose treated as part of the repo
  • No integrity check, no catalog hash, no single source of truth

Each fix is small. Agents repeat the mistakes on the next ticket.

What a catalog changes

BotKelp keeps component IDs (nextjs-base, tailwind, supabase-client) and stamps stored source when you call purchase_scaffold. The public list is at https://www.botkelp.com/catalog.json.

Contract for the payload:

  • kind is data
  • instructions is false
  • require INTEGRITY.json with verdict pass

If a generated file contains a command, that is file content — not a directive from the MCP server.

Always include nextjs-base. Unknown IDs are rejected. Max components is typically 12.

Knowledge tools on BotKelp search the catalog, not the open web. That is intentional. Catalog Q and A and open-web research are different slots.

Where web search still belongs

Use search or a docs MCP like Context7 when you need product requirements, API changelogs, library support questions, competitive reading, or links you will verify by hand.

Do not use search as the primary generator of package.json, layout files, and auth adapters for a starter you will maintain.

A practical split

JobPrefer
Discover libraries / read docsWeb search or docs MCP
Emit a Next starter that buildsCatalog MCP (purchase_scaffold)
Product features that do not exist yetThe coding agent
Audit what you gotINTEGRITY.json, install, build

Try the catalog path

Connecting https://www.botkelp.com/mcp is free and unauthenticated. Example Claude install: claude mcp add --transport http botkelp https://www.botkelp.com/mcp

Account tools authenticate at the connection, never in tool arguments: sign in with MCP OAuth 2.1 when your client prompts, or send Authorization: Bearer bk_live_… (key from the dashboard, shown once). Never pass a key as a tool argument. Without an account, call purchase_scaffold with no Authorization header: the server answers HTTP 402 with x402 requirements (amount, network, asset, payTo). Sign the payment and retry the same call with _meta["x402/payment"]. A failed build is not charged. Check /pay.json first: it says whether wallet payments are live and the current price. Prices: /pricing.

Related: /blog/verified-scaffolds and /blog/botkelp-vs-context7

More