> levels
> how we rate AI-agent friendliness
┌────────────────────────────────────────────────────────────┐
│ SCORING: 6 binary criteria per level. Need 4/6 to pass. │
│ Levels are CUMULATIVE: must pass all previous levels. │
│ L0 = doesn't meet L1 requirements. │
└────────────────────────────────────────────────────────────┘
╔═══════════════════════════════════════════╗ ║ LEVEL 1 - Basic Accessibility ║ ╚═══════════════════════════════════════════╝
l1_semantic_html
Uses semantic HTML elements (header, nav, main, article, section, footer) instead of just divs
l1_meta_tags
Has proper meta tags (title, description, og:tags, twitter:card)
l1_schema_org
Includes Schema.org JSON-LD structured data
l1_no_captcha
Does not block automated access with CAPTCHAs on public content
l1_ssr_content
Content is server-side rendered (visible in HTML source, not just JS-rendered)
l1_clean_urls
Uses clean, readable URLs (no excessive query params or hash fragments)
╔═══════════════════════════════════════════╗ ║ LEVEL 2 - Discoverability ║ ╚═══════════════════════════════════════════╝
l2_robots_txt
Has a robots.txt that allows legitimate bot access
l2_sitemap
Provides an XML sitemap
l2_llms_txt
Has a /llms.txt file describing the site for LLMs
l2_openapi_spec
Publishes an OpenAPI/Swagger specification for its API
l2_documentation
Has comprehensive, machine-readable documentation
l2_text_content
Primary content is text-based (not locked in images/videos/PDFs)
╔═══════════════════════════════════════════╗ ║ LEVEL 3 - Structured Interaction ║ ╚═══════════════════════════════════════════╝
l3_structured_api
Provides a structured REST or GraphQL API
l3_json_responses
API returns JSON responses with consistent schema
l3_search_filter_api
API supports search and filtering parameters
l3_a2a_agent_card
Has an A2A agent card at /.well-known/agent.json
l3_rate_limits_documented
Rate limits are documented and return proper 429 responses with Retry-After
l3_structured_errors
API returns structured error responses with error codes and messages
╔═══════════════════════════════════════════╗ ║ LEVEL 4 - Agent Integration ║ ╚═══════════════════════════════════════════╝
l4_mcp_server
Provides an MCP (Model Context Protocol) server
l4_webmcp
Supports WebMCP for browser-based agent interaction
l4_write_api
API supports write operations (POST/PUT/PATCH/DELETE), not just reads
l4_agent_auth
Supports agent-friendly authentication (API keys, OAuth client credentials)
l4_webhooks
Supports webhooks for event notifications
l4_idempotency
Write operations support idempotency keys
╔═══════════════════════════════════════════╗ ║ LEVEL 5 - Autonomous Operation ║ ╚═══════════════════════════════════════════╝
l5_event_streaming
Supports event streaming (SSE, WebSockets) for real-time updates
l5_agent_negotiation
Supports agent-to-agent capability negotiation
l5_subscription_api
Has a subscription/management API for agents
l5_workflow_orchestration
Supports multi-step workflow orchestration
l5_proactive_notifications
Can proactively notify agents of relevant changes
l5_cross_service_handoff
Supports cross-service handoff between agents