[{"pattern_id":"robots_txt","category":"standard","user_types":["coding_agent","browser_agent"],"description":"robots.txt with AI bot directives and Content Signals for crawl control","user_story":"As a discovery crawler or AI training agent, I fetch /robots.txt to learn which paths I may access and whether content can be used for training, search, or agent input, because this is the universal entry point for automated access policies.","artifacts":["GET /robots.txt"],"detection_rule":"GET request to /robots.txt","standard_refs":["RFC 9309","Content Signals v1"]},{"pattern_id":"sitemap_xml","category":"standard","user_types":["coding_agent","browser_agent"],"description":"XML sitemap with canonical URLs for search engines and discovery agents","user_story":"As a web crawler or search indexer, I fetch /sitemap.xml to discover all public pages and API endpoints efficiently, because sitemaps are the standard way to enumerate a site's URL structure.","artifacts":["GET /sitemap.xml"],"detection_rule":"GET request to /sitemap.xml","standard_refs":["Sitemaps.org Protocol"]},{"pattern_id":"oauth_discovery","category":"emerging","user_types":["coding_agent"],"description":"OAuth protected resource metadata (RFC 9728) and OIDC discovery (RFC 8414)","user_story":"As an agent attempting to authenticate, I fetch /.well-known/oauth-protected-resource and /.well-known/openid-configuration to discover the authorization server and endpoints, because these RFCs standardize OAuth discovery.","artifacts":["GET /.well-known/oauth-protected-resource","GET /.well-known/openid-configuration"],"detection_rule":"GET request to /.well-known/oauth-protected-resource or /.well-known/openid-configuration","standard_refs":["RFC 8414","RFC 9728","OpenID Connect Discovery 1.0"]},{"pattern_id":"api_catalog","category":"emerging","user_types":["coding_agent"],"description":"RFC 9727 API catalog for automated API discovery via linkset format","user_story":"As an agent performing API discovery, I fetch /.well-known/api-catalog to find service-desc, service-doc, and status links in a machine-readable format, because RFC 9727 linksets are the standard way to advertise API metadata.","artifacts":["GET /.well-known/api-catalog"],"detection_rule":"GET request to /.well-known/api-catalog","standard_refs":["RFC 9727","RFC 9264"]},{"pattern_id":"mcp_server_card","category":"emerging","user_types":["coding_agent"],"description":"MCP Server Card (SEP-1649) for Model Context Protocol server discovery","user_story":"As an MCP client performing server discovery, I fetch /.well-known/mcp/server-card.json to learn the server's capabilities, transport endpoint, and tools, because SEP-1649 standardizes MCP server metadata.","artifacts":["GET /.well-known/mcp/server-card.json"],"detection_rule":"GET request to /.well-known/mcp/server-card.json","standard_refs":["SEP-1649","Model Context Protocol"]},{"pattern_id":"a2a_agent_card","category":"emerging","user_types":["coding_agent"],"description":"A2A agent card at /.well-known/agent.json (and agent-card.json alias)","user_story":"As an A2A client, I fetch /.well-known/agent.json to discover the agent's skills, auth, and I/O modes, because the A2A protocol standardizes agent discovery.","artifacts":["GET /.well-known/agent.json","GET /.well-known/agent-card.json"],"detection_rule":"GET request to /.well-known/agent.json or /.well-known/agent-card.json","standard_refs":["Google A2A Protocol"]},{"pattern_id":"llms_txt","category":"emerging","user_types":["coding_agent","browser_agent"],"description":"LLM-optimized documentation at /llms.txt generated from the surface registry","user_story":"As an LLM agent doing web-style discovery, I fetch /llms.txt to ingest a curated, model-tuned doc slice, because it is faster and cleaner than scraping marketing pages.","artifacts":["GET /llms.txt"],"detection_rule":"GET request to /llms.txt","standard_refs":["llms.txt"]},{"pattern_id":"link_headers","category":"emerging","user_types":["coding_agent","browser_agent"],"description":"RFC 8288 Link headers on the homepage for agent resource discovery","user_story":"As an agent fetching the homepage, I parse Link headers to discover the API catalog, agent card, and llms.txt without parsing HTML, because RFC 8288 Link headers provide machine-readable navigation.","artifacts":["Link header on GET /"],"detection_rule":"Link header present in response to GET /","standard_refs":["RFC 8288","RFC 9727"]},{"pattern_id":"agent_homepage","category":"standard","user_types":["coding_agent"],"description":"Agent-focused homepage listing discovery endpoints, tools, and registered surfaces","user_story":"As a coding agent, I fetch GET / to understand what this service exposes — discovery endpoints, available tools, and interaction surfaces — so I can decide how to interact with it.","artifacts":["GET /"],"detection_rule":"GET request to /"},{"pattern_id":"human_homepage","category":"standard","user_types":["human"],"description":"Human-readable homepage with styled layout, discovery links, and surface overview","user_story":"As a human visitor, I navigate to /?view=human to see a styled overview of the service — what it does, what discovery endpoints exist, and what surfaces are registered — without needing to parse machine-formatted data.","artifacts":["GET /?view=human"],"detection_rule":"GET request to / with query parameter view=human"},{"pattern_id":"site_tool_invocation","category":"standard","user_types":["coding_agent"],"description":"HTTP endpoints for querying the surface catalog programmatically","user_story":"As an agent, I POST to /api/tools/list_surfaces or /api/tools/get_surface to query the catalog, because these traced tool endpoints let me discover and inspect every surface the site exposes.","artifacts":["POST /api/tools/list_surfaces","POST /api/tools/get_surface"],"detection_rule":"POST request to /api/tools/list_surfaces or /api/tools/get_surface"}]