{
  "service": "agent-readiness",
  "version": "1.0",
  "target": "https://embertechtx.com",
  "audited_at": "2026-09-18T13:45:17.828Z",
  "auditor": "Piney (Pineywoods Web), automated checks, human read",
  "score": 97,
  "counts": {
    "pass": 16,
    "warn": 1,
    "fail": 0,
    "info": 6
  },
  "findings": [
    {
      "id": "home",
      "title": "Home page reachable over HTTPS",
      "status": "pass",
      "evidence": "HTTP 200, final URL https://embertechtx.com/, 203 ms",
      "repeat": "curl -sIL https://embertechtx.com/"
    },
    {
      "id": "ttfb",
      "title": "Home page response time",
      "status": "pass",
      "evidence": "203 ms for the full HTML on a cold fetch (agents time out early; under 1.5 s is comfortable)",
      "repeat": "curl -s -o /dev/null -w \"%{time_total}\" https://embertechtx.com/"
    },
    {
      "id": "robots",
      "title": "robots.txt present",
      "status": "pass",
      "evidence": "51 lines. Sitemap directive: yes.",
      "repeat": "curl -sIL -A \"PineywoodsWeb-AgentReadiness/1.0 (+https://pineywoodsweb.com/agents)\" https://embertechtx.com/robots.txt"
    },
    {
      "id": "robots-agents",
      "title": "AI agents allowed by robots.txt",
      "status": "pass",
      "evidence": "None of 8 common AI crawlers is explicitly blocked.",
      "repeat": "curl -s https://embertechtx.com/robots.txt | grep -iA3 user-agent"
    },
    {
      "id": "sitemap",
      "title": "XML sitemap",
      "status": "pass",
      "evidence": "https://embertechtx.com/sitemap.xml: 3 <loc> entries.",
      "repeat": "curl -sIL -A \"PineywoodsWeb-AgentReadiness/1.0 (+https://pineywoodsweb.com/agents)\" https://embertechtx.com/sitemap.xml"
    },
    {
      "id": "llms-txt",
      "title": "llms.txt present",
      "status": "info",
      "evidence": "None (404). Optional convention; a short one tells an agent what the business is and where the facts live.",
      "repeat": "curl -sIL -A \"PineywoodsWeb-AgentReadiness/1.0 (+https://pineywoodsweb.com/agents)\" https://embertechtx.com/llms.txt"
    },
    {
      "id": "jsonld",
      "title": "JSON-LD structured data on the home page",
      "status": "pass",
      "evidence": "1 block(s), types: LocalBusiness, WebSite. Business entity: LocalBusiness.",
      "repeat": "curl -s https://embertechtx.com/ | grep -o '<script type=\"application/ld+json\">[^<]*' | head"
    },
    {
      "id": "machine-facts",
      "title": "Business facts machine-readable (name, phone, address, hours, price range)",
      "status": "pass",
      "evidence": "Present: name, telephone, address, url, priceRange, geo. Missing: openingHours, sameAs.",
      "repeat": "curl -s https://embertechtx.com/ | grep -o '<script type=\"application/ld+json\">[^<]*'"
    },
    {
      "id": "tel-link",
      "title": "Phone number as a tel: link",
      "status": "pass",
      "evidence": "6 tel: link(s): 817-525-0778",
      "repeat": "curl -s https://embertechtx.com/ | grep -o 'href=\"tel:[^\"]*\"'"
    },
    {
      "id": "email-link",
      "title": "Contact email as a mailto: link",
      "status": "pass",
      "evidence": "sales@embertechtx.com",
      "repeat": "curl -s https://embertechtx.com/ | grep -o 'href=\"mailto:[^\"]*\"'"
    },
    {
      "id": "hours",
      "title": "Opening hours findable",
      "status": "info",
      "evidence": "No hours on the home page (fine for a trade that works by appointment; a problem for a shop or restaurant).",
      "repeat": "curl -s https://embertechtx.com/ | sed 's/<[^>]*>/ /g' | grep -iE 'mon|tue|wed|thu|fri|sat|sun'"
    },
    {
      "id": "action-path",
      "title": "A contact, booking, quote or order path is linked from the home page",
      "status": "pass",
      "evidence": "Links: #contact, mailto:sales@embertechtx.com?subject=Quote Request, mailto:sales@embertechtx.com?subject=Quote Request&amp;body=Hello EmberTech Team,%0D%0A%0D%0AI would like to request a quote for the following services:%0D%0A%0D%0A[Please describe your needs here]%0D%0A%0D%0AThank you!",
      "repeat": "curl -s https://embertechtx.com/ | grep -oiE 'href=\"[^\"]*(contact|book|quote|order|menu)[^\"]*\"'"
    },
    {
      "id": "contact-form",
      "title": "Contact page has a submittable form",
      "status": "warn",
      "evidence": "https://embertechtx.com/: 0 form(s), 0 field(s). Bot defence: none detected.",
      "repeat": "curl -s https://embertechtx.com/ | grep -c '<form'"
    },
    {
      "id": "title-desc",
      "title": "Title and meta description",
      "status": "pass",
      "evidence": "Title: \"EmberTech Maintenance | Your Trusted Crematory Service Provider\". Description: 224 chars.",
      "repeat": "curl -s https://embertechtx.com/ | grep -oiE '<title>[^<]*|name=\"description\"[^>]*'"
    },
    {
      "id": "h1",
      "title": "One H1 on the home page",
      "status": "info",
      "evidence": "2 <h1> element(s).",
      "repeat": "curl -s https://embertechtx.com/ | grep -c '<h1'"
    },
    {
      "id": "img-alt",
      "title": "Images carry alt text",
      "status": "pass",
      "evidence": "3 of 3 <img> tags have non-empty alt text.",
      "repeat": "curl -s https://embertechtx.com/ | grep -o '<img[^>]*>' | grep -vc 'alt=\"[^\"]'"
    },
    {
      "id": "opengraph",
      "title": "Open Graph tags",
      "status": "pass",
      "evidence": "og:title/description/image present (link previews and agent summaries pick these up).",
      "repeat": "curl -s https://embertechtx.com/ | grep -o 'property=\"og:[^\"]*\"'"
    },
    {
      "id": "canonical",
      "title": "Canonical URL",
      "status": "pass",
      "evidence": "https://embertechtx.com",
      "repeat": "curl -s https://embertechtx.com/ | grep -o 'rel=\"canonical\"[^>]*'"
    },
    {
      "id": "viewport",
      "title": "Mobile viewport meta",
      "status": "pass",
      "evidence": "Present.",
      "repeat": "curl -s https://embertechtx.com/ | grep -o 'name=\"viewport\"[^>]*'"
    },
    {
      "id": "no-js-content",
      "title": "Content readable without running JavaScript",
      "status": "pass",
      "evidence": "899 words of visible text in the raw HTML. Most agents read the HTML, not a rendered page.",
      "repeat": "curl -s https://embertechtx.com/ | sed 's/<[^>]*>/ /g' | wc -w"
    },
    {
      "id": "feeds",
      "title": "Feeds or JSON endpoints advertised",
      "status": "info",
      "evidence": "No RSS/Atom/JSON feed declared in <head>.",
      "repeat": "curl -s https://embertechtx.com/ | grep -o '<link[^>]*application/[^>]*>'"
    },
    {
      "id": "well-known",
      "title": "/.well-known/ responds",
      "status": "info",
      "evidence": "HTTP 404 (only matters if you publish security.txt or agent manifests there).",
      "repeat": "curl -sI https://embertechtx.com/.well-known/"
    },
    {
      "id": "hsts",
      "title": "HSTS header",
      "status": "info",
      "evidence": "No Strict-Transport-Security header.",
      "repeat": "curl -sI https://embertechtx.com/ | grep -i strict-transport"
    }
  ],
  "how_to_read": "Every finding carries the evidence and a `repeat` command you can run yourself. Score = (pass + 0.5*warn) / (pass + warn + fail). `info` rows are facts, not verdicts."
}
