{
  "schemaVersion": "2.0",
  "scannerVersion": "0.4.0",
  "url": "https://needleandthread.com/",
  "score": 91,
  "level": "Level 3 — Strong for this profile",
  "siteProfile": {
    "type": "ecommerce",
    "source": "inferred",
    "platform": "Shopify"
  },
  "dimensions": {
    "discoverable": {
      "label": "Discoverable",
      "score": 86,
      "status": "measured",
      "passedWeight": 36,
      "applicableWeight": 42,
      "checks": [
        "robots",
        "sitemap",
        "contentSignals",
        "linkHeaders",
        "llmsTxt"
      ]
    },
    "readable": {
      "label": "Readable",
      "score": 100,
      "status": "measured",
      "passedWeight": 18,
      "applicableWeight": 18,
      "checks": [
        "markdownNegotiation"
      ]
    },
    "actionable": {
      "label": "Actionable",
      "score": 100,
      "status": "measured",
      "passedWeight": 10,
      "applicableWeight": 10,
      "checks": [
        "storefrontMcp"
      ]
    },
    "trust-access": {
      "label": "Trust & access",
      "score": null,
      "status": "not_measured",
      "passedWeight": 0,
      "applicableWeight": 0,
      "checks": []
    },
    "reliable": {
      "label": "Reliable",
      "score": null,
      "status": "not_measured",
      "passedWeight": 0,
      "applicableWeight": 0,
      "checks": []
    }
  },
  "checks": {
    "robots": {
      "status": "pass",
      "title": "Robots.txt",
      "summary": "Site publishes a valid-looking robots.txt file.",
      "evidence": "# As a condition of accessing this website, you agree to abide by the following\n# content signals:\n\n# (a)  If a Content-Signal = yes, you may collect content for the corresponding\n#      use.\n# (b)  If a Content-Signal = no, you may not collect content for the\n#      corresponding use.\n# (c)  If the website operator does not include a Content-Signal for a\n#      corresponding use, the website operator neither grants nor restricts\n#      permission via Content-Signal with respect to the corresponding use.\n\n# The content signals and their meanings are:\n\n# search:   building a search index and providing search results (e.g., returning\n#           hyperlinks and short excerpts from your website's contents). Search does not\n#           include providing AI-generated search summaries.\n# ai-input: inputting content into one or more AI models (e.g., retrieval\n#           augmented generation, grounding, or other real-time taking of content for\n#           generative AI search answers).\n# ai-train: training or fine-tuning AI models.\n# use:      how AI systems may consume the content (immediate, reference, or full).\n\n# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF\n# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT\n# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.\n\n# BEGIN Cloudflare Managed content\n\nUser-agent: *\nContent-Signal: search=yes,ai-train=no,use=reference\nAllow: /\n\nUser-agent: Amazonbot\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: CloudflareBrowserRenderingCrawler\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: meta-externalagent\nDisallow: /\n\n# END Cloudflare Managed Content\n\n# we use Shopify as our ecommerce platform\n\nUser-agent: Googlebot\nDisallow: \n\nUser-agent: Googlebot-image\nDisallow:\n\nUser-agent:*\nDisallow: /a/downloads/-/*\nDisallow: /admin\nDisallow: /cart\nDisallow: /orders\nDisallow: /checkouts/ \nDisallow: /checkout\nDisallow: /1499791435/checkouts\nDisallow: /1499791435/orders\nDisallow: /carts\nDisallow: /account\nDisallow: /collections/*sort_by*\nDisallow: /*/collections/*sort_by*\nDisallow: /collections/*+*\nDisallow: /collections/*%2B*\nDisallow: /collections/*%2b* \nDisallow: /*/collections/*+*\nDisallow: /*/collections/*%2B*\nDisallow: /*/collections/*%2b*\nDisallow: */collections/*filter*&*filter*\nDisallow: /blogs/*+*\nDisallow: /blogs/*%2B*\nDisallow: /blogs/*%2b*\nDisallow: /*/blogs/*+*\nDisallow: /*/blogs/*%2B* \nDisallow: /*/blogs/*%2b*\nDisallow: /*?*oseid=*\nDisallow: /*preview_theme_id*\nDisallow: /*preview_script_id*\nDisallow: /policies/ \nDisallow: /*/policies/ \nDisallow: /*/*?*ls=*&ls=*\nDisallow: /*/*?*ls%3D*%3Fls%3D* \nDisallow: /*/*?*ls%3d*%3fls%3d* \nDisallow: /search\nDisallow: /apple-app-site-association\nDisallow: /.well-known/shopify/monorail\nDisallow: /cdn/wpm/*.js\nDisallow: /recommendations/products\nDisallow: /*/recommendations/products\nSitemap: https://www.needleandthread.com/sitemap.xml\n\n# Google adsbot ignores robots.txt unless specifically named!\nUser-agent: adsbot-google\nDisallow: /checkouts/ \nDisallow: /checkout\nDisallow: /carts\nDisallow: /orders\nDisallow: /1499791435/checkouts\nDisallow: /1499791435/orders\nDisallow: /*?*oseid=*\nDisallow: /*preview_theme_id*\nDisallow: /*preview_script_id*\nDisallow: /cdn/wpm/*.js\n\nUser-agent: Nutch\nDisallow: /\nUser-agent: AhrefsBot\nCrawl-delay: 10\nDisallow: /a/downloads/-/*\nDisallow: /admin\nDisallow: /cart\nDisallow: /orders\nDisallow: /checkouts/ \nDisallow: /checkout\nDisallow: /1499791435/checkouts\nDisallow: /1499791435/orders\nDisallow: /carts\nDisallow: /account\nDisallow: /collections/*sort_by*\nDisallow: /*/collections/*sort_by*\nDisallow: /collections/*+*\nDisallow: /collections/*%2B*\nDisallow: /collections/*%2b*\nDisallow: /*/collections/*+*\nDisallow: /*/collections/*%2B* \nDisallow: /*/collections/*%2b*\nDisallow: */collections/*filter*&*filter*\nDisallow: /blogs/*+*\nDisallow: /blogs/*%2B* \nDisallow: /blogs/*%2b*\nDisallow: /*/blogs/*+*\nDisallow: /*/blogs/*%2B*\nDisallow: /*/blogs/*%2b*\nDisallow: /*?*oseid=*\nDisallow: /*preview_theme_id*\nDisallow: /*preview_script_id*\nDisallow: /policies/ \nDisallow: /*/policies/ \nDisallow: /*/*?*ls=*&ls=*\nDisallow: /*/*?*ls%3D*%3Fls%3D* \nDisallow: /*/*?*ls%3d*%3fls%3d*\nDisallow: /search\nDisallow: /apple-app-site-association\nDisallow: /.well-known/shopify/monorail\nDisallow: /cdn/wpm/*.js\nDisallow: /recommendations/products\nDisallow: /*/recommendations/products\n\nSitemap: https://www.needleandthread.com/sitemap.xml"
    },
    "sitemap": {
      "status": "pass",
      "title": "Sitemap",
      "summary": "Site publishes a reachable sitemap.",
      "evidence": "https://www.needleandthread.com/sitemap.xml"
    },
    "contentSignals": {
      "status": "pass",
      "title": "Content Signals",
      "summary": "Robots.txt declares Content-Signal policy for agent and crawler use.",
      "evidence": "Content-Signal: search=yes,ai-train=no,use=reference"
    },
    "linkHeaders": {
      "status": "fail",
      "title": "Link Headers",
      "summary": "Homepage has Link headers, but not for agent-readable resources.",
      "evidence": "<https://cdn.shopify.com>; rel=\"preconnect\", <https://cdn.shopify.com>; rel=\"preconnect\"; crossorigin, <//www.needleandthread.com/cdn/shop/t/787/assets/jquery.min.js?v=17056350018815022201777297211>; as=\"script\"; rel=\"preload\", <//www.needleandthread.com/cdn/shop/files/pandectes-rules.js?v=14015182286296222949>; as=\"script\"; rel=\"preload\", <//www.needleandthread.com/cdn/shop/t/787/assets/bundle.css?v=161553183561089230781784707809>; as=\"style\"; rel=\"preload\", <//www.needleandthread.com/cdn/shop/t/787/assets/slick.css?v=98340474046176884051777297208>; as=\"style\"; rel=\"preload\", <//www.needleandthread.com/cdn/shop/t/787/assets/custom.scss.css?v=26680969162433883711781518166>; as=\"style\"; rel=\"preload\", <https://www.needleandthread.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css>; as=\"style\"; rel=\"preload\"; crossorigin",
      "fix": "If useful, add subtle HTTP Link headers for /llms.txt or machine-readable service metadata."
    },
    "llmsTxt": {
      "status": "pass",
      "title": "LLMs.txt",
      "summary": "Site publishes /llms.txt for LLM-friendly discovery.",
      "evidence": "https://needleandthread.com/llms.txt"
    },
    "markdownNegotiation": {
      "status": "pass",
      "title": "Markdown Negotiation",
      "summary": "Homepage returns Markdown when requested by an agent.",
      "evidence": "text/markdown; charset=utf-8"
    },
    "apiCatalog": {
      "status": "not_applicable",
      "title": "API Catalog",
      "summary": "API Catalog is not required for an ecommerce site.",
      "evidence": "404"
    },
    "openApi": {
      "status": "not_applicable",
      "title": "OpenAPI description",
      "summary": "OpenAPI description is not required for an ecommerce site.",
      "evidence": "404"
    },
    "mcpServerCard": {
      "status": "not_applicable",
      "title": "MCP Server Card",
      "summary": "MCP Server Card is not required for an ecommerce site.",
      "evidence": "404"
    },
    "agentSkills": {
      "status": "not_applicable",
      "title": "Agent Skills index",
      "summary": "Agent Skills index is not required for an ecommerce site.",
      "evidence": "404"
    },
    "webMcp": {
      "status": "not_applicable",
      "title": "WebMCP",
      "summary": "WebMCP is not required for an ecommerce site."
    },
    "authMd": {
      "status": "not_applicable",
      "title": "Auth.md",
      "summary": "Auth.md is not required for an ecommerce site.",
      "evidence": "404"
    },
    "storefrontMcp": {
      "status": "pass",
      "title": "Storefront MCP",
      "summary": "Shopify Storefront MCP responds with live agent-callable tools at /api/mcp.",
      "evidence": "https://needleandthread.com/api/mcp — tools: search_catalog, get_cart, update_cart, search_shop_policies_and_faqs, get_product_details"
    }
  },
  "recommendations": [
    "If useful, add subtle HTTP Link headers for /llms.txt or machine-readable service metadata."
  ],
  "methodology": "/methodology"
}