Make your content visible to AI agents across every discovery surface — llms.txt, a typed JSON index, per-page Markdown, robots.txt, Content-Signal headers, and JSON-LD — all generated from one store by Workers AI.
This is a Cloudflare Workers HTTP server exposing 14 endpoints for AI agent content discovery. Critical issues: (1) Tool names do NOT follow verb_noun convention, most are HTTP paths (GET /llms.txt, POST /api/resources) rather than action verbs (get_llms_txt, create_resource). LLMs cannot infer intent from path-style names. (2) Input schemas are MISSING for 10 of 14 tools, only tools 4, 5, 10, 11, 14 have visible parameter definitions. Tools 1-3, 6-9, 12-13 have no input schema at all, scoring 0 on schema. (3) Descriptions are present but generic and brief (avg ~80 chars), lacking LLM-optimized guidance on WHEN to use each tool vs alternatives. (4) No output schemas documented, agents cannot plan downstream calls. (5) No error handling guidance, responses are HTTP status codes with no recovery hints.
Web Bot Auth directory - serves public keys this site trusts for Web Bot Auth (RFC 9421, Ed25519) - only available when ENABLE_WEB_BOT_AUTH=true
Per-page schema.org JSON-LD - serves individual page metadata in JSON-LD format for semantic web crawlers
Per-page Markdown (groundable) - serves individual page content in Markdown format with title, summary, key points, and source information
List all indexed resources - returns count and array of all enriched resources
Get a single resource by slug - returns enriched resource metadata and content
Get site configuration and available surfaces - returns site metadata, Web Bot Auth status, and list of available agent discovery surfaces
Typed JSON index - structured-agent surface with protocol version, site metadata, and typed page records
Tool names are HTTP paths, not action verbs. 'GET /llms.txt' should be 'get_llms_txt' or 'fetch_llms_index'. Path-style names prevent LLMs from inferring intent without reading descriptions.
Input schemas missing for 10 of 14 tools. Tools 1-3, 6-9, 12-13 have no visible parameter definitions.
No output schemas documented. Agents cannot plan downstream calls or extract required fields (e.g., does /api/resources return pagination cursors? What fields are in each resource object?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 26 | 2026-07-28+ | v2 |
Site-level schema.org JSON-LD - serves website metadata and item list in JSON-LD format
Full content inlined (Markdown) - serves every page's full Markdown inlined
llms.txt index (Markdown) - serves enriched content store in llms.txt convention
Explicit AI-bot directives - serves robots.txt with explicit Allow directives for known AI agents and Content-Signal headers
Verify Web Bot Auth identity - verifies an Ed25519 signature over HTTP Message Signatures (RFC 9421) - only available when ENABLE_WEB_BOT_AUTH=true
Clear enrichment cache - clears the cached enriched resources so the next read re-enriches from raw content
Create or update a resource - accepts raw HTML/Markdown content, enriches it with Workers AI, and stores the enriched resource
Tool definitions are inferred from HTTP routes, not explicitly registered with MCP tool metadata.
No error handling guidance. HTTP status codes (404, 400, 500) provide no recovery hints. Descriptions lack 'when to use this tool' context vs alternatives.