AI Readiness
AI Readiness
Measures how well a domain is prepared for autonomous AI agents — LLM crawlers, ChatGPT plugins, MCP clients, and agentic browsers. The scan probes ~12 well-known files, protocol endpoints, and HTTP behaviors that together signal whether software (not just humans) can discover, navigate, transact with, and reliably consume your site.
Common Uses
- Auditing your own domain before launching an agent-facing product
- Comparing competitors' agent readiness
- Triaging which agentic-web signals are quickest to add for the biggest score lift
Why It Matters
As LLMs move from chat windows to active agents that fetch URLs, call APIs, and pay for services, sites that don't expose machine-readable affordances become invisible. AI readiness is the SEO of the agentic web: a site that scores well today is reachable by tomorrow's autonomous tooling.
History
The category emerged in 2023–2024 as OpenAI's plugin manifest, Anthropic's MCP protocol, the llms.txt convention, and Coinbase's x402 payment standard converged into a loose set of 'agent-readable' web conventions. Public scorers like AgentGrade popularized treating these as a single graded measure.
How well prepared is github.com for AI agents and the agentic web?
AI Specs
1/5llms.txt
A markdown-style overview file served at the site root that summarizes your site's purpose, key pages, and content priorities specifically for large language models. It complements robots.txt and sitemap.xml by giving LLMs human-curated structure instead of forcing them to crawl and infer.
Common Uses
- Telling an LLM what your product does in 2–3 paragraphs without it having to read your homepage
- Listing canonical URLs for docs, pricing, API reference, status page
- Highlighting which content is authoritative when multiple sources exist
Why It Matters
LLM context windows are limited; serving a llms.txt lets an agent decide which of your URLs are worth fetching instead of spending its budget on navigation HTML. Without it, agents either ignore the site or fetch low-value pages.
History
Proposed by Jeremy Howard at Answer.AI in September 2024 (llmstxt.org). It draws inspiration from robots.txt and humans.txt, but is markdown-formatted so the file itself is directly consumable by an LLM.
# GitHub > GitHub is a developer platform for building, shipping, and maintaining software. It provides cloud-based Git repository hosting, CI/CD via GitHub Actions, project management with Issues and Projects, code review via pull requests, AI-powered development with GitHub Copilot, and APIs (REST and GraphQL) for automation and integration. ## How to use To retrieve full article content, page lists, or search results programmatically, please use the APIs below. To find a specific article, use the **Search API** with a query. To browse all available pages, use the **Page List API** to get a list of paths, then fetch individual articles with the **Article API**. The `/api/article/body` endpoint returns markdown, ideal for LLM consumption. These APIs return structured markdown and JSON and are the preferred way for LLMs and automated tools to access GitHub documentation. * [Versions API](https://docs.github.com/api/pagelist/versions): Lists all available documentation versions. * [Languages API](https://docs.github.com/api/pagelist/languages): Lists all available languages. * [Page List API](https://docs.github.com/api/pagelist/en/free-pro-team@latest): Returns every docs page path for a given language and version. * [Article API](https://docs.github.com/api/article): Returns the full rendered content and context of any docs page as JSON. Example: `curl "https://docs.github.com/api/article?pathname=/en/get-started/start-your-journey/about-github-and-git"` * [Article Body API](https://docs.github.com/api/article/body): Returns the full rendered content of any docs page as markdown. Example: `curl "https://docs.github.com/api/article/body?pathname=/en/get-started/start-your-journey/about-github-and-git"` * [Search API](https://docs.github.com/api/search/v1): Search across all docs content. Example: `curl "https://docs.github.com/api/search/v1?query=actions&language=en&version=free-pro-team@latest"` * [GitHub MCP server](https://github.com/github/github-mcp-server) … (truncated)
agents.txt
A discovery file at /.well-known/agents.txt listing the AI agents you operate, their capabilities, and how to reach them. Analogous to security.txt for security contacts — it tells visiting agents which sibling agents they can collaborate with.
Common Uses
- Publishing the URL of your customer-support agent or chat assistant
- Listing MCP/A2A endpoints with a short capability description
- Helping multi-agent systems discover peer agents during a task
Why It Matters
As agent-to-agent (A2A) collaboration becomes common, sites need a predictable place to advertise which agents they expose. Without agents.txt, peer discovery falls back to guessing or hardcoded directories.
History
Convention emerged in 2024 alongside the A2A protocol and the broader push for .well-known files (RFC 8615) to describe agent capabilities. Not yet a formal standard but widely scanned by agent readiness tools.
ai-plugin.json
A JSON manifest at /.well-known/ai-plugin.json describing a plugin or tool that an LLM can call. It declares the plugin's name, description, authentication scheme, and a pointer to an OpenAPI spec defining the actual endpoints.
Common Uses
- Exposing your API to ChatGPT, Claude, or another LLM as a callable tool
- Letting an LLM consume your service without bespoke integration code
- Bundling auth metadata (none, bearer, OAuth) so the agent knows how to authenticate
Valid Settings
Required fields: schema_version, name_for_human, name_for_model, description_for_human, description_for_model, auth, api (with type and url pointing to an OpenAPI spec). Optional: logo_url, contact_email, legal_info_url.
Why It Matters
While OpenAI deprecated its first-party plugin store in 2024, the ai-plugin.json shape became the de facto manifest format reused across multiple agent platforms. It is the cheapest way to make an existing REST API LLM-callable.
History
Introduced by OpenAI in March 2023 with the original ChatGPT Plugins beta. The store closed in April 2024, but the manifest format persists as a portable way to describe LLM-callable APIs.
OpenAPI spec
A machine-readable description of your HTTP API — endpoints, parameters, request/response schemas, and authentication. When published at a predictable URL like /openapi.json, agents can read it and call your API without any custom code.
Common Uses
- Pairing with ai-plugin.json to fully describe an LLM-callable tool
- Letting an agent generate typed client code on the fly
- Enabling automated API consumers to discover new endpoints as you ship them
Valid Settings
Must include 'openapi' (3.x) or 'swagger' (2.x) version field, plus 'info' and 'paths' objects. Public APIs should publish at /openapi.json or /openapi.yaml; the path is conventional rather than mandated.
Why It Matters
OpenAPI is the lingua franca between human documentation and agent execution. Without it, every agent integration is a one-off scraping or hand-coded job.
History
Originally Swagger (2010, SmartBear). Donated to the Linux Foundation in 2015 and renamed OpenAPI. Versions 2.0, 3.0, and 3.1 are all in active use; 3.1 added full JSON Schema 2020-12 alignment.
Markdown content negotiation
Whether the homepage returns text/markdown when an agent sends 'Accept: text/markdown'. Markdown is dramatically more token-efficient than HTML for LLM consumption — same content, fraction of the tokens — and Cloudflare's Agent Readiness Score singles it out as the entire 'Content' category.
Common Uses
- Letting agents fetch the markdown source of a page instead of paying tokens to parse HTML
- Serving the same URL to both browsers and agents via HTTP content negotiation
- Reducing context-window usage by 5–10× per page for agent workflows
Valid Settings
When the request includes 'Accept: text/markdown' (or 'text/x-markdown'), respond with Content-Type 'text/markdown; charset=utf-8' and the markdown source of the page. Implemented in nginx via map directives, in Cloudflare Workers, or in application code.
Why It Matters
As of 2026 only ~3.9% of sites support markdown negotiation, but the adopters tend to be the ones agents prefer to cite. Cheap to implement and a big win for agent compatibility.
History
HTTP content negotiation was standardized in RFC 2616 (1999); 'text/markdown' was registered as a MIME type via RFC 7763 in 2016. Cloudflare popularized the agent-readiness angle in 2025 with its Agent Readiness Score.
Discovery
0/3MCP endpoint
Model Context Protocol — an open standard from Anthropic that lets LLMs call tools, read resources, and fetch prompts from a server over JSON-RPC. The scan prefers a Server Card at /.well-known/mcp/server-card.json (the spec-conformant discovery path) and falls back to probing /.well-known/mcp, /mcp, or /api/mcp directly.
Common Uses
- Making your data sources callable as 'tools' from Claude Desktop, ChatGPT, or any MCP client
- Exposing live read-only resources (logs, dashboards, internal docs) to agents
- Building a remote agent backend that several LLM clients can share
Valid Settings
Best case: publish a Server Card JSON at /.well-known/mcp/server-card.json describing the server's name, version, and transports (streamable-http, sse). Otherwise the live endpoint should return SSE events at /mcp or /api/mcp, or respond with HTTP 405 to a GET (signaling POST is expected).
Why It Matters
MCP is rapidly becoming the dominant way LLMs consume third-party tools. The Server Card lets agents discover capability metadata without making a request — Cloudflare's Agent Readiness Score weights this as a high-signal capability.
History
Released as an open spec by Anthropic in November 2024. Adopted by Claude Desktop, then by OpenAI, Google, Microsoft, and dozens of independent clients within months. The Server Card discovery file emerged in 2025 as the canonical pre-flight discovery path.
<!DOCTYPE html>
<html
lang="en"
data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
data-a11y-animated-images="system" data-a11y-link-underlines="true"
>
<head>
<meta charset="utf-8">
<link rel="dns-prefetch" href="https://github.githubassets.com">
<link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
<link rel="preconnect" href="https://github.githubassets.com" crossorigin>
<link rel="preconnect" href="https://avatars.githubusercontent.com">
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-4fded0090af0ad58.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-06381ff23d863842.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-9023e6605402defb.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-4fded0090af0ad58.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-3a437477a570cc40.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-39b6c209db5491c9.css" /><link
… (truncated)
x402 payments
An open payment protocol that uses the long-dormant HTTP 402 Payment Required status code so agents can pay for API calls inline. A site advertises x402 support by publishing /.well-known/x402.json describing its paid endpoints, accepted networks, and recipient wallet.
Common Uses
- Charging an agent a few cents per API call without an account or API key handshake
- Letting autonomous agents transact across services using stablecoins
- Monetizing premium endpoints (data feeds, premium docs, AI inference) per-request
Valid Settings
The discovery manifest must include x402Version (1 or 2), payTo (wallet address), and a non-empty services[] array describing paid endpoints. Paid endpoints themselves should return HTTP 402 with a PAYMENT-REQUIRED header for unauthenticated requests.
Why It Matters
Agent commerce is one of the biggest open problems in the agentic web. x402 collapses signup + key issuance + invoicing into a single HTTP exchange, removing the friction that today blocks most agent-to-API transactions.
History
Introduced by Coinbase in 2024 as an open standard. The HTTP 402 status code itself has existed since RFC 1945 (1996) but was reserved 'for future use' — x402 finally puts it to work.
robots.txt AI bots
Explicit User-agent stanzas in your robots.txt for AI crawlers — GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot, anthropic-ai, Applebot-Extended, OAI-SearchBot. Even an 'Allow: /' line counts because it shows the crawler is on your radar.
Common Uses
- Letting your content be indexed by AI search products like ChatGPT search and Perplexity
- Blocking AI training crawlers while still allowing AI search crawlers (or vice versa)
- Signaling crawl rate limits to specific AI bots
Valid Settings
Each bot needs its own 'User-agent:' stanza followed by Allow/Disallow rules. The scan looks for at least one of the known AI-bot user agents. A wildcard 'User-agent: *' alone does not pass — it's too generic to count as an explicit AI policy.
Why It Matters
AI crawlers default to either crawling everything or nothing depending on the operator. An explicit policy is the difference between intentional inclusion and accidental scraping, and a clear signal to AI products that you have an opinion about agent access.
History
GPTBot launched in August 2023, ClaudeBot in 2024, followed by Google-Extended and others. By 2025, leading sites publish explicit AI-bot policies in addition to the original 1994 robots.txt rules for traditional search.
# If you would like to crawl GitHub contact us via https://support.github.com?tags=dotcom-robots # We also provide an extensive API: https://docs.github.com User-agent: bingbot Disallow: /ekansa/Open-Context-Data Disallow: /ekansa/opencontext-* Disallow: /account-login Disallow: */tarball/ Disallow: */zipball/ Disallow: /Explodingstuff/ Disallow: /copilot/ Disallow: /copilot/c/ User-agent: adidxbot Disallow: /ekansa/Open-Context-Data Disallow: /ekansa/opencontext-* Disallow: /account-login Disallow: */tarball/ Disallow: */zipball/ Disallow: /Explodingstuff/ Disallow: /copilot/ Disallow: /copilot/c/ User-agent: BingPreview Disallow: /ekansa/Open-Context-Data Disallow: /ekansa/opencontext-* Disallow: /account-login Disallow: */tarball/ Disallow: */zipball/ Disallow: /Explodingstuff/ Disallow: /copilot/ Disallow: /copilot/c/ User-agent: baidu crawl-delay: 1 User-agent: * Disallow: /*/*/pulse Disallow: /*/*/projects Disallow: /*/*/forks Disallow: /*/*/issues/new Disallow: /*/*/milestones/new Disallow: /*/*/issues/search Disallow: /*/*/commits/ Disallow: /*/*/branches Disallow: /*/*/contributors Disallow: /*/*/tags Disallow: /*/*/stargazers Disallow: /*/*/watchers Disallow: /*/*/network Disallow: /*/*/graphs Disallow: /*/*/compare Disallow: /*/tree/ Disallow: /gist/ Disallow: /*/download Disallow: /*/revisions Disallow: /*/commits/*?author Disallow: /*/commits/*?path Disallow: /*/comments Disallow: /*/archive/ Disallow: /*/blame/ Disallow: /*/raw/ Disallow: /*/cache/ Disallow: /.git/ Disallow: */.git/ Disallow: /*.git$ Disallow: /search/advanced Disallow: /search$ Disallow: /*q= Disallow: /*.atom$ Disallow: /ekansa/Open-Context-Data Disallow: /ekansa/opencontext-* Disallow: */tarball/ Disallow: */zipball/ Disallow: /*source=* Disallow: /*ref_cta=* Disallow: /*plan=* Disallow: /*return_to=* Disallow: /*ref_loc=* Disallow: /*setup_organization=* Disallow: /*source_repo=* Disallow: /*ref_page=* Disallow: /*source=* Disallow: /*referrer=* Disallow: /*report=* Disall … (truncated)
{
"host": "github.com",
"score": 13,
"grade": "F",
"passed": 1,
"total": 8,
"groups": {
"AI Specs": [
{
"id": "llms_txt",
"group": "AI Specs",
"label": "llms.txt",
"description": "Plain-text site summary aimed at LLM consumers.",
"status": "pass",
"detail": "Found (28766 bytes)",
"remediation": "Publish /llms.txt with a markdown-style site overview (see llmstxt.org).",
"evidence": [
{
"url": "https://github.com/llms.txt",
"status": 200,
"content_type": "text/plain",
"body": "# GitHub\n\n> GitHub is a developer platform for building, shipping, and maintaining software. It provides cloud-based Git repository hosting, CI/CD via GitHub Actions, project management with Issues and Projects, code review via pull requests, AI-powered development with GitHub Copilot, and APIs (REST and GraphQL) for automation and integration.\n\n## How to use\n\nTo retrieve full article content, page lists, or search results programmatically, please use the APIs below. To find a specific article, use the **Search API** with a query. To browse all available pages, use the **Page List API** to get a list of paths, then fetch individual articles with the **Article API**. The `/api/article/body` endpoint returns markdown, ideal for LLM consumption. These APIs return structured markdown and JSON and are the preferred way for LLMs and automated tools to access GitHub documentation.\n\n* [Versions API](https://docs.github.com/api/pagelist/versions): Lists all available documentation versions.\n* [Languages API](https://docs.github.com/api/pagelist/languages): Lists all available languages.\n* [Page List API](https://docs.github.com/api/pagelist/en/free-pro-team@latest): Returns every docs page path for a given language and version.\n* [Article API](https://docs.github.com/api/article): Returns the full rendered content and context of any docs page as JSON. Example: `curl \"https://docs.github.com/api/article?pathname=/en/get-started/start-your-journey/about-github-and-git\"`\n* [Article Body API](https://docs.github.com/api/article/body): Returns the full rendered content of any docs page as markdown. Example: `curl \"https://docs.github.com/api/article/body?pathname=/en/get-started/start-your-journey/about-github-and-git\"`\n* [Search API](https://docs.github.com/api/search/v1): Search across all docs content. Example: `curl \"https://docs.github.com/api/search/v1?query=actions&language=en&version=free-pro-team@latest\"`\n* [GitHub MCP server](https://github.com/github/github-mcp-server)",
"truncated": true
}
]
},
{
"id": "agents_txt",
"group": "AI Specs",
"label": "agents.txt",
"description": "Discovery file listing AI agents and capabilities.",
"status": "fail",
"detail": "Not found",
"remediation": "Publish /.well-known/agents.txt listing agent endpoints.",
"evidence": [
{
"url": "https://github.com/.well-known/agents.txt",
"status": 404,
"content_type": "text/plain; charset=utf-8",
"body": "Not Found",
"truncated": false
}
]
},
{
"id": "ai_plugin",
"group": "AI Specs",
"label": "ai-plugin.json",
"description": "OpenAI/ChatGPT plugin manifest.",
"status": "fail",
"detail": "Not found",
"remediation": "Publish /.well-known/ai-plugin.json describing your plugin (schema_version, name_for_human, etc.).",
"evidence": [
{
"url": "https://github.com/.well-known/ai-plugin.json",
"status": 404,
"content_type": "application/json; charset=utf-8",
"body": "{\n \"error\": \"Not Found\"\n}",
"truncated": false
}
]
},
{
"id": "openapi",
"group": "AI Specs",
"label": "OpenAPI spec",
"description": "Machine-readable API specification.",
"status": "fail",
"detail": "Not found",
"remediation": "Publish your OpenAPI spec at /openapi.json so agents can discover your API surface.",
"evidence": [
{
"url": "https://github.com/openapi.json",
"status": 410,
"content_type": "application/json; charset=utf-8",
"body": "{\n \"message\": \"Hello there, wayfaring stranger. If you\u2019re reading this then you probably didn\u2019t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.\",\n \"documentation_url\": \"https://docs.github.com/v3/activity/events/#list-public-events-performed-by-a-user\"\n}",
"truncated": false
}
]
},
{
"id": "markdown_negotiation",
"group": "AI Specs",
"label": "Markdown content negotiation",
"description": "Serves text/markdown when an agent requests Accept: text/markdown.",
"status": "fail",
"detail": "No markdown content negotiation",
"remediation": "Return text/markdown for the root URL when the client sends Accept: text/markdown (per RFC 7231 content negotiation).",
"evidence": [
{
"url": "https://github.com/",
"status": 406,
"content_type": "text/html; charset=utf-8",
"body": "",
"truncated": false
}
]
}
],
"Discovery": [
{
"id": "mcp",
"group": "Discovery",
"label": "MCP endpoint",
"description": "Model Context Protocol server for AI agents.",
"status": "fail",
"detail": "No MCP endpoint or Server Card found",
"remediation": "Publish /.well-known/mcp/server-card.json or expose an MCP server at /mcp or /api/mcp.",
"evidence": [
{
"url": "https://github.com/.well-known/mcp/server-card.json",
"status": 404,
"content_type": "application/json; charset=utf-8",
"body": "{\n \"error\": \"Not Found\"\n}",
"truncated": false
},
{
"url": "https://github.com/.well-known/mcp",
"status": 404,
"content_type": "text/html; charset=utf-8",
"body": "\n\n\n\n\n\n\n\n<!DOCTYPE html>\n<html\n lang=\"en\"\n \n data-color-mode=\"auto\" data-light-theme=\"light\" data-dark-theme=\"dark\"\n data-a11y-animated-images=\"system\" data-a11y-link-underlines=\"true\"\n \n >\n\n\n\n\n <head>\n <meta charset=\"utf-8\">\n <link rel=\"dns-prefetch\" href=\"https://github.githubassets.com\">\n <link rel=\"dns-prefetch\" href=\"https://avatars.githubusercontent.com\">\n <link rel=\"dns-prefetch\" href=\"https://github-cloud.s3.amazonaws.com\">\n <link rel=\"dns-prefetch\" href=\"https://user-images.githubusercontent.com/\">\n <link rel=\"preconnect\" href=\"https://github.githubassets.com\" crossorigin>\n <link rel=\"preconnect\" href=\"https://avatars.githubusercontent.com\">\n\n <link crossorigin=\"anonymous\" rel=\"preload\" as=\"script\" href=\"https://github.githubassets.com/assets/global-banner-disable-7217e941c22f8801.js\" />\n\n <link rel=\"preload\" href=\"https://github.githubassets.com/assets/MonaSansVF-wdth-wght-opsz-902d64c7ad02.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n\n\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light-4fded0090af0ad58.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark-06381ff23d863842.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark_high_contrast-9023e6605402defb.css\" /><link data-color-theme=\"light\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light-4fded0090af0ad58.css\" /><link data-color-theme=\"light_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css\" /><link data-color-theme=\"light_colorblind\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" ",
"truncated": true
},
{
"url": "https://github.com/mcp",
"status": 200,
"content_type": "text/html; charset=utf-8",
"body": "\n\n<!DOCTYPE html>\n<html\n lang=\"en\"\n \n data-color-mode=\"auto\" data-light-theme=\"light\" data-dark-theme=\"dark\"\n data-a11y-animated-images=\"system\" data-a11y-link-underlines=\"true\"\n \n >\n\n\n\n\n <head>\n <meta charset=\"utf-8\">\n <link rel=\"dns-prefetch\" href=\"https://github.githubassets.com\">\n <link rel=\"dns-prefetch\" href=\"https://avatars.githubusercontent.com\">\n <link rel=\"dns-prefetch\" href=\"https://github-cloud.s3.amazonaws.com\">\n <link rel=\"dns-prefetch\" href=\"https://user-images.githubusercontent.com/\">\n <link rel=\"preconnect\" href=\"https://github.githubassets.com\" crossorigin>\n <link rel=\"preconnect\" href=\"https://avatars.githubusercontent.com\">\n\n \n\n\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light-4fded0090af0ad58.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark-06381ff23d863842.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark_high_contrast-9023e6605402defb.css\" /><link data-color-theme=\"light\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light-4fded0090af0ad58.css\" /><link data-color-theme=\"light_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css\" /><link data-color-theme=\"light_colorblind\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_colorblind-3a437477a570cc40.css\" /><link data-color-theme=\"light_colorblind_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_colorblind_high_contrast-39b6c209db5491c9.css\" /><link ",
"truncated": true
},
{
"url": "https://github.com/api/mcp",
"status": 404,
"content_type": "text/html; charset=utf-8",
"body": "\n\n\n\n\n\n\n\n<!DOCTYPE html>\n<html\n lang=\"en\"\n \n data-color-mode=\"auto\" data-light-theme=\"light\" data-dark-theme=\"dark\"\n data-a11y-animated-images=\"system\" data-a11y-link-underlines=\"true\"\n \n >\n\n\n\n\n <head>\n <meta charset=\"utf-8\">\n <link rel=\"dns-prefetch\" href=\"https://github.githubassets.com\">\n <link rel=\"dns-prefetch\" href=\"https://avatars.githubusercontent.com\">\n <link rel=\"dns-prefetch\" href=\"https://github-cloud.s3.amazonaws.com\">\n <link rel=\"dns-prefetch\" href=\"https://user-images.githubusercontent.com/\">\n <link rel=\"preconnect\" href=\"https://github.githubassets.com\" crossorigin>\n <link rel=\"preconnect\" href=\"https://avatars.githubusercontent.com\">\n\n <link crossorigin=\"anonymous\" rel=\"preload\" as=\"script\" href=\"https://github.githubassets.com/assets/global-banner-disable-7217e941c22f8801.js\" />\n\n <link rel=\"preload\" href=\"https://github.githubassets.com/assets/MonaSansVF-wdth-wght-opsz-902d64c7ad02.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n\n\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light-4fded0090af0ad58.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark-06381ff23d863842.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark_high_contrast-9023e6605402defb.css\" /><link data-color-theme=\"light\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light-4fded0090af0ad58.css\" /><link data-color-theme=\"light_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_high_contrast-cf8e26bc17e62ebc.css\" /><link data-color-theme=\"light_colorblind\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" ",
"truncated": true
}
]
},
{
"id": "x402",
"group": "Discovery",
"label": "x402 payments",
"description": "Agentic micropayments via HTTP 402 (see x402.org).",
"status": "fail",
"detail": "Not found",
"remediation": "Publish /.well-known/x402.json with x402Version, payTo, and a non-empty services[] array.",
"evidence": [
{
"url": "https://github.com/.well-known/x402.json",
"status": 404,
"content_type": "application/json; charset=utf-8",
"body": "{\n \"error\": \"Not Found\"\n}",
"truncated": false
}
]
},
{
"id": "robots_ai",
"group": "Discovery",
"label": "robots.txt AI bots",
"description": "Explicit User-agent rules for AI crawlers.",
"status": "fail",
"detail": "robots.txt found but no AI-bot rules",
"remediation": "Add User-agent stanzas for GPTBot, ClaudeBot, Google-Extended, PerplexityBot to /robots.txt.",
"evidence": [
{
"url": "https://github.com/robots.txt",
"status": 200,
"content_type": "text/plain",
"body": "# If you would like to crawl GitHub contact us via https://support.github.com?tags=dotcom-robots\n# We also provide an extensive API: https://docs.github.com\nUser-agent: bingbot\nDisallow: /ekansa/Open-Context-Data\nDisallow: /ekansa/opencontext-*\nDisallow: /account-login\nDisallow: */tarball/\nDisallow: */zipball/\nDisallow: /Explodingstuff/\nDisallow: /copilot/\nDisallow: /copilot/c/\n\nUser-agent: adidxbot\nDisallow: /ekansa/Open-Context-Data\nDisallow: /ekansa/opencontext-*\nDisallow: /account-login\nDisallow: */tarball/\nDisallow: */zipball/\nDisallow: /Explodingstuff/\nDisallow: /copilot/\nDisallow: /copilot/c/\n\nUser-agent: BingPreview\nDisallow: /ekansa/Open-Context-Data\nDisallow: /ekansa/opencontext-*\nDisallow: /account-login\nDisallow: */tarball/\nDisallow: */zipball/\nDisallow: /Explodingstuff/\nDisallow: /copilot/\nDisallow: /copilot/c/\n\nUser-agent: baidu\ncrawl-delay: 1\n\n\nUser-agent: *\n\nDisallow: /*/*/pulse\nDisallow: /*/*/projects\nDisallow: /*/*/forks\nDisallow: /*/*/issues/new\nDisallow: /*/*/milestones/new\nDisallow: /*/*/issues/search\nDisallow: /*/*/commits/\nDisallow: /*/*/branches\nDisallow: /*/*/contributors\nDisallow: /*/*/tags\nDisallow: /*/*/stargazers\nDisallow: /*/*/watchers\nDisallow: /*/*/network\nDisallow: /*/*/graphs\nDisallow: /*/*/compare\n\nDisallow: /*/tree/\nDisallow: /gist/\nDisallow: /*/download\nDisallow: /*/revisions\nDisallow: /*/commits/*?author\nDisallow: /*/commits/*?path\nDisallow: /*/comments\nDisallow: /*/archive/\nDisallow: /*/blame/\nDisallow: /*/raw/\nDisallow: /*/cache/\nDisallow: /.git/\nDisallow: */.git/\nDisallow: /*.git$\nDisallow: /search/advanced\nDisallow: /search$\nDisallow: /*q=\nDisallow: /*.atom$\n\nDisallow: /ekansa/Open-Context-Data\nDisallow: /ekansa/opencontext-*\nDisallow: */tarball/\nDisallow: */zipball/\n\nDisallow: /*source=*\nDisallow: /*ref_cta=*\nDisallow: /*plan=*\nDisallow: /*return_to=*\nDisallow: /*ref_loc=*\nDisallow: /*setup_organization=*\nDisallow: /*source_repo=*\nDisallow: /*ref_page=*\nDisallow: /*source=*\nDisallow: /*referrer=*\nDisallow: /*report=*\nDisall",
"truncated": true
}
]
}
]
},
"scanned_at": "2026-06-24T00:24:23+00:00"
}