{"slug": "an-agent-lands-on-your-homepage-what-can-it-actually-read", "title": "An Agent Lands on Your Homepage — What Can It Actually Read?", "summary": "AgentBadge generated its entire machine-readable discovery surface from live code sources, publishing eleven manifests — including A2A agent-card.json, MCP server-card.json, llms.txt, and a did:web document — all served free and without authentication. The manifests are projections of the same runtime sources (OpenAPI spec, route config, blog data, SKU catalog) and are regenerated via `bun run gen:discovery`, with a `git diff --exit-code` check in CI that fails the build if any manifest drifts from code. The site also returns markdown via `Accept: text/markdown` and runs its own 142-rule readiness scanner against itself in CI, requiring a 100% pass.", "body_md": "An AI agent evaluating a vendor does what a human does: it opens the site and looks for proof. The difference is speed and format — the agent gives you seconds, not minutes, and it wants JSON, not hero banners. Until recently, an agent landing on agentbadge.xyz found a page built for humans and nothing else — while our own readiness scanner was grading *other* sites on exactly the signals we lacked. The cobbler had no shoes. We fixed that: the entire discovery surface is now **generated from live sources**, served free with no auth, and verified by our own scanner in CI.\n\nEleven machine-readable manifests, all `200 OK`, all free, all generated — not hand-maintained:\n\n```\n/.well-known/agent-card.json        A2A v1.0 — who we are, skills[]\n/.well-known/api-catalog            RFC 9727 linkset — every API entry\n/.well-known/erc8004-agent.json     on-chain identity registration\n/.well-known/mcp/server-card.json   MCP capabilities + tools surface\n/.well-known/agent-evaluation.json  verification ladder (claims→refs)\n/.well-known/owner-questions.json   \"who runs this\" for due-diligence\n/.well-known/did.json               did:web:agentbadge.xyz document\n/.well-known/did-configuration.json signed domain linkage (VC-JWT)\n/.well-known/jwks.json              real Ed25519 key, kid'd\n/.well-known/security.txt           RFC 9116, Expires generated +1y\n/llms.txt                           agent-oriented sitemap\n```\n\nThe agent-card alone answers the A2A handshake: name, provider, `supportedInterfaces[]`, `skills[]` with tags and examples, and `securitySchemes` declaring `x402` as the payment rail. One GET and a foreign agent knows our identity, capabilities, and how to pay.\n\nNot from a copywriter — from the code itself. A manifest registry collects the same live sources the runtime uses (`openapi.ts`, route config, `blog-data.ts`, the SKU catalog), and every manifest is a **projection** of that truth:\n\n`bun run gen:discovery` writes snapshots under `public/.well-known/`; manual edits are banned.` git diff --exit-code` — if a manifest drifted from code, the build fails.\nOurs *cannot go stale* without the build telling us.\n\n`llms.txt` — the de-facto convention for telling an LLM \"start here\": H1 title, a blockquote describing the platform, `##` sections of named links. Ours is generated with machine-readable entry points, quick start, free and paid endpoints — and the services section anchors into the same `/api/v1/services` catalog that powers the bazaar extension on every 402.\n\nBecause the reader might not be a browser. `Accept: text/markdown` on any page returns the markdown representation — verified live:\n\n``` bash\n$ curl -sH \"Accept: text/markdown\" https://agentbadge.xyz/blog\ncontent-type: text/markdown; charset=utf-8\n```\n\nBlog articles carry `.md` mirrors too (`/blog/arc-c10-payer-binding.md` → `200 text/markdown`). HTML stays canonical; `<link rel=\"alternate\" type=\"text/markdown\">` points machines at the twin.\n\n`agent-evaluation.json` — a **verification ladder**: claims ordered by check-time, each with `action` + `ref`:\n\n```\n{\n  \"depth\": \"5s\",\n  \"checks\": [\n    { \"claim\": \"mainnet deployment — AgentEventLog on Arc\",\n      \"action\": \"open\",\n      \"ref\": \"https://explorer.arc.io/address/0x1bb6…4700\" }\n  ]\n}\n```\n\n5s: we exist on-chain and publish a card. 60s: manifest validity, live OpenAPI, refusal contract. Deeper: dogfood txs and audit trails. `owner-questions.json` answers enterprise due-diligence (operator, jurisdiction, contact) in the same shape.\n\nWe run our own scanner on ourselves — the same 142-rule engine that grades foreign sites: `mcp/server-card.json` (AB-006), `llms.txt` (AB-014), JSON-LD/OG (AB-015/016), `ai.txt` (AB-017) — against agentbadge.xyz in CI. **100% pass required.** A broken manifest fails our own product's grade on our own domain.\n\n`text/markdown`, `.md` mirrors on articles — generated, not hand-edited.`ai-plugin.json` (ChatGPT Plugins EOL 2024 — dead manifest is cargo cult); `/.well-known/agent.json` → `301` to `agent-card.json`.` curl https://agentbadge.xyz/.well-known/agent-card.json` — or scan us: `npx agentbadge-scan agentbadge.xyz`.\n*C14 in the Arc Campaign series. C15 continues — the agent found us, now it reads the price list.*\n\n*Originally published at [agentbadge.xyz](https://agentbadge.xyz/blog/arc-c14-agent-discovery).*", "url": "https://wpnews.pro/news/an-agent-lands-on-your-homepage-what-can-it-actually-read", "canonical_source": "https://dev.to/spread2009/an-agent-lands-on-your-homepage-what-can-it-actually-read-1llp", "published_at": "2026-10-09 09:14:53+00:00", "updated_at": "2026-10-09 09:21:42.837088+00:00", "lang": "en", "topics": ["agent-protocols", "ai-agents", "ai-crawlers", "structured-data", "developer-tools"], "entities": ["AgentBadge", "A2A", "MCP", "Arc", "Ed25519", "x402", "RFC 9727"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/an-agent-lands-on-your-homepage-what-can-it-actually-read", "markdown": "https://wpnews.pro/news/an-agent-lands-on-your-homepage-what-can-it-actually-read.md", "text": "https://wpnews.pro/news/an-agent-lands-on-your-homepage-what-can-it-actually-read.txt", "jsonld": "https://wpnews.pro/news/an-agent-lands-on-your-homepage-what-can-it-actually-read.jsonld"}}