{"slug": "i-let-a-team-of-ai-agents-build-and-run-a-real-website-and-charge-other-ai-to-it", "title": "I let a team of AI agents build and run a real website — and charge other AI agents to read it", "summary": "A developer built ChangeGamer, a website designed for AI agents to read and pay for content using the HTTP 402 Payment Required status code. The site uses a hierarchy of AI agents to write, fact-check, and review content, with premium resources gated behind machine-readable payment contracts. The project demonstrates that AI agents can effectively create verified content but struggle with coordination and independent task prioritization.", "body_md": "A few weeks ago I wanted to answer one specific question: can a hierarchy of AI agents run a real website end-to-end — decide what to build, write and fact-check the content, review each other's code, and merge it — while I do nothing but approve direction and pay the bill?\n\nThe result is [ChangeGamer](https://changegamer.ai). It's deliberately weird in two ways: it's built for *machines* to read, not humans, and its premium content is gated behind an HTTP `402 Payment Required`\n\nresponse designed for an AI agent to parse — not a human to click.\n\nHere's how it works, what's real, and what's still broken.\n\nEvery resource ships in parallel formats from a single source:\n\n`/resources/<slug>.md`\n\n),`/api/resources/<slug>.json`\n\n),`/llms.txt`\n\nOne TypeScript array is the source of truth; the Astro build fans it out into all of those. Add one object and the page, the markdown, the JSON, the llms.txt line, and the feed entry all appear. That \"write once, emit every machine format\" property is the whole point.\n\n`402 Payment Required`\n\nwas reserved decades ago \"for future use\" and basically never used. It's perfect for the agent economy: a server can tell a *program* \"this costs money\" in a way the program can act on.\n\nWhen an agent fetches a premium resource without a key, a Cloudflare Worker returns a 402 with a machine-readable body:\n\n```\n{\n  \"error\": \"payment_required\",\n  \"resource\": \"data-formats\",\n  \"price_usd\": \"0.05\",\n  \"payment_url\": \"https://buy.stripe.com/...\",\n  \"how_to_pay\": \"Buy an access key at payment_url, then retry with Authorization: Bearer <key>.\",\n  \"terms\": \"https://changegamer.ai/resources/access-and-pricing.md\",\n  \"license\": \"https://changegamer.ai/license.xml\",\n  \"pricing_catalog\": \"https://changegamer.ai/api/pricing.json\",\n  \"preview\": {\n    \"title\": \"Data Formats & Schema\",\n    \"description\": \"Canonical data formats and schema conventions.\",\n    \"sections\": [\"Supported formats\", \"Schema conventions\"]\n  }\n}\n```\n\nDesign goals:\n\n`preview`\n\nso the agent isn't buying blind`/llms.txt`\n\n, the index, robots.txt, the license, and the onboarding/pricing pages are always free — you can't sell access to something an agent can't first discover.One shared function builds the body, so the HTTP gate and the MCP server return byte-identical payment contracts:\n\n``` js\nfunction build402Body(slug, env, how_to_pay) {\n  const resource = resources.find((r) => r.slug === slug);\n  const sections = resource\n    ? resource.body.split('\\n').filter((l) => l.startsWith('## ')).map((l) => l.slice(3).trim())\n    : [];\n  return {\n    error: 'payment_required',\n    resource: slug,\n    price_usd: env.PRICE_USD ?? '0.05',\n    payment_url: env.PAYMENT_URL,\n    how_to_pay,\n    terms: 'https://changegamer.ai/resources/access-and-pricing.md',\n    license: 'https://changegamer.ai/license.xml',\n    pricing_catalog: 'https://changegamer.ai/api/pricing.json',\n    preview: { title: resource?.title, description: resource?.description, sections },\n  };\n}\n```\n\nPayment itself is mundane on purpose: Stripe payment links, a webhook that mints a `cg_...`\n\nkey into Cloudflare KV, and the agent retries with `Authorization: Bearer <key>`\n\n. (Once agents have their own wallets, the same 402 contract works with on-chain settlement — see the x402 protocol — but I didn't want the whole thing to depend on crypto.)\n\nThis is the part people are skeptical about, fairly. It's not one magic agent; it's a small org chart:\n\nThe honest version: it works, but it isn't hands-off magic. The agents are genuinely good at **verified content** — every fact and URL gets web-checked, and the gatekeeper has caught real mistakes (a wrong RFC number, a model's license stated incorrectly, an over-claimed benchmark stat). They're worse at **coordination**: run several cycles in parallel and they collide on shared files; left alone they drift toward refreshing existing pages rather than breaking new ground.\n\nThat last point is the actual lesson. The interesting engineering — agents writing, reviewing, and shipping; a machine-readable paywall — was the easy 80%. Getting a single real visitor is the hard 20%, and no amount of autonomy fixes it.\n\n`https://changegamer.ai/mcp`\n\n`curl -i https://changegamer.ai/resources/data-formats.md`\n\nI'd genuinely like the skeptical questions — especially about letting agents own the merge button, and whether \"402 as an agent-payment handshake\" is a real pattern or a cute demo. What would make you trust (or never trust) a site run this way?", "url": "https://wpnews.pro/news/i-let-a-team-of-ai-agents-build-and-run-a-real-website-and-charge-other-ai-to-it", "canonical_source": "https://dev.to/beneb89/i-let-a-team-of-ai-agents-build-and-run-a-real-website-and-charge-other-ai-agents-to-read-it-34kj", "published_at": "2026-06-19 20:02:57+00:00", "updated_at": "2026-06-19 21:07:26.029434+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-infrastructure", "large-language-models", "ai-products"], "entities": ["ChangeGamer", "Cloudflare Workers", "Stripe", "Cloudflare KV", "Astro"], "alternates": {"html": "https://wpnews.pro/news/i-let-a-team-of-ai-agents-build-and-run-a-real-website-and-charge-other-ai-to-it", "markdown": "https://wpnews.pro/news/i-let-a-team-of-ai-agents-build-and-run-a-real-website-and-charge-other-ai-to-it.md", "text": "https://wpnews.pro/news/i-let-a-team-of-ai-agents-build-and-run-a-real-website-and-charge-other-ai-to-it.txt", "jsonld": "https://wpnews.pro/news/i-let-a-team-of-ai-agents-build-and-run-a-real-website-and-charge-other-ai-to-it.jsonld"}}