{
  "input": "https://llmstxt.org/llms.txt",
  "target": "https://llmstxt.org/llms.txt",
  "ok": true,
  "fetch": {
    "requestedURL": "https://llmstxt.org/llms.txt",
    "finalURL": "https://llmstxt.org/llms.txt",
    "status": 200,
    "contentType": "text/plain; charset=utf-8",
    "bytes": 648,
    "hasFullTxt": false
  },
  "report": {
    "source": "https://llmstxt.org/llms.txt",
    "document": {
      "title": "llms.txt",
      "hasTitle": true,
      "titleLine": 1,
      "extraH1": 0,
      "summary": "A proposal that those interested in providing LLM-friendly content add a /llms.txt file to their site. This is a markdown file that provides brief background information and guidance, along with links to markdown files providing more detailed information.",
      "hasSummary": true,
      "sections": [
        {
          "name": "Docs",
          "optional": false,
          "links": [
            {
              "text": "llms.txt proposal",
              "url": "https://llmstxt.org/index.md",
              "desc": "The proposal for llms.txt",
              "line": 7
            },
            {
              "text": "Python library docs",
              "url": "https://llmstxt.org/intro.html.md",
              "desc": "Docs for `llms-txt` python lib",
              "line": 8
            },
            {
              "text": "ed demo",
              "url": "https://llmstxt.org/ed-commonmark.md",
              "desc": "Tongue-in-cheek example of how llms.txt could be used in the classic `ed` editor, used to show how editors could incorporate llms.txt in general.",
              "line": 9
            }
          ],
          "line": 5
        }
      ]
    },
    "findings": [
      {
        "id": "title-ok",
        "severity": "success",
        "category": "structure",
        "title": "H1 title present",
        "detail": "Title: \"llms.txt\""
      },
      {
        "id": "summary-ok",
        "severity": "success",
        "category": "structure",
        "title": "Blockquote summary present"
      },
      {
        "id": "sections-ok",
        "severity": "success",
        "category": "structure",
        "title": "1 section(s) with links"
      },
      {
        "id": "links-md",
        "severity": "success",
        "category": "best",
        "title": "3 Markdown (.md) link(s)",
        "detail": "Linking Markdown versions helps models parse content cleanly."
      },
      {
        "id": "links-ok",
        "severity": "success",
        "category": "links",
        "title": "All links reachable"
      }
    ],
    "scores": {
      "structure": 100,
      "links": 100,
      "bestPractices": 100,
      "overall": 100
    }
  },
  "links": [
    {
      "url": "https://llmstxt.org/index.md",
      "status": "ok",
      "code": 200,
      "finalURL": "https://llmstxt.org/index.md"
    },
    {
      "url": "https://llmstxt.org/intro.html.md",
      "status": "ok",
      "code": 200,
      "finalURL": "https://llmstxt.org/intro.html.md"
    },
    {
      "url": "https://llmstxt.org/ed-commonmark.md",
      "status": "ok",
      "code": 200,
      "finalURL": "https://llmstxt.org/ed-commonmark.md"
    }
  ],
  "linkStats": {
    "total": 3,
    "ok": 3,
    "redirect": 0,
    "broken": 0,
    "skipped": 0
  },
  "permalinkId": "qfsym73aiayq",
  "companions": [
    {
      "name": "robots.txt",
      "path": "/robots.txt",
      "present": true,
      "code": 200,
      "level": "standard",
      "detail": "1 Sitemap directive.",
      "recommend": "Allow AI search crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) for visibility; training opt-outs (GPTBot, Google-Extended) are a separate choice."
    },
    {
      "name": "sitemap.xml",
      "path": "/sitemap.xml",
      "present": true,
      "code": 200,
      "level": "standard",
      "detail": "Valid XML sitemap."
    },
    {
      "name": "RSS / Atom feed",
      "path": "/rss.xml",
      "present": false,
      "level": "standard",
      "recommend": "A feed (RSS/Atom) at a common path helps AI tools track fresh content. (May exist via \u003clink rel=alternate\u003e.)"
    },
    {
      "name": "ads.txt",
      "path": "/ads.txt",
      "present": false,
      "code": 404,
      "level": "standard",
      "detail": "Only needed if the site serves programmatic ads (IAB authorized sellers)."
    },
    {
      "name": "security.txt",
      "path": "/.well-known/security.txt",
      "present": false,
      "code": 404,
      "level": "standard",
      "recommend": "Add /.well-known/security.txt (RFC 9116) with a Contact and Expires field."
    },
    {
      "name": "ai.txt",
      "path": "/ai.txt",
      "present": false,
      "code": 404,
      "level": "informational",
      "detail": "Not a formal standard; an opt-in AI-training/usage directive honored only by some actors."
    },
    {
      "name": "A2A agent card",
      "path": "/.well-known/agent-card.json",
      "present": false,
      "level": "emerging",
      "detail": "Optional: only relevant if the site exposes an AI agent (Google A2A protocol)."
    },
    {
      "name": "llms.json",
      "path": "/llms.json",
      "present": false,
      "code": 404,
      "level": "emerging",
      "detail": "Optional structured (JSON) manifest some sites add for agents."
    },
    {
      "name": "Markdown content negotiation",
      "path": "homepage",
      "present": false,
      "level": "emerging",
      "recommend": "Optionally serve a Markdown rendering of pages when Accept: text/markdown is requested, so AI agents get clean content."
    },
    {
      "name": "Content Signals",
      "path": "/robots.txt",
      "present": false,
      "level": "emerging",
      "recommend": "Optionally add a Content-Signal directive to robots.txt to declare permitted AI uses (e.g. search=yes, ai-train=no)."
    },
    {
      "name": "MCP server card",
      "path": "/.well-known/mcp.json",
      "present": false,
      "code": 404,
      "level": "informational",
      "detail": "Optional \u0026 emerging. Looks for /.well-known/mcp.json; there is no ratified MCP discovery well-known yet, so absence isn't proof of nothing."
    },
    {
      "name": "API Catalog",
      "path": "/.well-known/api-catalog",
      "present": false,
      "code": 404,
      "level": "emerging",
      "recommend": "If you expose APIs, publish /.well-known/api-catalog (RFC 9727) so agents can discover them."
    },
    {
      "name": "OAuth discovery",
      "path": "/.well-known/oauth-protected-resource",
      "present": false,
      "level": "emerging",
      "recommend": "If agents need authenticated access, add OAuth discovery (/.well-known/oauth-protected-resource, RFC 9728)."
    },
    {
      "name": "Structured data (JSON-LD)",
      "path": "homepage",
      "present": false,
      "level": "standard",
      "recommend": "Add schema.org JSON-LD (Organization, WebSite) — this is how AI/knowledge graphs identify a site."
    },
    {
      "name": "Open Graph tags",
      "path": "homepage",
      "present": true,
      "level": "standard",
      "detail": "Open Graph tags present (controls link previews in AI/social)."
    },
    {
      "name": "Twitter Card",
      "path": "homepage",
      "present": true,
      "level": "standard",
      "detail": "Twitter Card metadata present."
    },
    {
      "name": "Canonical URL",
      "path": "homepage",
      "present": false,
      "level": "standard",
      "recommend": "Add a \u003clink rel=\"canonical\"\u003e to consolidate duplicate URLs."
    },
    {
      "name": "FAQPage schema",
      "path": "homepage",
      "present": false,
      "level": "standard",
      "recommend": "If you have Q\u0026A content, add FAQPage JSON-LD so AI answer engines can cite it directly."
    },
    {
      "name": "AI file discovery hints",
      "path": "homepage",
      "present": false,
      "level": "emerging",
      "recommend": "Add \u003clink rel=\"alternate\" href=\"/llms.txt\"\u003e (and llms-full.txt) in \u003chead\u003e so crawlers discover your AI files."
    },
    {
      "name": "WebMCP browser tools",
      "path": "homepage",
      "present": false,
      "level": "informational",
      "detail": "Optional \u0026 experimental. Detects only declarative \u003cform toolname\u003e markup; imperative navigator.modelContext (JS) tools aren't visible to a server-side check."
    }
  ]
}
